private List<FieldDescriptor> createFieldList(TypeElement serviceElement) {
   return ListUtils.unmodifiableList(
       CollectionUtils.collect(
           serviceElement.getEnclosedElements(),
           new Transformer<Element, FieldDescriptor>() {
             @Override
             public FieldDescriptor transform(Element enclosed) {
               FieldDescriptor fieldDescriptor =
                   enclosed.accept(AnnotationFieldVisitor.INSTANCE, utils);
               return fieldDescriptor;
             }
           },
           new ArrayList<FieldDescriptor>()));
 }
 @Override
 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
   for (TypeElement te : ElementFilter.typesIn(roundEnv.getRootElements())) {
     if (isSimpleName(te, "InvalidSource")) {
       for (Element c : te.getEnclosedElements()) {
         for (AnnotationMirror am : c.getAnnotationMirrors()) {
           Element ate = am.getAnnotationType().asElement();
           if (isSimpleName(ate, "ExpectInterfaces")) {
             checkInterfaces((TypeElement) c, getValue(am));
           } else if (isSimpleName(ate, "ExpectSupertype")) {
             checkSupertype((TypeElement) c, getValue(am));
           }
         }
       }
     }
   }
   return true;
 }