// Path: asteroid-core/src/main/java/asteroid/AbstractGlobalTransformation.java
// public abstract class AbstractGlobalTransformation extends AbstractASTTransformation {
// 
//     /**
//      * {@inheritDoc}
//      *
//      * @since 0.2.0
//      */
//     @SuppressWarnings({"PMD.UnusedMethodParameter", "PMD.AvoidInstantiatingObjectsInLoops"})
//     public void visit(final ASTNode[] nodes, final SourceUnit sourceUnit) {
//         final List<ClassNode> classNodeList = (List<ClassNode>) collect(sourceUnit.getAST().getClasses());
// 
//         for (final ClassNode clazzNode : classNodeList) {
//             for (final Class<? extends Transformer> clazz : getTransformers()) {
//                 newInstance(clazz, new Object[] { sourceUnit })
//                     .visitClass(clazzNode);
//             }
//         }
//     }
// 
//     /**
//      * This method should return a list of visitor classes {@link
//      * Class} instances applied globally by this AST.
//      *
//      * @return all transformers that will be applied globally by this
//      * AST transformation
//      * @since 0.2.0
//      * @see Transformer
//      */
//     public abstract List<Class<? extends Transformer>> getTransformers();
// }
// 
// Path: asteroid-core/src/main/java/asteroid/transformer/Transformer.java
// public interface Transformer {
// 
//     /**
//      * This function has to be implemented in order the transformation
//      * to traverse every {@link ClassNode} in the AST
//      *
//      * @param clazzNode The next {@link ClassNode} to traverse
//      * @since 0.2.0
//      */
//     void visitClass(ClassNode clazzNode);
// }


import org.codehaus.groovy.control.CompilePhase;
import org.codehaus.groovy.transform.GroovyASTTransformation;
import java.util.List;
import java.util.ArrayList;
import asteroid.AbstractGlobalTransformation;
import asteroid.transformer.Transformer;
package asteroid.internal;




/**
 * This transformation makes easier to declare a given global transformation.
 *
 * @since 0.1.2
 */
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
public class GlobalTransformationTransformation extends AbstractGlobalTransformation {

    @Override
// Path: asteroid-core/src/main/java/asteroid/AbstractGlobalTransformation.java
// public abstract class AbstractGlobalTransformation extends AbstractASTTransformation {
// 
//     /**
//      * {@inheritDoc}
//      *
//      * @since 0.2.0
//      */
//     @SuppressWarnings({"PMD.UnusedMethodParameter", "PMD.AvoidInstantiatingObjectsInLoops"})
//     public void visit(final ASTNode[] nodes, final SourceUnit sourceUnit) {
//         final List<ClassNode> classNodeList = (List<ClassNode>) collect(sourceUnit.getAST().getClasses());
// 
//         for (final ClassNode clazzNode : classNodeList) {
//             for (final Class<? extends Transformer> clazz : getTransformers()) {
//                 newInstance(clazz, new Object[] { sourceUnit })
//                     .visitClass(clazzNode);
//             }
//         }
//     }
// 
//     /**
//      * This method should return a list of visitor classes {@link
//      * Class} instances applied globally by this AST.
//      *
//      * @return all transformers that will be applied globally by this
//      * AST transformation
//      * @since 0.2.0
//      * @see Transformer
//      */
//     public abstract List<Class<? extends Transformer>> getTransformers();
// }
// 
// Path: asteroid-core/src/main/java/asteroid/transformer/Transformer.java
// public interface Transformer {
// 
//     /**
//      * This function has to be implemented in order the transformation
//      * to traverse every {@link ClassNode} in the AST
//      *
//      * @param clazzNode The next {@link ClassNode} to traverse
//      * @since 0.2.0
//      */
//     void visitClass(ClassNode clazzNode);
// }


// Path: asteroid-core/src/main/java/asteroid/internal/GlobalTransformationTransformation.java
import org.codehaus.groovy.control.CompilePhase;
import org.codehaus.groovy.transform.GroovyASTTransformation;
import java.util.List;
import java.util.ArrayList;
import asteroid.AbstractGlobalTransformation;
import asteroid.transformer.Transformer;

package asteroid.internal;




/**
 * This transformation makes easier to declare a given global transformation.
 *
 * @since 0.1.2
 */
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
public class GlobalTransformationTransformation extends AbstractGlobalTransformation {

    @Override
    public List<Class<? extends Transformer>> getTransformers() {