Buggy code:
public class TypeDeclaration extends Statement implements ReferenceContext , ProblemSeverities { public static final int CLASS_DECL = 1 ; public static final int INTERFACE_DECL = 2 ; public static final int ENUM_DECL = 3 ; public static final int ANNOTATION_TYPE_DECL = 4 ; public int modifiers = ClassFileConstants . AccDefault ; public int modifiersSourceStart ; public Annotation [ ] annotations ; public char [ ] name ; public TypeReference superclass ; public TypeReference [ ] superInterfaces ; public FieldDeclaration [ ] fields ; public AbstractMethodDeclaration [ ] methods ; public TypeDeclaration [ ] memberTypes ; public SourceTypeBinding binding ; public ClassScope scope ; public MethodScope initializerScope ; public MethodScope staticInitializerScope ; public boolean ignoreFurtherInvestigation = false ; public int maxFieldCount ; public int declarationSourceStart ; public int declarationSourceEnd ; public int bodyStart ; public int bodyEnd ; public CompilationResult compilationResult ; public MethodDeclaration [ ] missingAbstractMethods ; public Javadoc javadoc ; public QualifiedAllocationExpression allocation ; public TypeDeclaration enclosingType ; public FieldBinding enumValuesSyntheticfield ; public TypeParameter [ ] typeParameters ; public TypeDeclaration ( CompilationResult compilationResult ) { } public void abort ( int abortLevel , CategorizedProblem problem ) { } public final void addClinit ( ) { } public MethodDeclaration addMissingAbstractMethodFor ( MethodBinding methodBinding ) { TypeBinding [ ] argumentTypes = methodBinding . parameters ; int argumentsLength = argumentTypes . length ; MethodDeclaration methodDeclaration = new MethodDeclaration ( this . compilationResult ) ; methodDeclaration . selector = methodBinding . selector ; methodDeclaration . sourceStart = this . sourceStart ; methodDeclaration . sourceEnd = this . sourceEnd ; methodDeclaration . modifiers = ( methodBinding . getAccessFlags ( ) ) & ( ~ ( ClassFileConstants . AccAbstract ) ) ; if ( argumentsLength > 0 ) { String baseName = "arg" ; Argument [ ] arguments = methodDeclaration . arguments = new Argument [ argumentsLength ] ; for ( int i = argumentsLength ; ( -- i ) >= 0 ; ) { arguments [ i ] = new Argument ( ( baseName + i ) . toCharArray ( ) , 0L , null , ClassFileConstants . AccDefault ) ; } } if ( ( this . missingAbstractMethods ) == null ) { this . missingAbstractMethods = new MethodDeclaration [ ] { methodDeclaration } ; } else { MethodDeclaration [ ] newMethods ; System . arraycopy ( this . missingAbstractMethods , 0 , ( newMethods = new MethodDeclaration [ ( this . missingAbstractMethods . length ) + 1 ] ) , 1 , this . missingAbstractMethods . length ) ; newMethods [ 0 ] = methodDeclaration ; this . missingAbstractMethods = newMethods ; } <START_BUG> methodDeclaration . binding = new MethodBinding ( methodDeclaration . modifiers , methodBinding . selector , methodBinding . returnType , ( argumentsLength == 0 ? Binding . NO_PARAMETERS : argumentTypes ) , methodBinding . thrownExceptions , this . binding ) ; <END_BUG> methodDeclaration . scope = new MethodScope ( this . scope , methodDeclaration , true ) ; methodDeclaration . bindArguments ( ) ; return methodDeclaration ; } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void analyseCode ( ClassScope enclosingClassScope ) { } public void analyseCode ( ClassScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void analyseCode ( CompilationUnitScope unitScope ) { } public boolean checkConstructors ( Parser parser ) { } public CompilationResult compilationResult ( ) { } public ConstructorDeclaration createDefaultConstructor ( boolean needExplicitConstructorCall , boolean needToInsert ) { } public MethodBinding createDefaultConstructorWithBinding ( MethodBinding inheritedConstructorBinding ) { } public FieldDeclaration declarationOf ( FieldBinding fieldBinding ) { } public TypeDeclaration declarationOf ( MemberTypeBinding memberTypeBinding ) { } public AbstractMethodDeclaration declarationOf ( MethodBinding methodBinding ) { } public TypeDeclaration declarationOfType ( char [ ] [ ] typeName ) { } public void generateCode ( ClassFile enclosingClassFile ) { } public void generateCode ( BlockScope blockScope , CodeStream codeStream ) { } public void generateCode ( ClassScope classScope , ClassFile enclosingClassFile ) { } public void generateCode ( CompilationUnitScope unitScope ) { } public boolean hasErrors ( ) { } private void internalAnalyseCode ( FlowContext flowContext , FlowInfo flowInfo ) { } public static final int kind ( int flags ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo ) { } public void manageEnclosingInstanceAccessIfNecessary ( ClassScope currentScope , FlowInfo flowInfo ) { } public final boolean needClassInitMethod ( ) { } public void parseMethods ( Parser parser , CompilationUnitDeclaration unit ) { } public StringBuffer print ( int indent , StringBuffer output ) { } public StringBuffer printBody ( int indent , StringBuffer output ) { } public StringBuffer printHeader ( int indent , StringBuffer output ) { } public StringBuffer printStatement ( int tab , StringBuffer output ) { } public void resolve ( ) { } public void resolve ( BlockScope blockScope ) { } public void resolve ( ClassScope upperScope ) { } public void resolve ( CompilationUnitScope upperScope ) { } public void tagAsHavingErrors ( ) { } public void traverse ( ASTVisitor visitor , CompilationUnitScope unitScope ) { } public void traverse ( ASTVisitor visitor , BlockScope blockScope ) { } public void traverse ( ASTVisitor visitor , ClassScope classScope ) { } void updateMaxFieldCount ( ) { } public boolean isSecondary ( ) { } }

Fix:
methodDeclaration . binding = new MethodBinding ( ( ( methodDeclaration . modifiers ) | ( ClassFileConstants . AccSynthetic ) ) , methodBinding . selector , methodBinding . returnType , ( argumentsLength == 0 ? Binding . NO_PARAMETERS : argumentTypes ) , methodBinding . thrownExceptions , this . binding ) ;