Buggy code:
public static final UnresolvedType OBJECT = UnresolvedType . forSignature ( "Ljava//lang//Object;" ) ; public static final UnresolvedType OBJECTARRAY = UnresolvedType . forSignature ( "[Ljava//lang//Object;" ) ; public static final UnresolvedType CLONEABLE = UnresolvedType . forSignature ( "Ljava//lang//Cloneable;" ) ; public static final UnresolvedType SERIALIZABLE = UnresolvedType . forSignature ( "Ljava//io//Serializable;" ) ; public static final UnresolvedType THROWABLE = UnresolvedType . forSignature ( "Ljava//lang//Throwable;" ) ; public static final UnresolvedType RUNTIME_EXCEPTION = UnresolvedType . forSignature ( "Ljava//lang//RuntimeException;" ) ; public static final UnresolvedType ERROR = UnresolvedType . forSignature ( "Ljava//lang//Error;" ) ; public static final UnresolvedType AT_INHERITED = UnresolvedType . forSignature ( "Ljava//lang//annotation//Inherited;" ) ; public static final UnresolvedType AT_RETENTION = UnresolvedType . forSignature ( "Ljava//lang//annotation//Retention;" ) ; public static final UnresolvedType ENUM = UnresolvedType . forSignature ( "Ljava//lang//Enum;" ) ; public static final UnresolvedType ANNOTATION = UnresolvedType . forSignature ( "Ljava//lang//annotation//Annotation;" ) ; public static final UnresolvedType JAVA_LANG_CLASS = UnresolvedType . forSignature ( "Ljava//lang//Class;" ) ; public static final UnresolvedType JAVA_LANG_EXCEPTION = UnresolvedType . forSignature ( "Ljava//lang//Exception;" ) ; public static final UnresolvedType JAVA_LANG_REFLECT_METHOD = UnresolvedType . forSignature ( "Ljava//lang//reflect//Method;" ) ; public static final UnresolvedType SUPPRESS_AJ_WARNINGS = UnresolvedType . forSignature ( "Lorg//aspectj//lang//annotation//SuppressAjWarnings;" ) ; public static final UnresolvedType AT_TARGET = UnresolvedType . forSignature ( "Ljava//lang//annotation//Target;" ) ; public static final UnresolvedType SOMETHING = new UnresolvedType ( "?" ) ; public static final String MISSING_NAME = "@missing@" ; protected UnresolvedType . TypeKind typeKind = UnresolvedType . TypeKind . SIMPLE ; protected String signature ; protected String signatureErasure ; protected UnresolvedType [ ] typeParameters ; protected TypeVariable [ ] typeVariables ; private UnresolvedType upperBound ; private UnresolvedType lowerBound ; private boolean isSuper = false ; private boolean isExtends = false ; public boolean isPrimitiveType ( ) { } public boolean isSimpleType ( ) { } public boolean isRawType ( ) { } public boolean isGenericType ( ) { } public boolean isParameterizedType ( ) { } public boolean isTypeVariableReference ( ) { } public boolean isGenericWildcard ( ) { } public boolean isExtends ( ) { } public boolean isSuper ( ) { } public UnresolvedType . TypeKind getTypekind ( ) { } public final boolean isArray ( ) { } public boolean equals ( Object other ) { } public final int hashCode ( ) { } public UnresolvedType parameterize ( Map typeBindings ) { } protected UnresolvedType ( String signature ) { } protected UnresolvedType ( String signature , String signatureErasure ) { } public UnresolvedType ( String signature , String signatureErasure , UnresolvedType [ ] typeParams ) { } public int getSize ( ) { } public static UnresolvedType makeArray ( UnresolvedType base , int dims ) { } public static UnresolvedType forName ( String name ) { } public static UnresolvedType [ ] forNames ( String [ ] names ) { } public static UnresolvedType forGenericType ( String name , TypeVariable [ ] tvbs , String genericSig ) { } public static UnresolvedType forGenericTypeSignature ( String sig , String declaredGenericSig ) { } public static UnresolvedType forGenericTypeVariables ( String sig , TypeVariable [ ] tVars ) { } public static UnresolvedType forRawTypeName ( String name ) { } public static UnresolvedType [ ] add ( UnresolvedType [ ] types , UnresolvedType end ) { } public static UnresolvedType [ ] insert ( UnresolvedType start , UnresolvedType [ ] types ) { } public static UnresolvedType forSignature ( String signature ) { } public static UnresolvedType [ ] forSignatures ( String [ ] sigs ) { } public String getName ( ) { } public String getSimpleName ( ) { } public String getRawName ( ) { } public String getBaseName ( ) { } public String getSimpleBaseName ( ) { } public static String [ ] getNames ( UnresolvedType [ ] types ) { } public String getSignature ( ) { } public String getErasureSignature ( ) { } public UnresolvedType getRawType ( ) { } public UnresolvedType getUpperBound ( ) { } public UnresolvedType getLowerBound ( ) { } public void setUpperBound ( UnresolvedType aBound ) { } public void setLowerBound ( UnresolvedType aBound ) { } public UnresolvedType getOutermostType ( ) { if ( ( isArray ( ) ) || ( isPrimitiveType ( ) ) ) return this ; <START_BUG> String sig = getSignature ( ) ; <END_BUG> int dollar = sig . indexOf ( '$' ) ; if ( dollar != ( - 1 ) ) { return UnresolvedType . forSignature ( ( ( sig . substring ( 0 , dollar ) ) + ';' ) ) ; } else { return this ; } } public UnresolvedType getComponentType ( ) { } public String toString ( ) { } public String toDebugString ( ) { } public ResolvedType resolve ( World world ) { } private static String signatureToName ( String signature ) { } private static String nameToSignature ( String name ) { } public void write ( DataOutputStream s ) throws IOException { } public static UnresolvedType read ( DataInputStream s ) throws IOException { } public static void writeArray ( UnresolvedType [ ] types , DataOutputStream s ) throws IOException { } public static UnresolvedType [ ] readArray ( DataInputStream s ) throws IOException { } public String getNameAsIdentifier ( ) { } public String getPackageNameAsIdentifier ( ) { } public String getPackageName ( ) { } public UnresolvedType [ ] getTypeParameters ( ) { } public String getClassName ( ) { } public TypeVariable [ ] getTypeVariables ( ) { } public static class TypeKind { public static final UnresolvedType . TypeKind PRIMITIVE = new UnresolvedType . TypeKind ( "primitive" ) ; public static final UnresolvedType . TypeKind SIMPLE = new UnresolvedType . TypeKind ( "simple" ) ; public static final UnresolvedType . TypeKind RAW = new UnresolvedType . TypeKind ( "raw" ) ; public static final UnresolvedType . TypeKind GENERIC = new UnresolvedType . TypeKind ( "generic" ) ; public static final UnresolvedType . TypeKind PARAMETERIZED = new UnresolvedType . TypeKind ( "parameterized" ) ; public static final UnresolvedType . TypeKind TYPE_VARIABLE = new UnresolvedType . TypeKind ( "type_variable" ) ;

Fix:
String sig = getErasureSignature ( ) ;