FieldVisitor (final int access, final String name, final String desc, final String signature, final Object value) { processSignature(signature); return new FieldVisitor(ASM_API_VERSION) { final Set<TypeRepr.ClassType> annotations = new HashSet<>(); @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { final TypeRepr.ClassType annotation = (TypeRepr.ClassType)TypeRepr.getType(desc); annotations.add(annotation); return new AnnotationCrawler(annotation, ElemType.FIELD); } @Override public void visitEnd() { try { super.visitEnd(); } finally { if ((access & Opcodes.ACC_SYNTHETIC) == 0) { myFields.add(new JvmField(new JVMFlags(access), signature, name, desc, annotations, value)); } } } }; }