@@ -383,6 +383,7 @@ public static <T extends Expression> T as(final Expression expression, final Cla
383383 if (exprClass .isAssignableFrom (expression .getClass ())) {
384384 return (T ) expression ;
385385 }
386+
386387 if (expression instanceof ParenthesizedExpression ) {
387388 return as (((ParenthesizedExpression ) expression ).getExpression (), exprClass );
388389 }
@@ -679,7 +680,9 @@ public static <T extends ASTNode> T getTypedAncestor(final ASTNode node, final C
679680 if (node == null || node .getParent () == null ) {
680681 return null ;
681682 }
683+
682684 ASTNode parent = node .getParent ();
685+
683686 if (ancestorClass .isAssignableFrom (parent .getClass ())) {
684687 return (T ) parent ;
685688 }
@@ -698,18 +701,19 @@ public static <T extends ASTNode> T getTypedAncestor(final ASTNode node, final C
698701 * @see #getTypedAncestorOrCrash(ASTNode, Class)
699702 * @see #getTypedAncestor(ASTNode, Class)
700703 */
701- public static ASTNode getFirstAncestorOrNull (final ASTNode node , final Class <?>... ancestorClasses ) {
704+ public static ASTNode getFirstAncestorOrNull (final ASTNode node , final Class <? extends ASTNode >... ancestorClasses ) {
702705 if (ancestorClasses .length == 1 ) {
703706 throw new IllegalArgumentException ("Please use ASTHelper.getAncestor(ASTNode, Class<?>) instead" ); //$NON-NLS-1$
704707 }
708+
705709 if (node == null || node .getParent () == null || ancestorClasses .length == 0 ) {
706710 return null ;
707711 }
712+
708713 ASTNode parent = node .getParent ();
709- for (Class <?> ancestorClass : ancestorClasses ) {
710- if (ancestorClass .isAssignableFrom (parent .getClass ())) {
711- return parent ;
712- }
714+
715+ if (instanceOf (parent , ancestorClasses )) {
716+ return parent ;
713717 }
714718
715719 return getFirstAncestorOrNull (parent , ancestorClasses );
@@ -747,7 +751,7 @@ public static boolean isParent(ASTNode node, final ASTNode parent) {
747751 * @return the enclosing type of the provided node, or {@code null}
748752 */
749753 public static ASTNode getEnclosingType (final ASTNode node ) {
750- Class <?>[] ancestorClasses = { AbstractTypeDeclaration .class , AnonymousClassDeclaration .class };
754+ Class <? extends ASTNode >[] ancestorClasses = new Class [] { AbstractTypeDeclaration .class , AnonymousClassDeclaration .class };
751755 ASTNode ancestor = getFirstAncestorOrNull (node , ancestorClasses );
752756 if (ancestor == null ) {
753757 throw new IllegalStateException (node ,
@@ -2331,22 +2335,22 @@ public static boolean isSameVariable(ASTNode node1, ASTNode node2) {
23312335 * @return the last parent node of the provided classes, or the current node
23322336 * otherwise
23332337 */
2334- public static ASTNode getMatchingParent (final ASTNode node , final Class <?>... includedClasses ) {
2338+ public static ASTNode getHighestCompatibleNode (final ASTNode node , final Class <? extends ASTNode >... includedClasses ) {
23352339 ASTNode parent = node .getParent ();
23362340
23372341 if (instanceOf (parent , includedClasses )) {
2338- return getMatchingParent (parent , includedClasses );
2342+ return getHighestCompatibleNode (parent , includedClasses );
23392343 }
23402344
23412345 return node ;
23422346 }
23432347
2344- private static boolean instanceOf (final ASTNode node , final Class <?>... clazzes ) {
2348+ private static boolean instanceOf (final ASTNode node , final Class <? extends ASTNode >... clazzes ) {
23452349 if (node == null ) {
23462350 return false ;
23472351 }
23482352
2349- for (Class <?> clazz : clazzes ) {
2353+ for (Class <? extends ASTNode > clazz : clazzes ) {
23502354 if (clazz .isAssignableFrom (node .getClass ())) {
23512355 return true ;
23522356 }
0 commit comments