Buggy code:
public void addDefaultAbstractMethods ( ) { } public FieldBinding addSyntheticFieldForInnerclass ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding addSyntheticFieldForInnerclass ( ReferenceBinding enclosingType ) { } public FieldBinding addSyntheticFieldForClassLiteral ( TypeBinding targetType , BlockScope blockScope ) { } public FieldBinding addSyntheticFieldForAssert ( BlockScope blockScope ) { } public FieldBinding addSyntheticFieldForEnumValues ( ) { } public SyntheticMethodBinding addSyntheticMethod ( FieldBinding targetField , boolean isReadAccess ) { } public SyntheticMethodBinding addSyntheticEnumMethod ( char [ ] selector ) { } public SyntheticMethodBinding addSyntheticMethod ( MethodBinding targetMethod , boolean isSuperAccess ) { } public SyntheticMethodBinding addSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge , MethodBinding targetMethod ) { } public void collectSubstitutes ( Scope currentScope , TypeBinding otherType , Map substitutes , int constraint ) { } public int kind ( ) { } public char [ ] computeUniqueKey ( boolean isLeaf ) { } void faultInTypesForFieldsAndMethods ( ) { } public FieldBinding [ ] fields ( ) { } public char [ ] genericTypeSignature ( ) { } public char [ ] genericSignature ( ) { } public long getAnnotationTagBits ( ) { } public MethodBinding [ ] getDefaultAbstractMethods ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , CompilationUnitScope refScope ) { } public FieldBinding getField ( char [ ] fieldName , boolean needResolve ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public FieldBinding getSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding getSyntheticField ( ReferenceBinding targetEnclosingType , boolean onlyExactMatch ) { } public SyntheticMethodBinding getSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge ) { } public boolean isEquivalentTo ( TypeBinding otherType ) { } public boolean isGenericType ( ) { } public ReferenceBinding [ ] memberTypes ( ) { } public FieldBinding getUpdatedFieldBinding ( FieldBinding targetField , ReferenceBinding newDeclaringClass ) { } public MethodBinding getUpdatedMethodBinding ( MethodBinding targetMethod , ReferenceBinding newDeclaringClass ) { } public boolean hasMemberTypes ( ) { } public MethodBinding [ ] methods ( ) { } private FieldBinding resolveTypeFor ( FieldBinding field ) { } private MethodBinding resolveTypesFor ( MethodBinding method ) { if ( ( ( method . modifiers ) & ( AccUnresolved ) ) == 0 ) return method ; if ( ( this . scope . compilerOptions ( ) . sourceLevel ) >= ( ClassFileConstants . JDK1_5 ) ) { if ( ( ( method . getAnnotationTagBits ( ) ) & ( AnnotationDeprecated ) ) != 0 ) method . modifiers |= AccDeprecated ; else if ( ( ( method . modifiers ) & ( AccDeprecated ) ) != 0 ) this . scope . problemReporter ( ) . missingDeprecatedAnnotationForMethod ( method . sourceMethod ( ) ) ; } if ( ( isViewedAsDeprecated ( ) ) && ( ! ( method . isDeprecated ( ) ) ) ) method . modifiers |= AccDeprecatedImplicitly ; AbstractMethodDeclaration methodDecl = method . sourceMethod ( ) ; if ( methodDecl == null ) return null ; TypeParameter [ ] typeParameters = methodDecl . typeParameters ( ) ; if ( typeParameters != null ) { methodDecl . scope . connectTypeVariables ( typeParameters ) ; for ( int i = 0 , paramLength = typeParameters . length ; i < paramLength ; i ++ ) typeParameters [ i ] . checkBounds ( methodDecl . scope ) ; } TypeReference [ ] exceptionTypes = methodDecl . thrownExceptions ; if ( exceptionTypes != null ) { int size = exceptionTypes . length ; method . thrownExceptions = new ReferenceBinding [ size ] ; ReferenceBinding throwable = this . scope . getJavaLangThrowable ( ) ; int count = 0 ; ReferenceBinding resolvedExceptionType ; for ( int i = 0 ; i < size ; i ++ ) { resolvedExceptionType = ( ( ReferenceBinding ) ( exceptionTypes [ i ] . resolveType ( methodDecl . scope , true ) ) ) ; if ( resolvedExceptionType == null ) continue ; <START_BUG> if ( ( resolvedExceptionType . isGenericType ( ) ) || ( resolvedExceptionType . isParameterizedType ( ) ) ) { <END_BUG> methodDecl . scope . problemReporter ( ) . invalidParameterizedExceptionType ( resolvedExceptionType , exceptionTypes [ i ] ) ; continue ; } if ( ( throwable != resolvedExceptionType ) && ( ! ( throwable . isSuperclassOf ( resolvedExceptionType ) ) ) ) { methodDecl . scope . problemReporter ( ) . cannotThrowType ( this , methodDecl , exceptionTypes [ i ] , resolvedExceptionType ) ; continue ; } if ( ( ( resolvedExceptionType . modifiers ) & ( AccGenericSignature ) ) != 0 ) method . modifiers |= AccGenericSignature ; method . thrownExceptions [ ( count ++ ) ] = resolvedExceptionType ; } if ( count < size ) System . arraycopy ( method . thrownExceptions , 0 , ( method . thrownExceptions = new ReferenceBinding [ count ] ) , 0 , count ) ; } boolean foundArgProblem = false ; Argument [ ] arguments = methodDecl . arguments ; if ( arguments != null ) { int size = arguments . length ; method . parameters = new TypeBinding [ size ] ; for ( int i = 0 ; i < size ; i ++ ) { Argument arg = arguments [ i ] ; TypeBinding parameterType = arg . type . resolveType ( methodDecl . scope , true ) ; if ( parameterType == null ) { foundArgProblem = true ; } else if ( parameterType == ( VoidBinding ) ) { methodDecl . scope . problemReporter ( ) . argumentTypeCannotBeVoid ( this , methodDecl , arg ) ; foundArgProblem = true ; } else if ( ( parameterType . isArrayType ( ) ) && ( ( ( ( ArrayBinding ) ( parameterType ) ) . leafComponentType ) == ( VoidBinding ) ) ) { methodDecl . scope . problemReporter ( ) . argumentTypeCannotBeVoidArray ( this , methodDecl , arg ) ; foundArgProblem = true ; } else { TypeBinding leafType = parameterType . leafComponentType ( ) ;

Fix:
if ( ( resolvedExceptionType . isGenericType ( ) ) || ( resolvedExceptionType . isBoundParameterizedType ( ) ) ) {