Buggy code:
i < max ; i ++ ) { findNextTypeBinding ( i , scope , packageBinding ) ; if ( ! ( this . resolvedType . isValidBinding ( ) ) ) { reportInvalidType ( scope ) ; for ( int j = i ; j < max ; j ++ ) { TypeReference [ ] args = this . typeArguments [ j ] ; if ( args != null ) { int argLength = args . length ; for ( int k = 0 ; k < argLength ; k ++ ) { TypeReference typeArgument = args [ k ] ; if ( isClassScope ) { typeArgument . resolveType ( ( ( ClassScope ) ( scope ) ) ) ; } else { typeArgument . resolveType ( ( ( BlockScope ) ( scope ) ) ) ; } } } } return null ; } ReferenceBinding currentType = ( ( ReferenceBinding ) ( this . resolvedType ) ) ; if ( qualifyingType == null ) { qualifyingType = currentType . enclosingType ( ) ; if ( qualifyingType != null ) { qualifyingType = ( currentType . isStatic ( ) ) ? ( ( ReferenceBinding ) ( scope . environment ( ) . convertToRawType ( qualifyingType , false ) ) ) : scope . environment ( ) . convertToParameterizedType ( qualifyingType ) ; } } else { if ( ( typeIsConsistent && ( currentType . isStatic ( ) ) ) && ( ( qualifyingType . isParameterizedTypeWithActualArguments ( ) ) || ( qualifyingType . isGenericType ( ) ) ) ) { scope . problemReporter ( ) . staticMemberOfParameterizedType ( this , scope . environment ( ) . createParameterizedType ( ( ( ReferenceBinding ) ( currentType . erasure ( ) ) ) , null , qualifyingType ) , i ) ; typeIsConsistent = false ; } ReferenceBinding enclosingType = currentType . enclosingType ( ) ; if ( ( enclosingType != null ) && ( ( enclosingType . erasure ( ) ) != ( qualifyingType . erasure ( ) ) ) ) { qualifyingType = enclosingType ; } } TypeReference [ ] args = this . typeArguments [ i ] ; if ( args != null ) { TypeReference keep = null ; if ( isClassScope ) { keep = ( ( ClassScope ) ( scope ) ) . superTypeReference ; ( ( ClassScope ) ( scope ) ) . superTypeReference = null ; } int argLength = args . length ; TypeBinding [ ] argTypes = new TypeBinding [ argLength ] ; boolean argHasError = false ; ReferenceBinding currentOriginal = ( ( ReferenceBinding ) ( currentType . original ( ) ) ) ; for ( int j = 0 ; j < argLength ; j ++ ) { TypeReference arg = args [ j ] ; TypeBinding argType = ( isClassScope ) ? arg . resolveTypeArgument ( ( ( ClassScope ) ( scope ) ) , currentOriginal , j ) : arg . resolveTypeArgument ( ( ( BlockScope ) ( scope ) ) , currentOriginal , j ) ; if ( argType == null ) { argHasError = true ; } else { argTypes [ j ] = argType ; } } if ( argHasError ) { return null ; } if ( isClassScope ) { ( ( ClassScope ) ( scope ) ) . superTypeReference = keep ; if ( ( ( ClassScope ) ( scope ) ) . detectHierarchyCycle ( currentOriginal , this ) ) return null ; } TypeVariableBinding [ ] typeVariables = currentOriginal . typeVariables ( ) ; if ( typeVariables == ( Binding . NO_TYPE_VARIABLES ) ) { <START_BUG> if ( ( scope . compilerOptions ( ) . originalSourceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) { <END_BUG> scope . problemReporter ( ) . nonGenericTypeCannotBeParameterized ( i , this , currentType , argTypes ) ; return null ; } this . resolvedType = ( ( qualifyingType != null ) && ( qualifyingType . isParameterizedType ( ) ) ) ? scope . environment ( ) . createParameterizedType ( currentOriginal , null , qualifyingType ) : currentType ; if ( ( this . dimensions ) > 0 ) { if ( ( this . dimensions ) > 255 ) scope . problemReporter ( ) . tooManyDimensions ( this ) ; this . resolvedType = scope . createArrayType ( this . resolvedType , this . dimensions ) ; } return this . resolvedType ; } else if ( argLength != ( typeVariables . length ) ) { scope . problemReporter ( ) . incorrectArityForParameterizedType ( this , currentType , argTypes , i ) ; return null ; } if ( typeIsConsistent && ( ! ( currentType . isStatic ( ) ) ) ) { ReferenceBinding actualEnclosing = currentType . enclosingType ( ) ; if ( ( actualEnclosing != null ) && ( actualEnclosing . isRawType ( ) ) ) { scope . problemReporter ( ) . rawMemberTypeCannotBeParameterized ( this , scope . environment ( ) . createRawType ( currentOriginal , actualEnclosing ) , argTypes ) ; typeIsConsistent = false ; } } ParameterizedTypeBinding parameterizedType = scope . environment ( ) . createParameterizedType ( currentOriginal , argTypes , qualifyingType ) ; if ( checkBounds ) parameterizedType . boundCheck ( scope , args ) ; else scope . deferBoundCheck ( this ) ; qualifyingType = parameterizedType ; } else { ReferenceBinding currentOriginal = ( ( ReferenceBinding ) ( currentType . original ( ) ) ) ; if ( isClassScope ) if ( ( ( ClassScope ) ( scope ) ) . detectHierarchyCycle ( currentOriginal , this ) ) return null ; if ( currentOriginal . isGenericType ( ) ) { if ( ( typeIsConsistent && ( qualifyingType != null ) ) && ( qualifyingType . isParameterizedType ( ) ) ) { scope . problemReporter ( ) . parameterizedMemberTypeMissingArguments ( this , scope . environment ( ) . createParameterizedType ( currentOriginal , null , qualifyingType ) , i ) ; typeIsConsistent = false ; }

Fix:
if ( ( scope . compilerOptions ( ) . sourceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) {