Class ASTMatcher

java.lang.Object
org.eclipse.jdt.core.dom.ASTMatcher

public class ASTMatcher extends Object
Concrete superclass and default implementation of an AST subtree matcher.

For example, to compute whether two ASTs subtrees are structurally isomorphic, use n1.subtreeMatch(new ASTMatcher(), n2) where n1 and n2 are the AST root nodes of the subtrees.

For each different concrete AST node type T there is a public boolean match(T node, Object other) method that matches the given node against another object (typically another AST node, although this is not essential). The default implementations provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. For nodes with list-valued properties, the child nodes within the list are compared in order. For nodes with multiple properties, the child nodes are compared in the order that most closely corresponds to the lexical reading order of the source program. For instance, for a type declaration node, the child ordering is: name, superclass, superinterfaces, and body declarations.

Subclasses may override (extend or reimplement) some or all of the match methods in order to define more specialized subtree matchers.

Since:
2.0
See Also:
  • Constructor Details

    • ASTMatcher

      public ASTMatcher()
      Creates a new AST matcher instance.

      For backwards compatibility, the matcher ignores tag elements below doc comments by default. Use ASTMatcher(true) for a matcher that compares doc tags by default.

    • ASTMatcher

      public ASTMatcher(boolean matchDocTags)
      Creates a new AST matcher instance.
      Parameters:
      matchDocTags - true if doc comment tags are to be compared by default, and false otherwise
      Since:
      3.0
      See Also:
  • Method Details

    • safeSubtreeListMatch

      public final boolean safeSubtreeListMatch(List list1, List list2)
      Returns whether the given lists of AST nodes match pair wise according to ASTNode.subtreeMatch.

      Note that this is a convenience method, useful for writing recursive subtree matchers.

      Parameters:
      list1 - the first list of AST nodes (element type: ASTNode)
      list2 - the second list of AST nodes (element type: ASTNode)
      Returns:
      true if the lists have the same number of elements and match pair-wise according to ASTNode.subtreeMatch
      See Also:
    • safeSubtreeMatch

      public final boolean safeSubtreeMatch(Object node1, Object node2)
      Returns whether the given nodes match according to AST.subtreeMatch. Returns false if one or the other of the nodes are null. Returns true if both nodes are null.

      Note that this is a convenience method, useful for writing recursive subtree matchers.

      Parameters:
      node1 - the first AST node, or null; must be an instance of ASTNode
      node2 - the second AST node, or null; must be an instance of ASTNode
      Returns:
      true if the nodes match according to AST.subtreeMatch or both are null, and false otherwise
      See Also:
    • safeEquals

      public static boolean safeEquals(Object o1, Object o2)
      Returns whether the given objects are equal according to equals. Returns false if either node is null.
      Parameters:
      o1 - the first object, or null
      o2 - the second object, or null
      Returns:
      true if the nodes are equal according to equals or both null, and false otherwise
    • match

      public boolean match(AnnotationTypeDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(AnnotationTypeMemberDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(AnonymousClassDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ArrayAccess node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ArrayCreation node, Object other)
      Returns whether the given node and the other object object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ArrayInitializer node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ArrayType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(AssertStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(Assignment node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(Block node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(BlockComment node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type. Subclasses may override this method as needed.

      Note: LineComment and BlockComment nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(BooleanLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(BreakStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(CaseDefaultExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.28
    • match

      public boolean match(CastExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(CatchClause node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(CharacterLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ClassInstanceCreation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(CompilationUnit node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ConditionalExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ConstructorInvocation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ContinueStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(CreationReference node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(Dimension node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(DoStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(EmptyStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(EnhancedForStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(EnumConstantDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(EnumDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(ExportsDirective node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(ExpressionMethodReference node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(ExpressionStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(FieldAccess node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(FieldDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ForStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(GuardedPattern node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.28
    • match

      public boolean match(IfStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ImportDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(InfixExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(Initializer node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(InstanceofExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(IntersectionType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(Javadoc node, Object other)
      Returns whether the given node and the other object match.

      Unlike other node types, the behavior of the default implementation is controlled by a constructor-supplied parameter ASTMatcher(boolean) which is false if not specified. When this parameter is true, the implementation tests whether the other object is also a Javadoc with structurally isomorphic child subtrees; the comment string (Javadoc.getComment()) is ignored. Conversely, when the parameter is false, the implementation tests whether the other object is also a Javadoc with exactly the same comment string; the tag elements (Javadoc.tags are ignored. Subclasses may reimplement.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      See Also:
    • match

      public boolean match(JavaDocRegion node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.30
      See Also:
    • match

      public boolean match(JavaDocTextElement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.31
    • match

      public boolean match(LabeledStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(LambdaExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(LineComment node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type. Subclasses may override this method as needed.

      Note: LineComment and BlockComment nodes are not considered part of main structure of the AST. This method will only be called if a client goes out of their way to visit this kind of node explicitly.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(MarkerAnnotation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(MemberRef node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(MemberValuePair node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(MethodRef node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(MethodRefParameter node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(MethodDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Note that extra array dimensions are compared since they are an important part of the method declaration.

      Note that the method return types are compared even for constructor declarations.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(MethodInvocation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(Modifier node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(ModuleDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(ModuleModifier node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(NameQualifiedType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(NormalAnnotation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(NullLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(NullPattern node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.28
    • match

      public boolean match(NumberLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(OpensDirective node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(PackageDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ParameterizedType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(ParenthesizedExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(PatternInstanceofExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.26
    • match

      public boolean match(PostfixExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(PrefixExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(PrimitiveType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ProvidesDirective node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(QualifiedName node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ModuleQualifiedName node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Restriction:
    • match

      public boolean match(QualifiedType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(RecordDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.22
    • match

      public boolean match(RecordPattern node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.32
    • match

      public boolean match(EitherOrMultiPattern node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.38
    • match

      public boolean match(RequiresDirective node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(ReturnStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SimpleName node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SimpleType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SingleMemberAnnotation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(SingleVariableDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Note that extra array dimensions and the variable arity flag are compared since they are both important parts of the declaration.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(StringLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SuperConstructorInvocation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SuperFieldAccess node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SuperMethodInvocation node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SuperMethodReference node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(SwitchCase node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SwitchExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.18
    • match

      public boolean match(SwitchStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(SynchronizedStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TagElement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(TagProperty node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.30
    • match

      public boolean match(TextBlock node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.20
      Restriction:
      This method is not intended to be referenced by clients as it is a part of Java preview feature.
      Restriction:
      This method is not intended to be re-implemented or extended by clients as it is a part of Java preview feature.
    • match

      public boolean match(TextElement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.0
    • match

      public boolean match(ThisExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(ThrowStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TryStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TypeDeclaration node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TypeDeclarationStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TypeLiteral node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(TypeMethodReference node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.10
    • match

      public boolean match(TypeParameter node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(TypePattern node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.28
    • match

      public boolean match(UnionType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.7.1
    • match

      public boolean match(UsesDirective node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.14
    • match

      public boolean match(VariableDeclarationExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(VariableDeclarationFragment node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Note that extra array dimensions are compared since they are an important part of the type of the variable.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(VariableDeclarationStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(WhileStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
    • match

      public boolean match(WildcardType node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.1
    • match

      public boolean match(YieldStatement node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.20
      Restriction:
      This method is not intended to be referenced by clients as it is a part of Java preview feature.
      Restriction:
      This method is not intended to be re-implemented or extended by clients as it is a part of Java preview feature.
    • match

      public boolean match(StringTemplateExpression node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.37
      Restriction:
      This method is not intended to be referenced by clients as it is a part of Java preview feature.
    • match

      public boolean match(StringFragment node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.37
    • match

      public boolean match(StringTemplateComponent node, Object other)
      Returns whether the given node and the other object match.

      The default implementation provided by this class tests whether the other object is a node of the same type with structurally isomorphic child subtrees. Subclasses may override this method as needed.

      Parameters:
      node - the node
      other - the other object, or null
      Returns:
      true if the subtree matches, or false if they do not match or the other object has a different node type or is null
      Since:
      3.37
    • match

      public boolean match(ImplicitTypeDeclaration node, Object other)
      Returns whether the given node and the other object match.
      Parameters:
      node - the node to check
      other - the other object
      Since:
      3.38