Buggy code:
public MethodBinding findMethodForArray ( ArrayBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public MethodBinding findMethodInSuperInterfaces ( ReferenceBinding currentType , char [ ] selector , ObjectVector found , MethodBinding matchingMethod ) { } public ReferenceBinding findType ( char [ ] typeName , PackageBinding declarationPackage , PackageBinding invocationPackage ) { } public LocalVariableBinding findVariable ( char [ ] variable ) { } public Binding getBinding ( char [ ] name , int mask , InvocationSite invocationSite , boolean needResolve ) { } public MethodBinding getConstructor ( ReferenceBinding receiverType , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final PackageBinding getCurrentPackage ( ) { } public int getDeclarationModifiers ( ) { } public FieldBinding getField ( TypeBinding receiverType , char [ ] fieldName , InvocationSite invocationSite ) { } public MethodBinding getImplicitMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final ReferenceBinding getJavaIoSerializable ( ) { } public final ReferenceBinding getJavaLangAnnotationAnnotation ( ) { } public final ReferenceBinding getJavaLangAssertionError ( ) { } public final ReferenceBinding getJavaLangClass ( ) { } public final ReferenceBinding getJavaLangCloneable ( ) { } public final ReferenceBinding getJavaLangEnum ( ) { } public final ReferenceBinding getJavaLangIterable ( ) { } public final ReferenceBinding getJavaLangObject ( ) { } public final ReferenceBinding getJavaLangString ( ) { } public final ReferenceBinding getJavaLangThrowable ( ) { } public final ReferenceBinding getJavaUtilIterator ( ) { } public final ReferenceBinding getMemberType ( char [ ] typeName , ReferenceBinding enclosingType ) { } public MethodBinding getMethod ( TypeBinding receiverType , char [ ] selector , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final Binding getPackage ( char [ ] [ ] compoundName ) { } public final TypeBinding getType ( char [ ] name ) { } public final TypeBinding getType ( char [ ] name , PackageBinding packageBinding ) { } public final TypeBinding getType ( char [ ] [ ] compoundName , int typeNameLength ) { } final Binding getTypeOrPackage ( char [ ] name , int mask ) { } public final Binding getTypeOrPackage ( char [ ] [ ] compoundName ) { } public static TypeBinding [ ] greaterLowerBound ( TypeBinding [ ] types ) { } public static ReferenceBinding [ ] greaterLowerBound ( ReferenceBinding [ ] types ) { } public CaseStatement innermostSwitchCase ( ) { } public boolean isBoxingCompatibleWith ( TypeBinding left , TypeBinding right ) { } public final boolean isDefinedInField ( FieldBinding field ) { } public final boolean isDefinedInMethod ( MethodBinding method ) { } public final boolean isDefinedInSameUnit ( ReferenceBinding type ) { } public final boolean isDefinedInType ( ReferenceBinding type ) { } public boolean isInsideCase ( CaseStatement caseStatement ) { } public boolean isInsideDeprecatedCode ( ) { } private TypeBinding leastContainingInvocation ( TypeBinding mec , Set invocations , List lubStack ) { if ( invocations == null ) return mec ; int length = invocations . size ( ) ; Iterator iter = invocations . iterator ( ) ; if ( length == 1 ) return ( ( TypeBinding ) ( iter . next ( ) ) ) ; int argLength = mec . typeVariables ( ) . length ; if ( argLength == 0 ) return mec ; TypeBinding [ ] bestArguments = new TypeBinding [ argLength ] ; while ( iter . hasNext ( ) ) { TypeBinding invocation = ( ( TypeBinding ) ( iter . next ( ) ) ) ; TypeVariableBinding [ ] invocationVariables = invocation . typeVariables ( ) ; if ( invocation . isGenericType ( ) ) { for ( int i = 0 ; i < argLength ; i ++ ) { TypeBinding bestArgument = leastContainingTypeArgument ( bestArguments [ i ] , invocationVariables [ i ] , ( ( ReferenceBinding ) ( mec ) ) , i , lubStack ) ; if ( bestArgument == null ) return null ; bestArguments [ i ] = bestArgument ; } } else if ( invocation . isParameterizedType ( ) ) { ParameterizedTypeBinding parameterizedType = ( ( ParameterizedTypeBinding ) ( invocation ) ) ; for ( int i = 0 ; i < argLength ; i ++ ) { TypeBinding bestArgument = leastContainingTypeArgument ( bestArguments [ i ] , parameterizedType . arguments [ i ] , ( ( ReferenceBinding ) ( mec ) ) , i , lubStack ) ; if ( bestArgument == null ) return null ; bestArguments [ i ] = bestArgument ; } } else if ( invocation . isRawType ( ) ) { return invocation ; } } <START_BUG> return createParameterizedType ( ( ( ReferenceBinding ) ( mec . erasure ( ) ) ) , bestArguments , null ) ; <END_BUG> } private TypeBinding leastContainingTypeArgument ( TypeBinding u , TypeBinding v , ReferenceBinding genericType , int rank , List lubStack ) { } public TypeBinding lowerUpperBound ( TypeBinding [ ] types ) { } private TypeBinding lowerUpperBound ( TypeBinding [ ] types , List lubStack ) { } public final MethodScope methodScope ( ) { } private TypeBinding [ ] minimalErasedCandidates ( TypeBinding [ ] types , Map allInvocations ) { } protected final MethodBinding mostSpecificClassMethodBinding ( MethodBinding [ ] visible , int visibleSize , InvocationSite invocationSite ) { } protected final MethodBinding mostSpecificInterfaceMethodBinding ( MethodBinding [ ] visible , int visibleSize , InvocationSite invocationSite ) { } protected final MethodBinding mostSpecificMethodBinding ( MethodBinding [ ] visible , int visibleSize , TypeBinding [ ] argumentTypes , InvocationSite invocationSite ) { } public final ClassScope outerMostClassScope ( ) { } public final MethodScope outerMostMethodScope ( ) { } protected int parameterCompatibilityLevel ( MethodBinding method , TypeBinding [ ] arguments ) { } private int parameterCompatibilityLevel ( TypeBinding arg , TypeBinding param , LookupEnvironment env ) { } public abstract ProblemReporter problemReporter ( ) { } public final CompilationUnitDeclaration referenceCompilationUnit ( ) { } public ReferenceContext referenceContext ( ) { } int startIndex ( ) { } }

Fix:
return createParameterizedType ( ( ( ReferenceBinding ) ( mec . erasure ( ) ) ) , bestArguments , mec . enclosingType ( ) ) ;