Buggy code:
public final void dstore_2 ( ) { } public final void dstore_3 ( ) { } public final void dsub ( ) { } public final void dup ( ) { } public final void dup_x1 ( ) { } public final void dup_x2 ( ) { } public final void dup2 ( ) { } public final void dup2_x1 ( ) { } public final void dup2_x2 ( ) { } public void exitUserScope ( BlockScope blockScope ) { } public final void f2d ( ) { } public final void f2i ( ) { } public final void f2l ( ) { } public final void fadd ( ) { } public final void faload ( ) { } public final void fastore ( ) { } public final void fcmpg ( ) { } public final void fcmpl ( ) { } public final void fconst_0 ( ) { } public final void fconst_1 ( ) { } public final void fconst_2 ( ) { } public final void fdiv ( ) { } public final void fload ( int iArg ) { } public final void fload_0 ( ) { } public final void fload_1 ( ) { } public final void fload_2 ( ) { } public final void fload_3 ( ) { } public final void fmul ( ) { } public final void fneg ( ) { } public final void frem ( ) { } public final void freturn ( ) { } public final void fstore ( int iArg ) { } public final void fstore_0 ( ) { } public final void fstore_1 ( ) { } public final void fstore_2 ( ) { } public final void fstore_3 ( ) { } public final void fsub ( ) { } public void generateClassLiteralAccessForType ( TypeBinding accessedType , FieldBinding syntheticFieldBinding ) { } public final int [ ] generateCodeAttributeForProblemMethod ( String errorName , String problemMessage ) { } public void generateConstant ( Constant constant , int implicitConversionCode ) { } public void generateImplicitConversion ( int implicitConversionCode ) { } public void generateInlinedValue ( byte inlinedValue ) { } public void generateInlinedValue ( char inlinedValue ) { } public void generateInlinedValue ( double inlinedValue ) { } public void generateInlinedValue ( float inlinedValue ) { } public void generateInlinedValue ( int inlinedValue ) { } public void generateInlinedValue ( long inlinedValue ) { } public void generateInlinedValue ( short inlinedValue ) { } public void generateInlinedValue ( boolean inlinedValue ) { } public void generateOuterAccess ( Object [ ] mappingSequence , AstNode invocationSite , Scope scope ) { } public void generateStringAppend ( BlockScope blockScope , Expression oper1 , Expression oper2 ) { } public void generateSyntheticArgumentValues ( BlockScope currentScope , ReferenceBinding targetType , Expression enclosingInstance , AstNode invocationSite ) { } public void generateSyntheticBodyForConstructorAccess ( SyntheticAccessMethodBinding accessBinding ) { } public void generateSyntheticBodyForFieldReadAccess ( SyntheticAccessMethodBinding accessBinding ) { } public void generateSyntheticBodyForFieldWriteAccess ( SyntheticAccessMethodBinding accessBinding ) { } public void generateSyntheticBodyForMethodAccess ( SyntheticAccessMethodBinding accessBinding ) { initializeMaxLocals ( accessBinding ) ; MethodBinding methodBinding = accessBinding . targetMethod ; TypeBinding [ ] parameters = methodBinding . parameters ; int length = parameters . length ; int resolvedPosition ; if ( methodBinding . isStatic ( ) ) resolvedPosition = 0 ; else { this . aload_0 ( ) ; resolvedPosition = 1 ; } for ( int i = 0 ; i < length ; i ++ ) { load ( parameters [ i ] , resolvedPosition ) ; if ( ( ( parameters [ i ] ) == ( DoubleBinding ) ) || ( ( parameters [ i ] ) == ( LongBinding ) ) ) resolvedPosition += 2 ; else resolvedPosition ++ ; } TypeBinding type ; if ( methodBinding . isStatic ( ) ) this . invokestatic ( methodBinding ) ; else { <START_BUG> if ( ( ( methodBinding . isConstructor ( ) ) || ( methodBinding . isPrivate ( ) ) ) || ( ( methodBinding . declaringClass ) != ( methodDeclaration . binding . declaringClass ) ) ) { <END_BUG> this . invokespecial ( methodBinding ) ; } else { if ( methodBinding . declaringClass . isInterface ( ) ) { this . invokeinterface ( methodBinding ) ; } else { this . invokevirtual ( methodBinding ) ; } } } if ( ( type = methodBinding . returnType ) . isBaseType ( ) ) if ( type == ( VoidBinding ) ) this . return_ ( ) ; else if ( type == ( IntBinding ) ) this . ireturn ( ) ; else if ( type == ( FloatBinding ) ) this . freturn ( ) ; else if ( type == ( LongBinding ) ) this . lreturn ( ) ; else if ( type == ( DoubleBinding ) ) this . dreturn ( ) ; else this . ireturn ( ) ; else this . areturn ( ) ; } public final byte [ ] getContents ( ) { } public final void getfield ( FieldBinding fieldBinding ) { } public final void getstatic ( FieldBinding fieldBinding ) { } public void getSystemOut ( ) { } public void getTYPE ( int baseTypeID ) { } public final void goto_ ( Label lbl ) { } public final void internal_goto_ ( Label lbl ) { } public final void goto_w ( Label lbl ) { } public final void i2b ( ) { } public final void i2c ( ) { } public final void i2d ( ) { } public final void i2f ( ) { } public final void i2l ( ) { } public final void i2s ( ) { } public final void iadd ( ) { } public final void iaload ( ) { } public final void iand ( ) { } public final void iastore ( ) { } public final void iconst_0 ( ) { } public final void iconst_1 ( ) { }

Fix:
if ( ( ( methodBinding . isConstructor ( ) ) || ( methodBinding . isPrivate ( ) ) ) || ( ( accessBinding . accessType ) == ( SyntheticAccessMethodBinding . SuperMethodAccess ) ) ) {