minor edits
diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 25196c9..beeaade 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -432,7 +432,7 @@
         controller.getCallSiteWriter().makeSiteEntry();
 
         MethodVisitor mv = controller.getMethodVisitor();
-        final ClassNode superClass = controller.getClassNode().getSuperClass();
+        ClassNode superClass = controller.getClassNode().getSuperClass();
         if (isConstructor && (code == null || !((ConstructorNode) node).firstStatementIsSpecialConstructorCall())) {
             boolean hasCallToSuper = false;
             if (code != null && controller.getClassNode() instanceof InnerClassNode) {
@@ -441,7 +441,7 @@
                 if (code instanceof BlockStatement) {
                     for (Statement statement : ((BlockStatement) code).getStatements()) {
                         if (statement instanceof ExpressionStatement) {
-                            final Expression expression = ((ExpressionStatement) statement).getExpression();
+                            Expression expression = ((ExpressionStatement) statement).getExpression();
                             if (expression instanceof ConstructorCallExpression) {
                                 ConstructorCallExpression call = (ConstructorCallExpression) expression;
                                 if (call.isSuperCall()) {
diff --git a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ASTMatcher.groovy b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ASTMatcher.groovy
index ac312ab..857c712 100644
--- a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ASTMatcher.groovy
+++ b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ASTMatcher.groovy
@@ -18,8 +18,9 @@
  */
 package org.codehaus.groovy.macro.matcher
 
+import groovy.transform.AutoFinal
+import groovy.transform.CompileDynamic
 import groovy.transform.CompileStatic
-import groovy.transform.TypeCheckingMode
 import org.codehaus.groovy.ast.ASTNode
 import org.codehaus.groovy.ast.AnnotatedNode
 import org.codehaus.groovy.ast.AnnotationNode
@@ -32,7 +33,6 @@
 import org.codehaus.groovy.ast.PackageNode
 import org.codehaus.groovy.ast.Parameter
 import org.codehaus.groovy.ast.PropertyNode
-import org.codehaus.groovy.ast.expr.ArgumentListExpression
 import org.codehaus.groovy.ast.expr.ArrayExpression
 import org.codehaus.groovy.ast.expr.AttributeExpression
 import org.codehaus.groovy.ast.expr.BinaryExpression
@@ -46,7 +46,6 @@
 import org.codehaus.groovy.ast.expr.ConstructorCallExpression
 import org.codehaus.groovy.ast.expr.DeclarationExpression
 import org.codehaus.groovy.ast.expr.Expression
-import org.codehaus.groovy.ast.expr.FieldExpression
 import org.codehaus.groovy.ast.expr.GStringExpression
 import org.codehaus.groovy.ast.expr.ListExpression
 import org.codehaus.groovy.ast.expr.MapEntryExpression
@@ -59,8 +58,6 @@
 import org.codehaus.groovy.ast.expr.PropertyExpression
 import org.codehaus.groovy.ast.expr.RangeExpression
 import org.codehaus.groovy.ast.expr.SpreadExpression
-import org.codehaus.groovy.ast.expr.SpreadMapExpression
-import org.codehaus.groovy.ast.expr.StaticMethodCallExpression
 import org.codehaus.groovy.ast.expr.TernaryExpression
 import org.codehaus.groovy.ast.expr.TupleExpression
 import org.codehaus.groovy.ast.expr.UnaryMinusExpression
@@ -72,23 +69,23 @@
 import org.codehaus.groovy.ast.stmt.IfStatement
 import org.codehaus.groovy.ast.stmt.Statement
 import org.codehaus.groovy.ast.stmt.WhileStatement
-import org.codehaus.groovy.classgen.BytecodeExpression
 import org.codehaus.groovy.control.SourceUnit
 import org.codehaus.groovy.macro.matcher.internal.MatchingConstraintsBuilder
 
-@CompileStatic
+@AutoFinal @CompileStatic
 class ASTMatcher extends ContextualClassCodeVisitor {
 
-    public static final String WILDCARD = "_";
+    public static final String WILDCARD = "_"
 
     private Object current = null
     private boolean match = true
 
-    private ASTMatcher() {}
+    private ASTMatcher() {
+    }
 
     @Override
     protected SourceUnit getSourceUnit() {
-        null
+        return null
     }
 
     /**
@@ -98,7 +95,7 @@
      * @param pattern the pattern AST we want to match to
      * @return true if this AST matches the pattern
      */
-    public static boolean matches(ASTNode node, ASTNode pattern) {
+    static boolean matches(ASTNode node, ASTNode pattern) {
         ASTMatcher matcher = new ASTMatcher()
         matcher.current = node
         matcher.match = true
@@ -107,21 +104,21 @@
         } else {
             pattern.visit(matcher)
         }
-
-        matcher.match
+        return matcher.match
     }
 
     private boolean failIfNot(boolean value) {
-        match = match && value
+        match = (match && value)
+        return match
     }
 
     private static boolean matchByName(String patternText, String nodeText) {
-        return nodeText.equals(patternText) || WILDCARD.equals(patternText);
+        return nodeText.equals(patternText) || WILDCARD.equals(patternText)
     }
 
     private static boolean isWildcardExpression(Object exp) {
         return (exp instanceof VariableExpression && WILDCARD.equals(exp.getName())
-            || (exp instanceof ConstantExpression && WILDCARD.equals(exp.getValue())));
+            || (exp instanceof ConstantExpression && WILDCARD.equals(exp.getValue())))
     }
 
     /**
@@ -132,10 +129,9 @@
      * @param pattern a pattern to be found somewhere in the AST
      * @return a list of {@link TreeContext}, always not null.
      */
-    public static List<TreeContext> find(ASTNode node, ASTNode pattern) {
-        ASTFinder finder = new ASTFinder(pattern);
-        node.visit(finder);
-
+    static List<TreeContext> find(ASTNode node, ASTNode pattern) {
+        def finder = new ASTFinder(pattern)
+        node.visit(finder)
         finder.matches
     }
 
@@ -146,7 +142,7 @@
         }
     }
 
-    public <T> T ifConstraint(T defaultValue, @DelegatesTo(MatchingConstraints) Closure<T> code) {
+    def <T> T ifConstraint(T defaultValue, @DelegatesTo(value=MatchingConstraints, strategy=Closure.DELEGATE_FIRST) Closure<T> code) {
         def constraints = (List<MatchingConstraints>) treeContext.getUserdata(MatchingConstraints, true)
         if (constraints) {
             def clone = (Closure<T>) code.clone()
@@ -160,23 +156,23 @@
 
     private String findPlaceholder(Object exp) {
         ifConstraint(null) {
-            if ((exp instanceof VariableExpression && placeholders.contains(exp.name))) {
+            if (exp instanceof VariableExpression && placeholders.contains(exp.name)) {
                 return exp.name
-            } else if ((exp instanceof ConstantExpression && placeholders.contains(exp.value))) {
+            } else if (exp instanceof ConstantExpression && placeholders.contains(exp.value)) {
                 return exp.value
             } else {
-                null
+                return null
             }
         }
     }
 
     private void doWithNode(Object patternNode, Object foundNode, Closure cl) {
-        Class expectedClass = patternNode?patternNode.class:Object
+        Class expectedClass = patternNode ? patternNode.class : Object
         if (expectedClass == null) {
             expectedClass = Object
         }
 
-        boolean doPush = treeContext.node!=foundNode && foundNode instanceof ASTNode
+        boolean doPush = (treeContext.node != foundNode && foundNode instanceof ASTNode)
         if (doPush) {
             pushContext((ASTNode)foundNode)
             if (patternNode instanceof ASTNode) {
@@ -188,12 +184,12 @@
             String placeholder = findPlaceholder(patternNode)
             if (placeholder) {
                 def alreadySeenAST = treeContext.getUserdata("placeholder_$placeholder", true)
-                if (alreadySeenAST==null) {
+                if (alreadySeenAST == null) {
                     treeContext.parent.putUserdata("placeholder_$placeholder", foundNode)
                 } else {
                     // during the tree inspection, placeholder already found
                     // so we need to check that they are identical
-                    failIfNot(matches((ASTNode)alreadySeenAST[0], (ASTNode)foundNode))
+                    failIfNot(matches((ASTNode) alreadySeenAST[0], (ASTNode) foundNode))
                 }
             } else if (match && (foundNode == null || expectedClass.isAssignableFrom(foundNode.class))) {
                 Object old = current
@@ -210,7 +206,7 @@
     }
 
     @Override
-    public void visitClass(final ClassNode node) {
+    void visitClass(ClassNode node) {
         doWithNode(node, current) {
             visitAnnotations(node)
             doWithNode(node.package, ((ClassNode) current).package) {
@@ -227,7 +223,7 @@
             def curIntfs = cur.interfaces
             failIfNot(intfs.length == curIntfs.length)
             if (intfs.length == curIntfs.length) {
-                for (int i = 0; i < intfs.length && match; i++) {
+                for (int i = 0; i < intfs.length && match; i += 1) {
                     failIfNot(intfs[i] == curIntfs[i])
                 }
             }
@@ -281,7 +277,7 @@
     }
 
     @Override
-    protected void visitObjectInitializerStatements(final ClassNode node) {
+    protected void visitObjectInitializerStatements(ClassNode node) {
         doWithNode(node, current) {
             def initializers = ((ClassNode) current).objectInitializerStatements
             if (initializers.size() == node.objectInitializerStatements.size()) {
@@ -298,7 +294,7 @@
     }
 
     @Override
-    public void visitPackage(final PackageNode node) {
+    void visitPackage(PackageNode node) {
         if (node) {
             doWithNode(node, current) {
                 visitAnnotations(node)
@@ -308,7 +304,7 @@
     }
 
     @Override
-    public void visitImports(final ModuleNode node) {
+    void visitImports(ModuleNode node) {
         if (node) {
             doWithNode(node, current) {
                 ModuleNode module = (ModuleNode) current
@@ -367,7 +363,7 @@
     }
 
     @Override
-    public void visitAnnotations(final AnnotatedNode node) {
+    void visitAnnotations(AnnotatedNode node) {
         doWithNode(node, current) {
             List<AnnotationNode> refAnnotations = node.annotations
             AnnotatedNode cur = (AnnotatedNode) current
@@ -388,7 +384,7 @@
                     }
                     continue
                 }
-                failIfNot(an.classNode==curNext.classNode)
+                failIfNot(an.classNode == curNext.classNode)
                 def refEntrySet = an.members.entrySet()
                 def curEntrySet = curNext.members.entrySet()
                 if (refEntrySet.size() == curEntrySet.size()) {
@@ -411,7 +407,7 @@
     }
 
     @Override
-    protected void visitClassCodeContainer(final Statement code) {
+    protected void visitClassCodeContainer(Statement code) {
         doWithNode(code, current) {
             if (code) {
                 code.visit(this)
@@ -419,16 +415,15 @@
         }
     }
 
-    @Override
-    @CompileStatic(TypeCheckingMode.SKIP)
-    public void visitDeclarationExpression(final DeclarationExpression expression) {
+    @Override @CompileDynamic
+    void visitDeclarationExpression(DeclarationExpression expression) {
         doWithNode(expression, current) {
             super.visitDeclarationExpression(expression)
         }
     }
 
     @Override
-    protected void visitConstructorOrMethod(final MethodNode node, final boolean isConstructor) {
+    protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor) {
         doWithNode(node, current) {
             visitAnnotations(node)
             def cur = (MethodNode) current
@@ -450,7 +445,7 @@
     }
 
     @Override
-    public void visitField(final FieldNode node) {
+    void visitField(FieldNode node) {
         doWithNode(node, current) {
             visitAnnotations(node)
             def fieldNode = (FieldNode) current
@@ -459,7 +454,6 @@
             failIfNot(fieldNode.modifiers == node.modifiers)
 
             Expression init = node.initialExpression
-
             Expression curInit = fieldNode.initialExpression
             if (init) {
                 if (curInit) {
@@ -476,7 +470,7 @@
     }
 
     @Override
-    public void visitProperty(final PropertyNode node) {
+    void visitProperty(PropertyNode node) {
         doWithNode(node, current) {
             PropertyNode pNode = (PropertyNode) current
             visitAnnotations(node)
@@ -510,7 +504,7 @@
     }
 
     @Override
-    void visitExpressionStatement(final ExpressionStatement statement) {
+    void visitExpressionStatement(ExpressionStatement statement) {
         doWithNode(statement.expression, ((ExpressionStatement) current).expression) {
             visitStatement(statement)
             statement.expression.visit(this)
@@ -518,7 +512,7 @@
     }
 
     @Override
-    public void visitBlockStatement(BlockStatement block) {
+    void visitBlockStatement(BlockStatement block) {
         doWithNode(block, current) {
             def statements = ((BlockStatement) current).statements
             if (statements.size() == block.statements.size()) {
@@ -535,7 +529,7 @@
     }
 
     @Override
-    public void visitMethodCallExpression(final MethodCallExpression call) {
+    void visitMethodCallExpression(MethodCallExpression call) {
         doWithNode(call, current) {
             def mce = (MethodCallExpression) current
             doWithNode(call.objectExpression, mce.objectExpression) {
@@ -547,20 +541,15 @@
             doWithNode(call.arguments, mce.arguments) {
                 call.arguments.visit(this)
             }
-            failIfNot(matchByName(call.methodAsString, mce.methodAsString) &&
-                    (call.safe == mce.safe) &&
-                    (call.spreadSafe == mce.spreadSafe) &&
-                    (call.implicitThis == mce.implicitThis))
+            failIfNot(matchByName(call.methodAsString, mce.methodAsString)
+                    && call.safe == mce.safe
+                    && call.spreadSafe == mce.spreadSafe
+                    && call.implicitThis == mce.implicitThis)
         }
     }
 
     @Override
-    public void visitStaticMethodCallExpression(final StaticMethodCallExpression call) {
-        super.visitStaticMethodCallExpression(call);
-    }
-
-    @Override
-    public void visitConstructorCallExpression(final ConstructorCallExpression call) {
+    void visitConstructorCallExpression(ConstructorCallExpression call) {
         doWithNode(call, current) {
             def cur = (ConstructorCallExpression) current
             doWithNode(call.arguments, cur.arguments) {
@@ -571,7 +560,7 @@
     }
 
     @Override
-    public void visitBinaryExpression(final BinaryExpression expression) {
+    void visitBinaryExpression(BinaryExpression expression) {
         doWithNode(expression, current) {
             def bin = (BinaryExpression) current
             def leftExpression = expression.getLeftExpression()
@@ -602,7 +591,7 @@
     }
 
     @Override
-    public void visitTernaryExpression(final TernaryExpression expression) {
+    void visitTernaryExpression(TernaryExpression expression) {
         doWithNode(expression, current) {
             TernaryExpression te = (TernaryExpression) current
             doWithNode(expression.booleanExpression, te.booleanExpression) {
@@ -620,7 +609,7 @@
     }
 
     @Override
-    public void visitPostfixExpression(final PostfixExpression expression) {
+    void visitPostfixExpression(PostfixExpression expression) {
         doWithNode(expression, current) {
             def origExpr = expression.expression
             def curExpr = (PostfixExpression) current
@@ -632,7 +621,7 @@
     }
 
     @Override
-    public void visitPrefixExpression(final PrefixExpression expression) {
+    void visitPrefixExpression(PrefixExpression expression) {
         doWithNode(expression, current) {
             def origExpr = expression.expression
             def curExpr = (PrefixExpression) current
@@ -644,7 +633,7 @@
     }
 
     @Override
-    public void visitBooleanExpression(final BooleanExpression expression) {
+    void visitBooleanExpression(BooleanExpression expression) {
         doWithNode(expression, current) {
             doWithNode(expression.expression, ((BooleanExpression) current).expression) {
                 expression.expression.visit(this)
@@ -653,7 +642,7 @@
     }
 
     @Override
-    public void visitNotExpression(final NotExpression expression) {
+    void visitNotExpression(NotExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             def cur = ((NotExpression) current).expression
@@ -664,7 +653,7 @@
     }
 
     @Override
-    public void visitClosureExpression(final ClosureExpression expression) {
+    void visitClosureExpression(ClosureExpression expression) {
         doWithNode(expression, current) {
             def code = expression.code
             def cl = (ClosureExpression) current
@@ -682,13 +671,13 @@
         }
         if (nodeParams) {
             if (curParams.length == nodeParams.length) {
-                for (int i = 0; i < nodeParams.length && match; i++) {
+                for (int i = 0; i < nodeParams.length && match; i += 1) {
                     def n = nodeParams[i]
                     def c = curParams[i]
                     doWithNode(n, c) {
-                        failIfNot(matchByName(n.name, c.name) &&
-                                (n.originType == c.originType) &&
-                                (n.type == c.originType))
+                        failIfNot(matchByName(n.name, c.name)
+                            && n.originType == c.originType
+                            && n.type == c.originType)
                     }
                 }
             } else {
@@ -698,7 +687,7 @@
     }
 
     @Override
-    public void visitTupleExpression(final TupleExpression expression) {
+    void visitTupleExpression(TupleExpression expression) {
         doWithNode(expression, current) {
             doWithNode(expression.expressions, ((TupleExpression) current).expressions) {
                 visitListOfExpressions(expression.expressions)
@@ -707,7 +696,7 @@
     }
 
     @Override
-    public void visitListExpression(final ListExpression expression) {
+    void visitListExpression(ListExpression expression) {
         doWithNode(expression, current) {
             def exprs = expression.expressions
             doWithNode(exprs, ((ListExpression) current).expressions) {
@@ -717,7 +706,7 @@
     }
 
     @Override
-    public void visitArrayExpression(final ArrayExpression expression) {
+    void visitArrayExpression(ArrayExpression expression) {
         doWithNode(expression, current) {
             def expressions = expression.expressions
             def size = expression.sizeExpression
@@ -735,7 +724,7 @@
     }
 
     @Override
-    public void visitMapExpression(final MapExpression expression) {
+    void visitMapExpression(MapExpression expression) {
         doWithNode(expression, current) {
             def entries = expression.mapEntryExpressions
             def curEntries = ((MapExpression) current).mapEntryExpressions
@@ -746,7 +735,7 @@
     }
 
     @Override
-    public void visitMapEntryExpression(final MapEntryExpression expression) {
+    void visitMapEntryExpression(MapEntryExpression expression) {
         doWithNode(expression, current) {
             def key = expression.keyExpression
             def value = expression.valueExpression
@@ -763,7 +752,7 @@
     }
 
     @Override
-    public void visitRangeExpression(final RangeExpression expression) {
+    void visitRangeExpression(RangeExpression expression) {
         doWithNode(expression, current) {
             def from = expression.from
             def to = expression.to
@@ -780,7 +769,7 @@
     }
 
     @Override
-    public void visitSpreadExpression(final SpreadExpression expression) {
+    void visitSpreadExpression(SpreadExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             doWithNode(expr, ((SpreadExpression) current).expression) {
@@ -790,12 +779,7 @@
     }
 
     @Override
-    public void visitSpreadMapExpression(final SpreadMapExpression expression) {
-        super.visitSpreadMapExpression(expression);
-    }
-
-    @Override
-    public void visitMethodPointerExpression(final MethodPointerExpression expression) {
+    void visitMethodPointerExpression(MethodPointerExpression expression) {
         doWithNode(expression, current) {
             def cur = (MethodPointerExpression) current
             def expr = expression.expression
@@ -812,7 +796,7 @@
     }
 
     @Override
-    public void visitUnaryMinusExpression(final UnaryMinusExpression expression) {
+    void visitUnaryMinusExpression(UnaryMinusExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             doWithNode(expr, ((UnaryMinusExpression) current).expression) {
@@ -822,7 +806,7 @@
     }
 
     @Override
-    public void visitUnaryPlusExpression(final UnaryPlusExpression expression) {
+    void visitUnaryPlusExpression(UnaryPlusExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             doWithNode(expr, ((UnaryPlusExpression) current).expression) {
@@ -832,7 +816,7 @@
     }
 
     @Override
-    public void visitBitwiseNegationExpression(final BitwiseNegationExpression expression) {
+    void visitBitwiseNegationExpression(BitwiseNegationExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             doWithNode(expr, ((BitwiseNegationExpression) current).expression) {
@@ -842,7 +826,7 @@
     }
 
     @Override
-    public void visitCastExpression(final CastExpression expression) {
+    void visitCastExpression(CastExpression expression) {
         doWithNode(expression, current) {
             def expr = expression.expression
             doWithNode(expr, ((CastExpression) current).expression) {
@@ -852,20 +836,17 @@
         }
     }
 
-    @Override
-    @CompileStatic(TypeCheckingMode.SKIP)
-    public void visitConstantExpression(final ConstantExpression expression) {
+    @Override @CompileDynamic
+    void visitConstantExpression(ConstantExpression expression) {
         doWithNode(expression, current) {
             def cur = (ConstantExpression) current
             super.visitConstantExpression(expression)
-            failIfNot((expression.type == cur.type) &&
-                    (expression.value == cur.value))
+            failIfNot(expression.type == cur.type && expression.value == cur.value)
         }
     }
 
-    @Override
-    @CompileStatic(TypeCheckingMode.SKIP)
-    public void visitClassExpression(final ClassExpression expression) {
+    @Override @CompileDynamic
+    void visitClassExpression(ClassExpression expression) {
         doWithNode(expression, current) {
             super.visitClassExpression(expression)
             def cexp = (ClassExpression) current
@@ -874,17 +855,16 @@
     }
 
     @Override
-    public void visitVariableExpression(final VariableExpression expression) {
+    void visitVariableExpression(VariableExpression expression) {
         doWithNode(expression, current) {
             def curVar = (VariableExpression) current
-            failIfNot(matchByName(expression.name, curVar.name) &&
-                    (expression.type == curVar.type) &&
-                    (expression.originType == curVar.originType))
+            failIfNot(matchByName(expression.name, curVar.name)
+                    && expression.type == curVar.type && expression.originType == curVar.originType)
         }
     }
 
     @Override
-    public void visitPropertyExpression(final PropertyExpression expression) {
+    void visitPropertyExpression(PropertyExpression expression) {
         doWithNode(expression, current) {
             def currentPexp = (PropertyExpression) current
             doWithNode(expression.objectExpression, currentPexp.objectExpression) {
@@ -893,15 +873,15 @@
             doWithNode(expression.property, currentPexp.property) {
                 expression.property.visit(this)
             }
-            failIfNot((expression.propertyAsString == currentPexp.propertyAsString) &&
-                    (expression.implicitThis == currentPexp.implicitThis) &&
-                    (expression.safe == currentPexp.safe) &&
-                    (expression.spreadSafe == currentPexp.spreadSafe))
+            failIfNot(expression.propertyAsString == currentPexp.propertyAsString
+                    && expression.implicitThis == currentPexp.implicitThis
+                    && expression.safe == currentPexp.safe
+                    && expression.spreadSafe == currentPexp.spreadSafe)
         }
     }
 
     @Override
-    public void visitAttributeExpression(final AttributeExpression expression) {
+    void visitAttributeExpression(AttributeExpression expression) {
         doWithNode(expression, current) {
             def currentPexp = (AttributeExpression) current
             doWithNode(expression.objectExpression, currentPexp.objectExpression) {
@@ -910,20 +890,15 @@
             doWithNode(expression.property, currentPexp.property) {
                 expression.property.visit(this)
             }
-            failIfNot((expression.propertyAsString == currentPexp.propertyAsString) &&
-                    (expression.implicitThis == currentPexp.implicitThis) &&
-                    (expression.safe == currentPexp.safe) &&
-                    (expression.spreadSafe == currentPexp.spreadSafe))
+            failIfNot(expression.propertyAsString == currentPexp.propertyAsString
+                    && expression.implicitThis == currentPexp.implicitThis
+                    && expression.safe == currentPexp.safe
+                    && expression.spreadSafe == currentPexp.spreadSafe)
         }
     }
 
     @Override
-    public void visitFieldExpression(final FieldExpression expression) {
-        super.visitFieldExpression(expression);
-    }
-
-    @Override
-    public void visitGStringExpression(final GStringExpression expression) {
+    void visitGStringExpression(GStringExpression expression) {
         doWithNode(expression, current) {
             def cur = (GStringExpression) current
             def strings = expression.strings
@@ -940,8 +915,8 @@
     }
 
     @Override
-    void visitListOfExpressions(final List<? extends Expression> list) {
-        if (list == null) return;
+    void visitListOfExpressions(List<? extends Expression> list) {
+        if (list == null) return
         def currentExprs = (List<Expression>) current
         if (currentExprs.size() != list.size()) {
             failIfNot(false)
@@ -957,12 +932,7 @@
     }
 
     @Override
-    public void visitArgumentlistExpression(final ArgumentListExpression ale) {
-        super.visitArgumentlistExpression(ale);
-    }
-
-    @Override
-    public void visitClosureListExpression(final ClosureListExpression cle) {
+    void visitClosureListExpression(ClosureListExpression cle) {
         doWithNode(cle, current) {
             def exprs = cle.expressions
             doWithNode(exprs, ((ClosureListExpression)current).expressions) {
@@ -972,12 +942,7 @@
     }
 
     @Override
-    public void visitBytecodeExpression(final BytecodeExpression cle) {
-        super.visitBytecodeExpression(cle);
-    }
-
-    @Override
-    void visitIfElse(final IfStatement ifElse) {
+    void visitIfElse(IfStatement ifElse) {
         doWithNode(ifElse, current) {
             visitStatement(ifElse)
             def cur = (IfStatement) current
@@ -998,7 +963,7 @@
     }
 
     @Override
-    void visitForLoop(final ForStatement forLoop) {
+    void visitForLoop(ForStatement forLoop) {
         doWithNode(forLoop, current) {
             visitStatement(forLoop)
             def cur = (ForStatement) current
@@ -1014,7 +979,7 @@
     }
 
     @Override
-    void visitWhileLoop(final WhileStatement loop) {
+    void visitWhileLoop(WhileStatement loop) {
         doWithNode(loop, current) {
             visitStatement(loop)
             def cur = (WhileStatement) current
@@ -1030,7 +995,7 @@
     }
 
     /**
-     * // todo: experimental!
+     * TODO: experimental!
      *
      * Annotates an AST node with matching contraints. This method should be called
      * on an AST intended to be used as a pattern only. It will put node metadata on
@@ -1040,9 +1005,7 @@
      * @param constraintsSpec a closure specification of matching constraints
      * @return the same pattern, annotated with constraints
      */
-    public static ASTNode withConstraints(
-            final ASTNode pattern,
-            final @DelegatesTo(value=MatchingConstraintsBuilder, strategy=Closure.DELEGATE_ONLY) Closure constraintsSpec) {
+    static ASTNode withConstraints(ASTNode pattern, @DelegatesTo(value=MatchingConstraintsBuilder, strategy=Closure.DELEGATE_ONLY) Closure constraintsSpec) {
         def builder = new MatchingConstraintsBuilder()
         def constraints = builder.build(constraintsSpec)
         pattern.putNodeMetaData(MatchingConstraints, constraints)