Buggy code:
public TypeBinding resolveType ( BlockScope scope ) { if ( ( ( this . anonymousType ) == null ) && ( ( this . enclosingInstance ) == null ) ) { return super . resolveType ( scope ) ; } constant = Constant . NotAConstant ; TypeBinding enclosingInstanceType = null ; TypeBinding receiverType = null ; boolean hasError = false ; boolean enclosingInstanceContainsCast = false ; boolean argsContainCast = false ; if ( ( enclosingInstance ) != null ) { if ( ( enclosingInstance ) instanceof CastExpression ) { enclosingInstance . bits |= ASTNode . DisableUnnecessaryCastCheck ; enclosingInstanceContainsCast = true ; } if ( ( enclosingInstanceType = enclosingInstance . resolveType ( scope ) ) == null ) { hasError = true ; } else if ( ( enclosingInstanceType . isBaseType ( ) ) || ( enclosingInstanceType . isArrayType ( ) ) ) { scope . problemReporter ( ) . illegalPrimitiveOrArrayTypeForEnclosingInstance ( enclosingInstanceType , enclosingInstance ) ; hasError = true ; } else if ( ( type ) instanceof QualifiedTypeReference ) { scope . problemReporter ( ) . illegalUsageOfQualifiedTypeReference ( ( ( QualifiedTypeReference ) ( type ) ) ) ; hasError = true ; } else { receiverType = ( ( SingleTypeReference ) ( type ) ) . resolveTypeEnclosing ( scope , ( ( ReferenceBinding ) ( enclosingInstanceType ) ) ) ; if ( ( receiverType != null ) && enclosingInstanceContainsCast ) { CastExpression . checkNeedForEnclosingInstanceCast ( scope , enclosingInstance , enclosingInstanceType , receiverType ) ; } } } else { if ( ( this . type ) == null ) { receiverType = scope . enclosingSourceType ( ) ; } else { receiverType = this . type . resolveType ( scope , true ) ; checkParameterizedAllocation : { if ( receiverType == null ) break checkParameterizedAllocation ; if ( ( this . type ) instanceof ParameterizedQualifiedTypeReference ) { ReferenceBinding currentType = ( ( ReferenceBinding ) ( receiverType ) ) ; do { if ( ( ( currentType . modifiers ) & ( ClassFileConstants . AccStatic ) ) != 0 ) break checkParameterizedAllocation ; if ( currentType . isRawType ( ) ) break checkParameterizedAllocation ; } while ( ( currentType = currentType . enclosingType ( ) ) != null ) ; ParameterizedQualifiedTypeReference qRef = ( ( ParameterizedQualifiedTypeReference ) ( this . type ) ) ; for ( int i = ( qRef . typeArguments . length ) - 2 ; i >= 0 ; i -- ) { if ( ( qRef . typeArguments [ i ] ) != null ) { scope . problemReporter ( ) . illegalQualifiedParameterizedTypeAllocation ( this . type , receiverType ) ; break ; } } } } } } if ( receiverType == null ) { hasError = true ; } else if ( ( ( ReferenceBinding ) ( receiverType ) ) . isFinal ( ) ) { if ( ( this . anonymousType ) != null ) { if ( ! ( receiverType . isEnum ( ) ) ) { scope . problemReporter ( ) . anonymousClassCannotExtendFinalClass ( type , receiverType ) ; hasError = true ; } } else if ( ! ( receiverType . canBeInstantiated ( ) ) ) { scope . problemReporter ( ) . cannotInstantiate ( type , receiverType ) ; return this . resolvedType = receiverType ; } } if ( ( this . typeArguments ) != null ) { int length = this . typeArguments . length ; this . genericTypeArguments = new TypeBinding [ length ] ; for ( int i = 0 ; i < length ; i ++ ) { TypeBinding argType = this . typeArguments [ i ] . resolveType ( scope , true ) ; if ( argType == null ) return null ; this . genericTypeArguments [ i ] = argType ; } } <START_BUG> TypeBinding [ ] argumentTypes = NoParameters ; <END_BUG> if ( ( arguments ) != null ) { int length = arguments . length ; argumentTypes = new TypeBinding [ length ] ; for ( int i = 0 ; i < length ; i ++ ) { Expression argument = this . arguments [ i ] ; if ( argument instanceof CastExpression ) { argument . bits |= ASTNode . DisableUnnecessaryCastCheck ; argsContainCast = true ; } if ( ( argumentTypes [ i ] = argument . resolveType ( scope ) ) == null ) { hasError = true ; } } } if ( hasError ) return this . resolvedType = receiverType ; if ( ( this . anonymousType ) == null ) { if ( ! ( receiverType . canBeInstantiated ( ) ) ) { scope . problemReporter ( ) . cannotInstantiate ( type , receiverType ) ; return this . resolvedType = receiverType ; } ReferenceBinding allocationType = ( ( ReferenceBinding ) ( receiverType ) ) ; if ( ( this . binding = scope . getConstructor ( allocationType , argumentTypes , this ) ) . isValidBinding ( ) ) { if ( isMethodUseDeprecated ( binding , scope , true ) ) { scope . problemReporter ( ) . deprecatedMethod ( this . binding , this ) ; } ASTNode . checkInvocationArguments ( scope , null , allocationType , binding , this . arguments , argumentTypes , argsContainCast , this ) ; } else { if ( ( this . binding . declaringClass ) == null ) { this . binding . declaringClass = allocationType ; } scope . problemReporter ( ) . invalidConstructor ( this , this . binding ) ; return this . resolvedType = receiverType ; } ReferenceBinding expectedType = this . binding . declaringClass . enclosingType ( ) ; if ( expectedType != enclosingInstanceType ) scope . compilationUnitScope ( ) . recordTypeConversion ( expectedType , enclosingInstanceType ) ; if ( ( enclosingInstanceType . isCompatibleWith ( expectedType ) ) || ( scope . isBoxingCompatibleWith ( enclosingInstanceType , expectedType ) ) ) { enclosingInstance . computeConversion ( scope , expectedType , enclosingInstanceType ) ; return this . resolvedType = receiverType ; }

Fix:
TypeBinding [ ] argumentTypes = Binding . NO_PARAMETERS ;