Buggy code:
return this . resolvedType = receiverType ; } ReferenceBinding allocationType = ( ( ReferenceBinding ) ( receiverType ) ) ; if ( ( this . binding = scope . getConstructor ( allocationType , argumentTypes , this ) ) . isValidBinding ( ) ) { if ( isMethodUseDeprecated ( this . binding , scope , true ) ) { scope . problemReporter ( ) . deprecatedMethod ( this . binding , this ) ; } ASTNode . checkInvocationArguments ( scope , null , allocationType , this . binding , this . arguments , argumentTypes , argsContainCast , this , ( ( ( this . bits ) & ( ASTNode . Unchecked ) ) != 0 ) ) ; if ( ( ( this . typeArguments ) != null ) && ( ( this . binding . original ( ) . typeVariables ) == ( Binding . NO_TYPE_VARIABLES ) ) ) { scope . problemReporter ( ) . unnecessaryTypeArgumentsForMethodInvocation ( this . binding , this . genericTypeArguments , this . typeArguments ) ; } } else { if ( ( this . binding . declaringClass ) == null ) { this . binding . declaringClass = allocationType ; } if ( ( ( this . type ) != null ) && ( ! ( this . type . resolvedType . isValidBinding ( ) ) ) ) { return null ; } scope . problemReporter ( ) . invalidConstructor ( this , this . binding ) ; return this . resolvedType = receiverType ; } if ( ( ( this . binding . tagBits ) & ( TagBits . HasMissingType ) ) != 0 ) { scope . problemReporter ( ) . missingTypeInConstructor ( this , this . binding ) ; } ReferenceBinding expectedType = this . binding . declaringClass . enclosingType ( ) ; if ( expectedType != enclosingInstanceType ) scope . compilationUnitScope ( ) . recordTypeConversion ( expectedType , enclosingInstanceType ) ; if ( ( enclosingInstanceType . isCompatibleWith ( expectedType ) ) || ( scope . isBoxingCompatibleWith ( enclosingInstanceType , expectedType ) ) ) { this . enclosingInstance . computeConversion ( scope , expectedType , enclosingInstanceType ) ; return this . resolvedType = receiverType ; } scope . problemReporter ( ) . typeMismatchError ( enclosingInstanceType , expectedType , this . enclosingInstance , null ) ; return this . resolvedType = receiverType ; } ReferenceBinding superType = ( ( ReferenceBinding ) ( receiverType ) ) ; if ( superType . isTypeVariable ( ) ) { superType = new ProblemReferenceBinding ( new char [ ] [ ] { superType . sourceName ( ) } , superType , ProblemReasons . IllegalSuperTypeVariable ) ; scope . problemReporter ( ) . invalidType ( this , superType ) ; return null ; } else if ( ( ( this . type ) != null ) && ( superType . isEnum ( ) ) ) { scope . problemReporter ( ) . cannotInstantiate ( this . type , superType ) ; return this . resolvedType = superType ; } ReferenceBinding anonymousSuperclass = ( superType . isInterface ( ) ) ? scope . getJavaLangObject ( ) : superType ; scope . addAnonymousType ( this . anonymousType , superType ) ; this . anonymousType . resolve ( scope ) ; this . resolvedType = this . anonymousType . binding ; if ( ( ( this . resolvedType . tagBits ) & ( TagBits . HierarchyHasProblems ) ) != 0 ) { return null ; } MethodBinding inheritedBinding = scope . getConstructor ( anonymousSuperclass , argumentTypes , this ) ; if ( ! ( inheritedBinding . isValidBinding ( ) ) ) { if ( ( inheritedBinding . declaringClass ) == null ) { inheritedBinding . declaringClass = anonymousSuperclass ; } if ( ( ( this . type ) != null ) && ( ! ( this . type . resolvedType . isValidBinding ( ) ) ) ) { return null ; } scope . problemReporter ( ) . invalidConstructor ( this , inheritedBinding ) ; return this . resolvedType ; } if ( ( ( inheritedBinding . tagBits ) & ( TagBits . HasMissingType ) ) != 0 ) { scope . problemReporter ( ) . missingTypeInConstructor ( this , inheritedBinding ) ; } if ( ( this . enclosingInstance ) != null ) { ReferenceBinding targetEnclosing = inheritedBinding . declaringClass . enclosingType ( ) ; if ( targetEnclosing == null ) { scope . problemReporter ( ) . unnecessaryEnclosingInstanceSpecification ( this . enclosingInstance , superType ) ; return this . resolvedType ; } else if ( ( ! ( enclosingInstanceType . isCompatibleWith ( targetEnclosing ) ) ) && ( ! ( scope . isBoxingCompatibleWith ( enclosingInstanceType , targetEnclosing ) ) ) ) { scope . problemReporter ( ) . typeMismatchError ( enclosingInstanceType , targetEnclosing , this . enclosingInstance , null ) ; return this . resolvedType ; } this . enclosingInstance . computeConversion ( scope , targetEnclosing , enclosingInstanceType ) ; } if ( ( this . arguments ) != null ) { ASTNode . checkInvocationArguments ( scope , null , anonymousSuperclass , inheritedBinding , this . arguments , argumentTypes , argsContainCast , this , ( ( ( this . bits ) & ( ASTNode . Unchecked ) ) != 0 ) ) ; } if ( ( ( this . typeArguments ) != null ) && ( ( inheritedBinding . original ( ) . typeVariables ) == ( Binding . NO_TYPE_VARIABLES ) ) ) { scope . problemReporter ( ) . unnecessaryTypeArgumentsForMethodInvocation ( inheritedBinding , this . genericTypeArguments , this . typeArguments ) ; } <START_BUG> this . binding = this . anonymousType . createDefaultConstructorWithBinding ( inheritedBinding , ( ( ( ( this . bits ) & ( ASTNode . Unchecked ) ) != 0 ) && ( ( genericTypeArguments ) == null ) ) ) ; <END_BUG> return this . resolvedType ; } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

Fix:
this . binding = this . anonymousType . createDefaultConstructorWithBinding ( inheritedBinding , ( ( ( ( this . bits ) & ( ASTNode . Unchecked ) ) != 0 ) && ( ( this . genericTypeArguments ) == null ) ) ) ;