public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
     var field = new RawFieldInfo();
     field.modifiers = access;
     field.name = name;
     field.value = value;
     classFileType.classInfo.fields.add(field);
     if (signature == null) {
         field.type = AsmType.getType(desc);
     } else {
         var parser = new SignatureParser(signature);
         field.signature = parser.parseFieldTypeSignature();
     }
     fieldInfoBuilder.field = field;
     return fieldInfoBuilder;
 }
 public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
     var method = new RawMethodInfo();
     method.modifiers = access;
     method.name = name;
     method.descriptor = desc;
     classFileType.classInfo.methods.add(method);
     
     if (signature == null) {
         method.returnType = AsmType.getReturnType(desc);
         foreach (var t in AsmType.getArgumentTypes(desc)) {
             var p = new RawParameterInfo();
             p.type = t;
             method.parameters.add(p);
         }
         method.exceptions = exceptions;
     } else {
         var parser = new SignatureParser(signature);
         method.signature = parser.parseMethodTypeSignature();
         foreach (var s in method.signature.Parameters) {
             method.parameters.add(new RawParameterInfo());
         }
     }
     
     methodInfoBuilder.method = method;
     return methodInfoBuilder;
 }
 public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
     classFileType.modifiers = access;
     var classInfo = new RawClassInfo();
     classFileType.classInfo = classInfo;
     classInfo.name = name;
     if (signature == null) {
         classInfo.superName = superName;
         classInfo.interfaces = interfaces;
     } else {
         var parser = new SignatureParser(signature);
         classInfo.signature = parser.parseClassSignature();
     }
 }