@uml
Recursively walk {@code tree} against {@code patternTree}, filling
{@code match.}{@link ParseTreeMatch#labels labels}.
@return the first node encountered in {@code tree} which does not match
a corresponding node in {@code patternTree}, or {@code null} if the match
was successful. The specific node returned depends on the matching
algorithm used by the implementation, and may be overridden.
@uml Recursively walk {@code tree} against {@code patternTree}, filling {@code match.}{@link ParseTreeMatch#labels labels}.
@return the first node encountered in {@code tree} which does not match a corresponding node in {@code patternTree}, or {@code null} if the match was successful. The specific node returned depends on the matching algorithm used by the implementation, and may be overridden.