Object startPoint = (Object) Class.this; // It should be this class itself because, for example, superclass may be a parameterized type with parameters which are the generic parameters of this class
String signature = AuxiliaryUtil.toUTF8(VMGenericsAndAnnotations.getSignature(Class.this)); // getting this class signature
if (signature == null) {
return genericSuperclass = Class.this.getSuperclass();
}
InterimClassGenericDecl decl = (InterimClassGenericDecl) Parser.parseSignature(signature, SignatureKind.CLASS_SIGNATURE, (GenericDeclaration)startPoint); // GenericSignatureFormatError can be thrown here
InterimType superClassType = decl.superClass;
if (superClassType == null) {
return genericSuperclass = Class.this.getSuperclass();
}
if (superClassType instanceof InterimParameterizedType) {