void visit(ASTNode[] nodes, SourceUnit sourceUnit) {
      ErrorReporter errorReporter = new ErrorReporter(sourceUnit);

      try (SourceLookup sourceLookup = new SourceLookup(sourceUnit)) {
        List<ClassNode> classes = sourceUnit.getAST().getClasses();

        for (ClassNode clazz : classes)
          if (isSpec(clazz)) processSpec(sourceUnit, clazz, errorReporter, sourceLookup);
      }
    }
AST transformation for rewriting Spock specifications. Runs after phase
SEMANTIC_ANALYSIS, which means that the AST is semantically accurate
and already decorated with reflection information. On the flip side,
because types and variables have already been resolved,
program elements like import statements and variable definitions
can no longer be manipulated at will.

@author Peter Niederwieser
spock-core/src/main/java/org/spockframework/compiler/SpockTransform.java