code: public final AnnotationProcessor getProcessorFor(Set annotationTypeDeclarations, AnnotationProcessorEnvironment env)
      {
  
          CoreAnnotationProcessorEnv coreEnv = CoreAnnotationProcessorEnvImpl.get( env );
          AnnotationTypeDeclaration[] atds = new AnnotationTypeDeclaration[ annotationTypeDeclarations.size() ];
          int j = 0;
          for ( Iterator i = annotationTypeDeclarations.iterator(); i.hasNext(); )
          {
              // Wrap each Sun/Mirror annotation type declaration with our core AnnotationTypeDeclaration.
              com.sun.mirror.declaration.AnnotationTypeDeclaration decl =
                      ( com.sun.mirror.declaration.AnnotationTypeDeclaration ) i.next();
              atds[ j++ ] = WrapperFactory.get().getAnnotationTypeDeclaration( decl );
          }
  
          CoreAnnotationProcessor ap = getCoreProcessorFor( atds, coreEnv );
          return ap != null ? new DelegatingAnnotationProcessor( ap ) : null;
      }
docs: Get a Sun annotation processor for the given annotation type declarations.  This just wraps the type declarations
  in our wrapper types, and returns an annotation processor that delegates to our "core" (apt-independent)
  processor to do the real work.