Buggy code:
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 void generateCodeAttributeForProblemMethod ( 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 , Binding target , Scope scope ) { } public void generateReturnBytecode ( Expression expression ) { } public void generateStringConcatenationAppend ( BlockScope blockScope , Expression oper1 , Expression oper2 ) { } public void generateSyntheticEnclosingInstanceValues ( BlockScope currentScope , ReferenceBinding targetType , Expression enclosingInstance , ASTNode invocationSite ) { } public void generateSyntheticOuterArgumentValues ( BlockScope currentScope , ReferenceBinding targetType , ASTNode invocationSite ) { } public void generateSyntheticBodyForConstructorAccess ( SyntheticMethodBinding accessBinding ) { } public void generateSyntheticBodyForEnumValues ( SyntheticMethodBinding methodBinding ) { } public void generateSyntheticBodyForEnumValueOf ( SyntheticMethodBinding methodBinding ) { } public void generateSyntheticBodyForFieldReadAccess ( SyntheticMethodBinding accessBinding ) { } public void generateSyntheticBodyForFieldWriteAccess ( SyntheticMethodBinding accessBinding ) { } public void generateSyntheticBodyForMethodAccess ( SyntheticMethodBinding accessBinding ) { initializeMaxLocals ( accessBinding ) ; MethodBinding methodBinding = accessBinding . targetMethod ; TypeBinding [ ] parameters = methodBinding . parameters ; int length = parameters . length ; TypeBinding [ ] arguments = ( ( accessBinding . kind ) == ( SyntheticMethodBinding . BridgeMethod ) ) ? accessBinding . parameters : null ; int resolvedPosition ; if ( methodBinding . isStatic ( ) ) resolvedPosition = 0 ; else { this . aload_0 ( ) ; resolvedPosition = 1 ; } for ( int i = 0 ; i < length ; i ++ ) { TypeBinding parameter = parameters [ i ] ; if ( arguments != null ) { TypeBinding argument = arguments [ i ] ; load ( argument , resolvedPosition ) ; if ( argument != parameter ) checkcast ( parameter ) ; } else { load ( parameter , resolvedPosition ) ; } if ( ( parameter == ( DoubleBinding ) ) || ( parameter == ( LongBinding ) ) ) resolvedPosition += 2 ; else resolvedPosition ++ ; } TypeBinding type ; if ( methodBinding . isStatic ( ) ) this . invokestatic ( methodBinding ) ; else { if ( ( ( methodBinding . isConstructor ( ) ) || ( methodBinding . isPrivate ( ) ) ) || ( ( accessBinding . kind ) == ( SyntheticMethodBinding . SuperMethodAccess ) ) ) { this . invokespecial ( methodBinding ) ; } else { <START_BUG> if ( ( ( methodBinding . declaringClass . modifiers ) & ( ClassFileConstants . AccInterface ) ) != 0 ) { <END_BUG> 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 void generateBoxingConversion ( int unboxedTypeID ) { } public void generateUnboxingConversion ( int unboxedTypeID ) { } public final byte [ ] getContents ( ) { } public final void getfield ( FieldBinding fieldBinding ) { } private void generateFieldAccess ( byte opcode , int returnTypeSize , char [ ] declaringClass , char [ ] name , char [ ] signature ) { } public final void getstatic ( FieldBinding fieldBinding ) { } public void getTYPE ( int baseTypeID ) { } public final void goto_ ( Label label ) { } 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 ( ) { }

Fix:
if ( methodBinding . declaringClass . isInterface ( ) ) {