下面列出了org.objectweb.asm.TypeReference#CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public AnnotationVisitor visitInsnAnnotation(
final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
checkVisitCodeCalled();
checkVisitMaxsNotCalled();
int sort = new TypeReference(typeRef).getSort();
if (sort != TypeReference.INSTANCEOF
&& sort != TypeReference.NEW
&& sort != TypeReference.CONSTRUCTOR_REFERENCE
&& sort != TypeReference.METHOD_REFERENCE
&& sort != TypeReference.CAST
&& sort != TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT) {
throw new IllegalArgumentException(INVALID_TYPE_REFERENCE + Integer.toHexString(sort));
}
CheckClassAdapter.checkTypeRef(typeRef);
CheckMethodAdapter.checkDescriptor(version, descriptor, false);
return new CheckAnnotationAdapter(
super.visitInsnAnnotation(typeRef, typePath, descriptor, visible));
}
@Override
public AnnotationVisitor visitInsnAnnotation(
final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
checkVisitCodeCalled();
checkVisitMaxsNotCalled();
int sort = new TypeReference(typeRef).getSort();
if (sort != TypeReference.INSTANCEOF
&& sort != TypeReference.NEW
&& sort != TypeReference.CONSTRUCTOR_REFERENCE
&& sort != TypeReference.METHOD_REFERENCE
&& sort != TypeReference.CAST
&& sort != TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT) {
throw new IllegalArgumentException(INVALID_TYPE_REFERENCE + Integer.toHexString(sort));
}
CheckClassAdapter.checkTypeRef(typeRef);
CheckMethodAdapter.checkDescriptor(version, descriptor, false);
return new CheckAnnotationAdapter(
super.visitInsnAnnotation(typeRef, typePath, descriptor, visible));
}
@Override
public AnnotationVisitor visitInsnAnnotation(
final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
checkVisitCodeCalled();
checkVisitMaxsNotCalled();
int sort = new TypeReference(typeRef).getSort();
if (sort != TypeReference.INSTANCEOF
&& sort != TypeReference.NEW
&& sort != TypeReference.CONSTRUCTOR_REFERENCE
&& sort != TypeReference.METHOD_REFERENCE
&& sort != TypeReference.CAST
&& sort != TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT) {
throw new IllegalArgumentException(INVALID_TYPE_REFERENCE + Integer.toHexString(sort));
}
CheckClassAdapter.checkTypeRef(typeRef);
CheckMethodAdapter.checkDescriptor(version, descriptor, false);
return new CheckAnnotationAdapter(
super.visitInsnAnnotation(typeRef, typePath, descriptor, visible));
}
@Override
public AnnotationVisitor visitInsnAnnotation(final int typeRef, final TypePath typePath, final String desc, final boolean visible) {
checkStartCode();
checkEndCode();
int sort = typeRef >>> 24;
if (sort != TypeReference.INSTANCEOF && sort != TypeReference.NEW && sort != TypeReference.CONSTRUCTOR_REFERENCE
&& sort != TypeReference.METHOD_REFERENCE && sort != TypeReference.CAST && sort != TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT && sort != TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT
&& sort != TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT) {
throw new IllegalArgumentException("Invalid type reference sort 0x" + Integer.toHexString(sort));
}
CheckClassAdapter.checkTypeRefAndPath(typeRef, typePath);
CheckMethodAdapter.checkDesc(desc, false);
return new CheckAnnotationAdapter(super.visitInsnAnnotation(typeRef, typePath, desc, visible));
}
/**
* Checks the reference to a type in a type annotation.
*
* @param typeRef a reference to an annotated type.
*/
static void checkTypeRef(final int typeRef) {
int mask = 0;
switch (typeRef >>> 24) {
case TypeReference.CLASS_TYPE_PARAMETER:
case TypeReference.METHOD_TYPE_PARAMETER:
case TypeReference.METHOD_FORMAL_PARAMETER:
mask = 0xFFFF0000;
break;
case TypeReference.FIELD:
case TypeReference.METHOD_RETURN:
case TypeReference.METHOD_RECEIVER:
case TypeReference.LOCAL_VARIABLE:
case TypeReference.RESOURCE_VARIABLE:
case TypeReference.INSTANCEOF:
case TypeReference.NEW:
case TypeReference.CONSTRUCTOR_REFERENCE:
case TypeReference.METHOD_REFERENCE:
mask = 0xFF000000;
break;
case TypeReference.CLASS_EXTENDS:
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
case TypeReference.THROWS:
case TypeReference.EXCEPTION_PARAMETER:
mask = 0xFFFFFF00;
break;
case TypeReference.CAST:
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
mask = 0xFF0000FF;
break;
default:
throw new AssertionError();
}
if ((typeRef & ~mask) != 0) {
throw new IllegalArgumentException(
"Invalid type reference 0x" + Integer.toHexString(typeRef));
}
}
/**
* Appends a string representation of the given type reference to {@link #stringBuilder}.
*
* @param typeRef a type reference. See {@link TypeReference}.
*/
private void appendTypeReference(final int typeRef) {
TypeReference typeReference = new TypeReference(typeRef);
switch (typeReference.getSort()) {
case TypeReference.CLASS_TYPE_PARAMETER:
stringBuilder.append("CLASS_TYPE_PARAMETER ").append(typeReference.getTypeParameterIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER:
stringBuilder
.append("METHOD_TYPE_PARAMETER ")
.append(typeReference.getTypeParameterIndex());
break;
case TypeReference.CLASS_EXTENDS:
stringBuilder.append("CLASS_EXTENDS ").append(typeReference.getSuperTypeIndex());
break;
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
stringBuilder
.append("CLASS_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
stringBuilder
.append("METHOD_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.FIELD:
stringBuilder.append("FIELD");
break;
case TypeReference.METHOD_RETURN:
stringBuilder.append("METHOD_RETURN");
break;
case TypeReference.METHOD_RECEIVER:
stringBuilder.append("METHOD_RECEIVER");
break;
case TypeReference.METHOD_FORMAL_PARAMETER:
stringBuilder
.append("METHOD_FORMAL_PARAMETER ")
.append(typeReference.getFormalParameterIndex());
break;
case TypeReference.THROWS:
stringBuilder.append("THROWS ").append(typeReference.getExceptionIndex());
break;
case TypeReference.LOCAL_VARIABLE:
stringBuilder.append("LOCAL_VARIABLE");
break;
case TypeReference.RESOURCE_VARIABLE:
stringBuilder.append("RESOURCE_VARIABLE");
break;
case TypeReference.EXCEPTION_PARAMETER:
stringBuilder.append("EXCEPTION_PARAMETER ").append(typeReference.getTryCatchBlockIndex());
break;
case TypeReference.INSTANCEOF:
stringBuilder.append("INSTANCEOF");
break;
case TypeReference.NEW:
stringBuilder.append("NEW");
break;
case TypeReference.CONSTRUCTOR_REFERENCE:
stringBuilder.append("CONSTRUCTOR_REFERENCE");
break;
case TypeReference.METHOD_REFERENCE:
stringBuilder.append("METHOD_REFERENCE");
break;
case TypeReference.CAST:
stringBuilder.append("CAST ").append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
default:
throw new IllegalArgumentException();
}
}
/**
* Checks the reference to a type in a type annotation.
*
* @param typeRef
* a reference to an annotated type.
* @param typePath
* the path to the annotated type argument, wildcard bound, array
* element type, or static inner type within 'typeRef'. May be
* <tt>null</tt> if the annotation targets 'typeRef' as a whole.
*/
static void checkTypeRefAndPath(int typeRef, TypePath typePath) {
int mask = 0;
switch (typeRef >>> 24) {
case TypeReference.CLASS_TYPE_PARAMETER:
case TypeReference.METHOD_TYPE_PARAMETER:
case TypeReference.METHOD_FORMAL_PARAMETER:
mask = 0xFFFF0000;
break;
case TypeReference.FIELD:
case TypeReference.METHOD_RETURN:
case TypeReference.METHOD_RECEIVER:
case TypeReference.LOCAL_VARIABLE:
case TypeReference.RESOURCE_VARIABLE:
case TypeReference.INSTANCEOF:
case TypeReference.NEW:
case TypeReference.CONSTRUCTOR_REFERENCE:
case TypeReference.METHOD_REFERENCE:
mask = 0xFF000000;
break;
case TypeReference.CLASS_EXTENDS:
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
case TypeReference.THROWS:
case TypeReference.EXCEPTION_PARAMETER:
mask = 0xFFFFFF00;
break;
case TypeReference.CAST:
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
mask = 0xFF0000FF;
break;
default:
throw new IllegalArgumentException("Invalid type reference sort 0x" + Integer.toHexString(typeRef >>> 24));
}
if ((typeRef & ~mask) != 0) {
throw new IllegalArgumentException("Invalid type reference 0x" + Integer.toHexString(typeRef));
}
if (typePath != null) {
for (int i = 0; i < typePath.getLength(); ++i) {
int step = typePath.getStep(i);
if (step != TypePath.ARRAY_ELEMENT && step != TypePath.INNER_TYPE && step != TypePath.TYPE_ARGUMENT && step != TypePath.WILDCARD_BOUND) {
throw new IllegalArgumentException("Invalid type path step " + i + " in " + typePath);
}
if (step != TypePath.TYPE_ARGUMENT && typePath.getStepArgument(i) != 0) {
throw new IllegalArgumentException("Invalid type path step argument for step " + i + " in " + typePath);
}
}
}
}
private void appendTypeReference(final int typeRef) {
TypeReference ref = new TypeReference(typeRef);
switch (ref.getSort()) {
case TypeReference.CLASS_TYPE_PARAMETER:
buf.append("CLASS_TYPE_PARAMETER ").append(ref.getTypeParameterIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER:
buf.append("METHOD_TYPE_PARAMETER ").append(ref.getTypeParameterIndex());
break;
case TypeReference.CLASS_EXTENDS:
buf.append("CLASS_EXTENDS ").append(ref.getSuperTypeIndex());
break;
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
buf.append("CLASS_TYPE_PARAMETER_BOUND ").append(ref.getTypeParameterIndex()).append(", ").append(ref.getTypeParameterBoundIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
buf.append("METHOD_TYPE_PARAMETER_BOUND ").append(ref.getTypeParameterIndex()).append(", ").append(ref.getTypeParameterBoundIndex());
break;
case TypeReference.FIELD:
buf.append("FIELD");
break;
case TypeReference.METHOD_RETURN:
buf.append("METHOD_RETURN");
break;
case TypeReference.METHOD_RECEIVER:
buf.append("METHOD_RECEIVER");
break;
case TypeReference.METHOD_FORMAL_PARAMETER:
buf.append("METHOD_FORMAL_PARAMETER ").append(ref.getFormalParameterIndex());
break;
case TypeReference.THROWS:
buf.append("THROWS ").append(ref.getExceptionIndex());
break;
case TypeReference.LOCAL_VARIABLE:
buf.append("LOCAL_VARIABLE");
break;
case TypeReference.RESOURCE_VARIABLE:
buf.append("RESOURCE_VARIABLE");
break;
case TypeReference.EXCEPTION_PARAMETER:
buf.append("EXCEPTION_PARAMETER ").append(ref.getTryCatchBlockIndex());
break;
case TypeReference.INSTANCEOF:
buf.append("INSTANCEOF");
break;
case TypeReference.NEW:
buf.append("NEW");
break;
case TypeReference.CONSTRUCTOR_REFERENCE:
buf.append("CONSTRUCTOR_REFERENCE");
break;
case TypeReference.METHOD_REFERENCE:
buf.append("METHOD_REFERENCE");
break;
case TypeReference.CAST:
buf.append("CAST ").append(ref.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
buf.append("CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT ").append(ref.getTypeArgumentIndex());
break;
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
buf.append("METHOD_INVOCATION_TYPE_ARGUMENT ").append(ref.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
buf.append("CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT ").append(ref.getTypeArgumentIndex());
break;
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
buf.append("METHOD_REFERENCE_TYPE_ARGUMENT ").append(ref.getTypeArgumentIndex());
break;
}
}
/**
* Checks the reference to a type in a type annotation.
*
* @param typeRef a reference to an annotated type.
*/
static void checkTypeRef(final int typeRef) {
int mask = 0;
switch (typeRef >>> 24) {
case TypeReference.CLASS_TYPE_PARAMETER:
case TypeReference.METHOD_TYPE_PARAMETER:
case TypeReference.METHOD_FORMAL_PARAMETER:
mask = 0xFFFF0000;
break;
case TypeReference.FIELD:
case TypeReference.METHOD_RETURN:
case TypeReference.METHOD_RECEIVER:
case TypeReference.LOCAL_VARIABLE:
case TypeReference.RESOURCE_VARIABLE:
case TypeReference.INSTANCEOF:
case TypeReference.NEW:
case TypeReference.CONSTRUCTOR_REFERENCE:
case TypeReference.METHOD_REFERENCE:
mask = 0xFF000000;
break;
case TypeReference.CLASS_EXTENDS:
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
case TypeReference.THROWS:
case TypeReference.EXCEPTION_PARAMETER:
mask = 0xFFFFFF00;
break;
case TypeReference.CAST:
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
mask = 0xFF0000FF;
break;
default:
throw new AssertionError();
}
if ((typeRef & ~mask) != 0) {
throw new IllegalArgumentException(
"Invalid type reference 0x" + Integer.toHexString(typeRef));
}
}
/**
* Appends a string representation of the given type reference to {@link #stringBuilder}.
*
* @param typeRef a type reference. See {@link TypeReference}.
*/
private void appendTypeReference(final int typeRef) {
TypeReference typeReference = new TypeReference(typeRef);
switch (typeReference.getSort()) {
case TypeReference.CLASS_TYPE_PARAMETER:
stringBuilder.append("CLASS_TYPE_PARAMETER ").append(typeReference.getTypeParameterIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER:
stringBuilder
.append("METHOD_TYPE_PARAMETER ")
.append(typeReference.getTypeParameterIndex());
break;
case TypeReference.CLASS_EXTENDS:
stringBuilder.append("CLASS_EXTENDS ").append(typeReference.getSuperTypeIndex());
break;
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
stringBuilder
.append("CLASS_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
stringBuilder
.append("METHOD_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.FIELD:
stringBuilder.append("FIELD");
break;
case TypeReference.METHOD_RETURN:
stringBuilder.append("METHOD_RETURN");
break;
case TypeReference.METHOD_RECEIVER:
stringBuilder.append("METHOD_RECEIVER");
break;
case TypeReference.METHOD_FORMAL_PARAMETER:
stringBuilder
.append("METHOD_FORMAL_PARAMETER ")
.append(typeReference.getFormalParameterIndex());
break;
case TypeReference.THROWS:
stringBuilder.append("THROWS ").append(typeReference.getExceptionIndex());
break;
case TypeReference.LOCAL_VARIABLE:
stringBuilder.append("LOCAL_VARIABLE");
break;
case TypeReference.RESOURCE_VARIABLE:
stringBuilder.append("RESOURCE_VARIABLE");
break;
case TypeReference.EXCEPTION_PARAMETER:
stringBuilder.append("EXCEPTION_PARAMETER ").append(typeReference.getTryCatchBlockIndex());
break;
case TypeReference.INSTANCEOF:
stringBuilder.append("INSTANCEOF");
break;
case TypeReference.NEW:
stringBuilder.append("NEW");
break;
case TypeReference.CONSTRUCTOR_REFERENCE:
stringBuilder.append("CONSTRUCTOR_REFERENCE");
break;
case TypeReference.METHOD_REFERENCE:
stringBuilder.append("METHOD_REFERENCE");
break;
case TypeReference.CAST:
stringBuilder.append("CAST ").append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
default:
throw new IllegalArgumentException();
}
}
/**
* Checks the reference to a type in a type annotation.
*
* @param typeRef a reference to an annotated type.
*/
static void checkTypeRef(final int typeRef) {
int mask = 0;
switch (typeRef >>> 24) {
case TypeReference.CLASS_TYPE_PARAMETER:
case TypeReference.METHOD_TYPE_PARAMETER:
case TypeReference.METHOD_FORMAL_PARAMETER:
mask = 0xFFFF0000;
break;
case TypeReference.FIELD:
case TypeReference.METHOD_RETURN:
case TypeReference.METHOD_RECEIVER:
case TypeReference.LOCAL_VARIABLE:
case TypeReference.RESOURCE_VARIABLE:
case TypeReference.INSTANCEOF:
case TypeReference.NEW:
case TypeReference.CONSTRUCTOR_REFERENCE:
case TypeReference.METHOD_REFERENCE:
mask = 0xFF000000;
break;
case TypeReference.CLASS_EXTENDS:
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
case TypeReference.THROWS:
case TypeReference.EXCEPTION_PARAMETER:
mask = 0xFFFFFF00;
break;
case TypeReference.CAST:
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
mask = 0xFF0000FF;
break;
default:
throw new AssertionError();
}
if ((typeRef & ~mask) != 0) {
throw new IllegalArgumentException(
"Invalid type reference 0x" + Integer.toHexString(typeRef));
}
}
/**
* Appends a string representation of the given type reference to {@link #stringBuilder}.
*
* @param typeRef a type reference. See {@link TypeReference}.
*/
private void appendTypeReference(final int typeRef) {
TypeReference typeReference = new TypeReference(typeRef);
switch (typeReference.getSort()) {
case TypeReference.CLASS_TYPE_PARAMETER:
stringBuilder.append("CLASS_TYPE_PARAMETER ").append(typeReference.getTypeParameterIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER:
stringBuilder
.append("METHOD_TYPE_PARAMETER ")
.append(typeReference.getTypeParameterIndex());
break;
case TypeReference.CLASS_EXTENDS:
stringBuilder.append("CLASS_EXTENDS ").append(typeReference.getSuperTypeIndex());
break;
case TypeReference.CLASS_TYPE_PARAMETER_BOUND:
stringBuilder
.append("CLASS_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.METHOD_TYPE_PARAMETER_BOUND:
stringBuilder
.append("METHOD_TYPE_PARAMETER_BOUND ")
.append(typeReference.getTypeParameterIndex())
.append(", ")
.append(typeReference.getTypeParameterBoundIndex());
break;
case TypeReference.FIELD:
stringBuilder.append("FIELD");
break;
case TypeReference.METHOD_RETURN:
stringBuilder.append("METHOD_RETURN");
break;
case TypeReference.METHOD_RECEIVER:
stringBuilder.append("METHOD_RECEIVER");
break;
case TypeReference.METHOD_FORMAL_PARAMETER:
stringBuilder
.append("METHOD_FORMAL_PARAMETER ")
.append(typeReference.getFormalParameterIndex());
break;
case TypeReference.THROWS:
stringBuilder.append("THROWS ").append(typeReference.getExceptionIndex());
break;
case TypeReference.LOCAL_VARIABLE:
stringBuilder.append("LOCAL_VARIABLE");
break;
case TypeReference.RESOURCE_VARIABLE:
stringBuilder.append("RESOURCE_VARIABLE");
break;
case TypeReference.EXCEPTION_PARAMETER:
stringBuilder.append("EXCEPTION_PARAMETER ").append(typeReference.getTryCatchBlockIndex());
break;
case TypeReference.INSTANCEOF:
stringBuilder.append("INSTANCEOF");
break;
case TypeReference.NEW:
stringBuilder.append("NEW");
break;
case TypeReference.CONSTRUCTOR_REFERENCE:
stringBuilder.append("CONSTRUCTOR_REFERENCE");
break;
case TypeReference.METHOD_REFERENCE:
stringBuilder.append("METHOD_REFERENCE");
break;
case TypeReference.CAST:
stringBuilder.append("CAST ").append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_INVOCATION_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_INVOCATION_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
case TypeReference.METHOD_REFERENCE_TYPE_ARGUMENT:
stringBuilder
.append("METHOD_REFERENCE_TYPE_ARGUMENT ")
.append(typeReference.getTypeArgumentIndex());
break;
default:
throw new IllegalArgumentException();
}
}