@Override
        public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
            InterfaceAnnotationVisitor iav = null;
            if(Type.getDescriptor(Interface.class).equals(desc)||
            		Type.getDescriptor(Imt.class).equals(desc)){
                
                dataMap = new HashMap<String, Object>();
                Class<?> clazz = null;
                String className = internalClassName.replace("/", ".");
                try {
                    clazz = Class.forName(className);
                } catch (ClassNotFoundException e1) {
                    new RuntimeException(e1);
                }
                
                Type returnType = Type.getReturnType(methodDesc);
                Class<?> returnClass = Util.getClass(returnType);
                
                Type[] argumentTypes = Type.getArgumentTypes(methodDesc);
                Class<?>[] argumentClasses = new Class[argumentTypes.length];
                for(int i = 0; i < argumentTypes.length; i++){
                    Type argumentType = argumentTypes[i];
                    Class<?> argumentClass = Util.getClass(argumentType);
                    argumentClasses[i] = argumentClass;
                }
                
                String key = Util.generateKey(className, methodName, methodDesc);
                dataMap.put("key", key);
                dataMap.put("internalClassName", internalClassName);
                dataMap.put("className", className);
                dataMap.put("clazz", clazz);
                dataMap.put("methodName", methodName);
                dataMap.put("methodDesc", methodDesc);
                dataMap.put("returnClass", returnClass);
                dataMap.put("argumentClasses", argumentClasses);
                dataList.add(dataMap);
                
                iav = new InterfaceAnnotationVisitor();
            }
            return iav;
        }