Abstract class for sites with a partial and immediate semantics: evaluate as for a total
immediate site (see EvalSite), but if the evaluation returns null, the site remains silent.
Visit a pattern recursively, creating two products:
An expression that will examine a value to determine
whether it matches a pattern, building an output tuple
of all value fragments which will be bound to variables.