Buggy code:
public class BindingKeyResolver extends BindingKeyParser { Compiler compiler ; Binding compilerBinding ; char [ ] [ ] compoundName ; int dimension ; LookupEnvironment environment ; ReferenceBinding genericType ; MethodBinding methodBinding ; AnnotationBinding annotationBinding ; char [ ] secondarySimpleName ; CompilationUnitDeclaration parsedUnit ; BlockScope scope ; TypeBinding typeBinding ; TypeDeclaration typeDeclaration ; ArrayList types = new ArrayList ( ) ; int rank = 0 ; int wildcardRank ; CompilationUnitDeclaration outerMostParsedUnit ; HashtableOfObject resolvedUnits ; private BindingKeyResolver ( BindingKeyParser parser , Compiler compiler , LookupEnvironment environment , int wildcardRank , CompilationUnitDeclaration outerMostParsedUnit , HashtableOfObject parsedUnits ) { } public BindingKeyResolver ( String key , Compiler compiler , LookupEnvironment environment ) { } public char [ ] [ ] compoundName ( ) { } public void consumeAnnotation ( ) { } public void consumeArrayDimension ( char [ ] brakets ) { } public void consumeBaseType ( char [ ] baseTypeSig ) { } public void consumeCapture ( final int position ) { } public void consumeException ( ) { } public void consumeField ( char [ ] fieldName ) { } public void consumeParameterizedGenericMethod ( ) { } public void consumeLocalType ( char [ ] uniqueKey ) { } public void consumeLocalVar ( char [ ] varName , int occurrenceCount ) { } public void consumeMethod ( char [ ] selector , char [ ] signature ) { } public void consumeMemberType ( char [ ] simpleTypeName ) { } public void consumePackage ( char [ ] pkgName ) { } public void consumeParameterizedType ( char [ ] simpleTypeName , boolean isRaw ) { } public void consumeParser ( BindingKeyParser parser ) { } public void consumeScope ( int scopeNumber ) { } public void consumeRawType ( ) { } public void consumeSecondaryType ( char [ ] simpleTypeName ) { } public void consumeFullyQualifiedName ( char [ ] fullyQualifiedName ) { } public void consumeTopLevelType ( ) { } public void consumeKey ( ) { } public void consumeTypeVariable ( char [ ] position , char [ ] typeVariableName ) { } public void consumeTypeWithCapture ( ) { } public void consumeWildCard ( int kind ) { switch ( kind ) { case Wildcard . EXTENDS : case Wildcard . SUPER : BindingKeyResolver boundResolver = ( ( BindingKeyResolver ) ( this . types . get ( 0 ) ) ) ; this . typeBinding = this . environment . createWildcard ( ( ( ReferenceBinding ) ( this . typeBinding ) ) , this . wildcardRank , ( ( TypeBinding ) ( boundResolver . compilerBinding ) ) , null , kind ) ; break ; case Wildcard . UNBOUND : <START_BUG> this . typeBinding = this . environment . createWildcard ( ( ( ReferenceBinding ) ( this . typeBinding ) ) , ( ( rank ) ++ ) , null , null , kind ) ; <END_BUG> break ; } } public AnnotationBinding getAnnotationBinding ( ) { } private TypeBinding getArrayBinding ( int dim , TypeBinding binding ) { } private TypeBinding getBaseTypeBinding ( char [ ] signature ) { } private TypeBinding getBinaryBinding ( ) { } public CompilationUnitDeclaration getCompilationUnitDeclaration ( ) { } public Binding getCompilerBinding ( ) { } private TypeBinding getTypeBinding ( char [ ] simpleTypeName ) { } private TypeBinding [ ] getTypeBindingArguments ( ) { } public void malformedKey ( ) { } public BindingKeyParser newParser ( ) { } public String toString ( ) { } }

Fix:
this . typeBinding = this . environment . createWildcard ( ( ( ReferenceBinding ) ( this . typeBinding ) ) , ( ( this . rank ) ++ ) , null , null , kind ) ;