final ClassNode contractedAnnotationClassNode = ClassHelper.makeWithoutCaching(Contracted.class);
for (final ClassNode classNode : moduleNode.getClasses()) {
if (classNode.getAnnotations(contractedAnnotationClassNode).isEmpty()) continue;
final ProcessingContextInformation pci = new ProcessingContextInformation(classNode, unit, source);
new LifecycleBeforeTransformationVisitor(unit, source, pci).visitClass(classNode);
new AnnotationProcessorVisitor(unit, source, pci).visitClass(classNode);
new DomainModelInjectionVisitor(unit, source, pci).visitClass(classNode);
new LifecycleAfterTransformationVisitor(unit, source, pci).visitClass(classNode);
new DynamicSetterInjectionVisitor(unit, source).visitClass(classNode);