// Path: grooves-groovy/src/main/java/com/github/rahulsom/grooves/groovy/transformations/internal/EventASTTransformation.java
// @GroovyASTTransformation
// public class EventASTTransformation extends AbstractASTTransformation {
// 
//     private static final Class<Event> MY_CLASS = Event.class;
//     private static final ClassNode MY_TYPE = ClassHelper.make(MY_CLASS);
//     private final Logger log = Logger.getLogger(getClass().getName());
// 
//     @Override
//     public void visit(ASTNode[] nodes, SourceUnit source) {
//         init(nodes, source);
//         AnnotatedNode annotatedNode = (AnnotatedNode) nodes[1];
//         AnnotationNode annotationNode = (AnnotationNode) nodes[0];
// 
//         if (MY_TYPE.equals(annotationNode.getClassNode()) && annotatedNode instanceof ClassNode) {
//             final Expression theAggregate = annotationNode.getMember("value");
//             final ClassNode theClassNode = (ClassNode) annotatedNode;
//             final String aggregateClassName = theAggregate.getType().getName();
//             log.fine(() -> MessageFormat.format("Adding event {0} to aggregate {1}",
//                     theClassNode.getNameWithoutPackage(), aggregateClassName));
//             AggregateASTTransformation.addEventToAggregate(aggregateClassName, theClassNode);
//         }
// 
//     }
// }


import com.github.rahulsom.grooves.groovy.transformations.internal.EventASTTransformation;
import org.codehaus.groovy.transform.GroovyASTTransformationClass;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
package com.github.rahulsom.grooves.groovy.transformations;



/**
 * Marks a class as an Event.
 *
 * @author Rahul Somasunderam
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
// Path: grooves-groovy/src/main/java/com/github/rahulsom/grooves/groovy/transformations/internal/EventASTTransformation.java
// @GroovyASTTransformation
// public class EventASTTransformation extends AbstractASTTransformation {
// 
//     private static final Class<Event> MY_CLASS = Event.class;
//     private static final ClassNode MY_TYPE = ClassHelper.make(MY_CLASS);
//     private final Logger log = Logger.getLogger(getClass().getName());
// 
//     @Override
//     public void visit(ASTNode[] nodes, SourceUnit source) {
//         init(nodes, source);
//         AnnotatedNode annotatedNode = (AnnotatedNode) nodes[1];
//         AnnotationNode annotationNode = (AnnotationNode) nodes[0];
// 
//         if (MY_TYPE.equals(annotationNode.getClassNode()) && annotatedNode instanceof ClassNode) {
//             final Expression theAggregate = annotationNode.getMember("value");
//             final ClassNode theClassNode = (ClassNode) annotatedNode;
//             final String aggregateClassName = theAggregate.getType().getName();
//             log.fine(() -> MessageFormat.format("Adding event {0} to aggregate {1}",
//                     theClassNode.getNameWithoutPackage(), aggregateClassName));
//             AggregateASTTransformation.addEventToAggregate(aggregateClassName, theClassNode);
//         }
// 
//     }
// }


// Path: grooves-groovy/src/main/java/com/github/rahulsom/grooves/groovy/transformations/Event.java
import com.github.rahulsom.grooves.groovy.transformations.internal.EventASTTransformation;
import org.codehaus.groovy.transform.GroovyASTTransformationClass;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

package com.github.rahulsom.grooves.groovy.transformations;



/**
 * Marks a class as an Event.
 *
 * @author Rahul Somasunderam
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
@GroovyASTTransformationClass(classes = EventASTTransformation.class)