private static Class getClassFromTypeDesc(String typeDesc, Class annotationClass) {
private static Class getClassFromTypeDesc(String typeDesc, ClassLoader loader) {
    private static Class getClassFromTypeDesc(String typeDesc, Class annotationClass) {        Type type = Type.getType(typeDesc);        int dimension = typeDesc.startsWith("[")?type.getDimensions():0;        Type componentType = typeDesc.startsWith("[")?type.getElementType():type;        Class componentClass;        if (componentType.equals(Type.LONG_TYPE)) {            componentClass = long.class;        } else if (componentType.equals(Type.INT_TYPE)) {            componentClass = int.class;        } else if (componentType.equals(Type.SHORT_TYPE)) {            componentClass = short.class;        } else if (componentType.equals(Type.DOUBLE_TYPE)) {            componentClass = double.class;        } else if (componentType.equals(Type.FLOAT_TYPE)) {            componentClass = float.class;        } else if (componentType.equals(Type.BYTE_TYPE)) {            componentClass = byte.class;        } else if (componentType.equals(Type.CHAR_TYPE)) {            componentClass = char.class;        } else if (componentType.equals(Type.BOOLEAN_TYPE)) {            componentClass = boolean.class;        } else if (componentType.equals(Type.getType(String.class))) {            componentClass = String.class;        } else {            try {                componentClass = forName(componentType.getClassName(), annotationClass);            } catch (ClassNotFoundException e) {                throw new ParseException("could not load class for type [" + typeDesc + "] due to: " + e.toString(), e);            }        }        if (dimension <= 0) {            return componentClass;        } else {            Class arrayClass = Array.newInstance(componentClass, new int[dimension]).getClass();            return arrayClass;        }    }