public MethodRepr(
     final DependencyContext context,
     final int a,
     final int n,
     final int s,
     final String d,
     final String[] e,
     final Object value) {
   super(a, s, n, TypeRepr.getType(context, Type.getReturnType(d)), value);
   myExceptions =
       (Set<TypeRepr.AbstractType>)
           TypeRepr.createClassType(context, e, new HashSet<TypeRepr.AbstractType>());
   myArgumentTypes = TypeRepr.getType(context, Type.getArgumentTypes(d));
 }
 protected ProtoMember(final DependencyContext context, final DataInput in) {
   super(in);
   try {
     myType = TypeRepr.externalizer(context).read(in);
     myValue = loadTyped(in);
   } catch (IOException e) {
     throw new BuildDataCorruptedException(e);
   }
 }
 public MethodRepr(final DependencyContext context, final DataInput in) {
   super(context, in);
   try {
     final DataExternalizer<TypeRepr.AbstractType> externalizer = TypeRepr.externalizer(context);
     final int size = in.readInt();
     myArgumentTypes = RW.read(externalizer, in, new TypeRepr.AbstractType[size]);
     myExceptions =
         (Set<TypeRepr.AbstractType>)
             RW.read(externalizer, new HashSet<TypeRepr.AbstractType>(), in);
   } catch (IOException e) {
     throw new RuntimeException(e);
   }
 }
    @Override
    public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) {
      if (desc.equals("Ljava/lang/annotation/Target;")) {
        return new AnnotationTargetCrawler();
      }

      if (desc.equals("Ljava/lang/annotation/Retention;")) {
        return new AnnotationRetentionPolicyCrawler();
      }

      return new AnnotationCrawler(
          (TypeRepr.ClassType) TypeRepr.getType(myContext, myContext.get(desc)),
          (myAccess & Opcodes.ACC_ANNOTATION) > 0 ? ElemType.ANNOTATION_TYPE : ElemType.TYPE);
    }
 public AnnotationVisitor visitAnnotation(String name, String desc) {
   return new AnnotationCrawler(
       (TypeRepr.ClassType) TypeRepr.getType(myContext, myContext.get(desc)), myTarget);
 }