Buggy code:
this . resolvedTypeArguments = new TypeBinding [ length ] ; for ( int i = 0 ; i < length ; i ++ ) { TypeReference typeReference = this . typeArguments [ i ] ; if ( ( this . resolvedTypeArguments [ i ] = typeReference . resolveType ( scope , true ) ) == null ) { this . typeArgumentsHaveErrors = true ; } if ( ( this . typeArgumentsHaveErrors ) && ( typeReference instanceof Wildcard ) ) { scope . problemReporter ( ) . illegalUsageOfWildcard ( typeReference ) ; } } if ( ( this . typeArgumentsHaveErrors ) || ( lhsType == null ) ) return this . resolvedType = null ; if ( ( isConstructorReference ( ) ) && ( lhsType . isRawType ( ) ) ) { scope . problemReporter ( ) . rawConstructorReferenceNotWithExplicitTypeArguments ( this . typeArguments ) ; return this . resolvedType = null ; } } if ( ( this . typeArgumentsHaveErrors ) || ( lhsType == null ) ) return this . resolvedType = null ; if ( ( lhsType . problemId ( ) ) == ( ProblemReasons . AttemptToBypassDirectSuper ) ) lhsType = lhsType . closestMatch ( ) ; if ( ( lhsType == null ) || ( ! ( lhsType . isValidBinding ( ) ) ) ) return this . resolvedType = null ; this . receiverType = lhsType ; this . haveReceiver = true ; if ( ( this . lhs ) instanceof NameReference ) { if ( ( ( this . lhs . bits ) & ( ASTNode . RestrictiveFlagMASK ) ) == ( Binding . TYPE ) ) { this . haveReceiver = false ; } else if ( isConstructorReference ( ) ) { scope . problemReporter ( ) . invalidType ( this . lhs , new ProblemReferenceBinding ( ( ( NameReference ) ( this . lhs ) ) . getName ( ) , null , ProblemReasons . NotFound ) ) ; return this . resolvedType = null ; } } else if ( ( this . lhs ) instanceof TypeReference ) { this . haveReceiver = false ; } if ( ( ( ! ( this . haveReceiver ) ) && ( ! ( this . lhs . isSuper ( ) ) ) ) && ( ! ( this . isArrayConstructorReference ( ) ) ) ) this . receiverType = lhsType . capture ( scope , this . sourceStart , this . sourceEnd ) ; if ( ! ( lhsType . isRawType ( ) ) ) this . binding = this . exactMethodBinding = ( isMethodReference ( ) ) ? scope . getExactMethod ( lhsType , this . selector , this ) : scope . getExactConstructor ( lhsType , this ) ; if ( ( isConstructorReference ( ) ) && ( ! ( lhsType . canBeInstantiated ( ) ) ) ) { scope . problemReporter ( ) . cannotInstantiate ( this . lhs , lhsType ) ; return this . resolvedType = null ; } if ( ( ( this . lhs ) instanceof TypeReference ) && ( ( ( TypeReference ) ( this . lhs ) ) . hasNullTypeAnnotation ( ) ) ) { scope . problemReporter ( ) . nullAnnotationUnsupportedLocation ( ( ( TypeReference ) ( this . lhs ) ) ) ; } if ( ( isConstructorReference ( ) ) && ( lhsType . isArrayType ( ) ) ) { final TypeBinding leafComponentType = lhsType . leafComponentType ( ) ; if ( ! ( leafComponentType . isReifiable ( ) ) ) { scope . problemReporter ( ) . illegalGenericArray ( leafComponentType , this ) ; return this . resolvedType = null ; } if ( ( this . typeArguments ) != null ) { scope . problemReporter ( ) . invalidTypeArguments ( this . typeArguments ) ; return this . resolvedType = null ; } this . binding = this . exactMethodBinding = scope . getExactConstructor ( lhsType , this ) ; } <START_BUG> if ( ( isMethodReference ( ) ) && ( this . haveReceiver ) ) { <END_BUG> this . receiverVariable = new LocalVariableBinding ( ( ( ReferenceExpression . SecretReceiverVariableName ) + ( this . nameSourceStart ) ) . toCharArray ( ) , this . lhs . resolvedType , ClassFileConstants . AccDefault , false ) ; scope . addLocalVariable ( this . receiverVariable ) ; this . receiverVariable . setConstant ( Constant . NotAConstant ) ; this . receiverVariable . useFlag = LocalVariableBinding . USED ; } if ( ( ( this . expectedType ) == null ) && ( ( this . expressionContext ) == ( ExpressionContext . INVOCATION_CONTEXT ) ) ) { return new PolyTypeBinding ( this ) ; } } else { lhsType = this . lhs . resolvedType ; if ( ( this . typeArgumentsHaveErrors ) || ( lhsType == null ) ) return this . resolvedType = null ; } super . resolveType ( scope ) ; if ( ( ( this . descriptor ) == null ) || ( ! ( this . descriptor . isValidBinding ( ) ) ) ) return this . resolvedType = null ; TypeBinding [ ] descriptorParameters = descriptorParametersAsArgumentExpressions ( ) ; if ( lhsType . isBaseType ( ) ) { scope . problemReporter ( ) . errorNoMethodFor ( this . lhs , lhsType , this . selector , descriptorParameters ) ; return this . resolvedType = null ; } final int parametersLength = descriptorParameters . length ; if ( ( isConstructorReference ( ) ) && ( lhsType . isArrayType ( ) ) ) { if ( ( parametersLength != 1 ) || ( ( scope . parameterCompatibilityLevel ( descriptorParameters [ 0 ] , TypeBinding . INT ) ) == ( Scope . NOT_COMPATIBLE ) ) ) { scope . problemReporter ( ) . invalidArrayConstructorReference ( this , lhsType , descriptorParameters ) ; return this . resolvedType = null ; }

Fix:
if ( ( ( isMethodReference ( ) ) && ( this . haveReceiver ) ) && ( ( this . original ) == ( this ) ) ) {