code: boolean isAlreadyProcessed(
              final CtClass ctClass,
              final ClassProcessor processor) {
          final ClassFile classFile = ctClass.getClassFile();
          AnnotationsAttribute annotationAttribute = null;
          for (final Object attributeObject : classFile.getAttributes()) {
              if (attributeObject instanceof AnnotationsAttribute) {
                  annotationAttribute = (AnnotationsAttribute) attributeObject;
                  final Annotation annotation = annotationAttribute.getAnnotation(PROCESSED_ANNOTATION_CLASS);
                  if (annotation != null) {
                      final MemberValue value = annotation.getMemberValue("value");
                      _log.debug("Existing processed annotation on: " + ctClass.getName() + " = " + value);
                      final ArrayMemberValue valueArray = (ArrayMemberValue) value;
                      for (final MemberValue processorValue : valueArray.getValue()) {
                          final StringMemberValue processorValueString = (StringMemberValue) processorValue;
                          if (processor.getClass().getName().equals(processorValueString.getValue())) {
                              return true;
                          }
                      }
                  }
              }
          }
          _log.debug("No annotation attribute or processed annotation found on: " + ctClass.getName());
          return false;
      }
docs: /* package private