Buggy code:
public class SourceTypeBinding extends ReferenceBinding { public ReferenceBinding superclass ; public ReferenceBinding [ ] superInterfaces ; private FieldBinding [ ] fields ; private MethodBinding [ ] methods ; public ReferenceBinding [ ] memberTypes ; public TypeVariableBinding [ ] typeVariables ; public ClassScope scope ; private static final int METHOD_EMUL = 0 ; private static final int FIELD_EMUL = 1 ; private static final int CLASS_LITERAL_EMUL = 2 ; private static final int RECEIVER_TYPE_EMUL = 3 ; private static final int MAX_SYNTHETICS = 4 ; HashMap [ ] synthetics ; char [ ] genericReferenceTypeSignature ; private SimpleLookupTable storedAnnotations = null ; public SourceTypeBinding ( char [ ] [ ] compoundName , PackageBinding fPackage , ClassScope scope ) { } private void addDefaultAbstractMethods ( ) { if ( ( ( this . tagBits ) & ( TagBits . KnowsDefaultAbstractMethods ) ) != 0 ) return ; this . tagBits |= TagBits . KnowsDefaultAbstractMethods ; if ( ( isClass ( ) ) && ( isAbstract ( ) ) ) { if ( ( this . scope . compilerOptions ( ) . targetJDK ) >= ( ClassFileConstants . JDK1_2 ) ) return ; ReferenceBinding [ ] itsInterfaces = superInterfaces ( ) ; if ( itsInterfaces != ( Binding . NO_SUPERINTERFACES ) ) { MethodBinding [ ] defaultAbstracts = null ; int defaultAbstractsCount = 0 ; ReferenceBinding [ ] interfacesToVisit = itsInterfaces ; int nextPosition = interfacesToVisit . length ; for ( int i = 0 ; i < nextPosition ; i ++ ) { ReferenceBinding superType = interfacesToVisit [ i ] ; if ( superType . isValidBinding ( ) ) { MethodBinding [ ] superMethods = superType . methods ( ) ; nextAbstractMethod : for ( int m = superMethods . length ; ( -- m ) >= 0 ; ) { MethodBinding method = superMethods [ m ] ; if ( implementsMethod ( method ) ) continue nextAbstractMethod ; if ( defaultAbstractsCount == 0 ) { defaultAbstracts = new MethodBinding [ 5 ] ; } else { for ( int k = 0 ; k < defaultAbstractsCount ; k ++ ) { MethodBinding alreadyAdded = defaultAbstracts [ k ] ; if ( ( CharOperation . equals ( alreadyAdded . selector , method . selector ) ) && ( alreadyAdded . areParametersEqual ( method ) ) ) continue nextAbstractMethod ; } } <START_BUG> MethodBinding defaultAbstract = new MethodBinding ( ( ( method . modifiers ) | ( ExtraCompilerModifiers . AccDefaultAbstract ) ) , method . selector , method . returnType , method . parameters , method . thrownExceptions , this ) ; <END_BUG> if ( defaultAbstractsCount == ( defaultAbstracts . length ) ) System . arraycopy ( defaultAbstracts , 0 , ( defaultAbstracts = new MethodBinding [ 2 * defaultAbstractsCount ] ) , 0 , defaultAbstractsCount ) ; defaultAbstracts [ ( defaultAbstractsCount ++ ) ] = defaultAbstract ; } if ( ( itsInterfaces = superType . superInterfaces ( ) ) != ( Binding . NO_SUPERINTERFACES ) ) { int itsLength = itsInterfaces . length ; if ( ( nextPosition + itsLength ) >= ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ ( nextPosition + itsLength ) + 5 ] ) , 0 , nextPosition ) ; nextInterface : for ( int a = 0 ; a < itsLength ; a ++ ) { ReferenceBinding next = itsInterfaces [ a ] ; for ( int b = 0 ; b < nextPosition ; b ++ ) if ( next == ( interfacesToVisit [ b ] ) ) continue nextInterface ; interfacesToVisit [ ( nextPosition ++ ) ] = next ; } } } } if ( defaultAbstractsCount > 0 ) { int length = this . methods . length ; System . arraycopy ( this . methods , 0 , ( this . methods = new MethodBinding [ length + defaultAbstractsCount ] ) , 0 , length ) ; System . arraycopy ( defaultAbstracts , 0 , this . methods , length , defaultAbstractsCount ) ; length = length + defaultAbstractsCount ; if ( length > 1 ) ReferenceBinding . sortMethods ( this . methods , 0 , length ) ; } } } } public FieldBinding addSyntheticFieldForInnerclass ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding addSyntheticFieldForInnerclass ( ReferenceBinding enclosingType ) { } public FieldBinding addSyntheticFieldForClassLiteral ( TypeBinding targetType , BlockScope blockScope ) { } public FieldBinding addSyntheticFieldForAssert ( BlockScope blockScope ) { } public FieldBinding addSyntheticFieldForEnumValues ( ) { } public SyntheticMethodBinding addSyntheticMethod ( FieldBinding targetField , boolean isReadAccess ) { } public SyntheticMethodBinding addSyntheticEnumMethod ( char [ ] selector ) { } public SyntheticFieldBinding addSyntheticFieldForSwitchEnum ( char [ ] fieldName , String key ) { } public SyntheticMethodBinding addSyntheticMethodForSwitchEnum ( TypeBinding enumBinding ) { } public SyntheticMethodBinding addSyntheticMethod ( MethodBinding targetMethod , boolean isSuperAccess ) { } public SyntheticMethodBinding addSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge , MethodBinding targetMethod ) { } public int kind ( ) { } public char [ ] computeUniqueKey ( boolean isLeaf ) { } void faultInTypesForFieldsAndMethods ( ) { } public FieldBinding [ ] fields ( ) { } public char [ ] genericTypeSignature ( ) { } public char [ ] genericSignature ( ) { } public long getAnnotationTagBits ( ) { } public MethodBinding [ ] getDefaultAbstractMethods ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , CompilationUnitScope refScope ) { } public FieldBinding getField ( char [ ] fieldName , boolean needResolve ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public FieldBinding getSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding getSyntheticField ( ReferenceBinding targetEnclosingType , boolean onlyExactMatch ) { } public SyntheticMethodBinding getSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge ) { } public void initializeDeprecatedAnnotationTagBits ( ) { } public boolean isEquivalentTo ( TypeBinding otherType ) { } public boolean isGenericType ( ) { }

Fix:
MethodBinding defaultAbstract = new MethodBinding ( ( ( ( method . modifiers ) | ( ExtraCompilerModifiers . AccDefaultAbstract ) ) | ( ClassFileConstants . AccSynthetic ) ) , method . selector , method . returnType , method . parameters , method . thrownExceptions , this ) ;