Buggy code:
public class SourceTypeBinding extends ReferenceBinding { public ReferenceBinding superclass ; public ReferenceBinding [ ] superInterfaces ; public FieldBinding [ ] fields ; public MethodBinding [ ] methods ; public ReferenceBinding [ ] memberTypes ; public ClassScope scope ; public static final int METHOD = 0 ; public static final int FIELD = 1 ; public static final int CLASS_LITERAL = 2 ; public static final int CHANGED_DECLARING_CLASS = 3 ; Hashtable [ ] synthetics ; protected SourceTypeBinding ( ) { } public SourceTypeBinding ( char [ ] [ ] compoundName , PackageBinding fPackage , ClassScope scope ) { } private void addDefaultAbstractMethod ( MethodBinding abstractMethod ) { } public void addDefaultAbstractMethods ( ) { } public FieldBinding addSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding addSyntheticField ( ReferenceBinding enclosingType ) { } public FieldBinding addSyntheticField ( TypeBinding targetType , BlockScope blockScope ) { } public FieldBinding addSyntheticField ( AssertStatement assertStatement , BlockScope blockScope ) { if ( ( synthetics ) == null ) { synthetics = new Hashtable [ 4 ] ; } if ( ( synthetics [ SourceTypeBinding . FIELD ] ) == null ) { synthetics [ SourceTypeBinding . FIELD ] = new Hashtable ( 5 ) ; } FieldBinding synthField = ( ( FieldBinding ) ( synthetics [ SourceTypeBinding . FIELD ] . get ( "assertionEmulation" ) ) ) ; if ( synthField == null ) { <START_BUG> synthField = new SyntheticFieldBinding ( "$assertionsDisabled" . toCharArray ( ) , BooleanBinding , ( ( ( ( AccDefault ) | ( AccStatic ) ) | ( AccSynthetic ) ) | ( AccFinal ) ) , this , Constant . NotAConstant , 0 ) ; <END_BUG> synthetics [ SourceTypeBinding . FIELD ] . put ( "assertionEmulation" , synthField ) ; } boolean needRecheck ; int index = 0 ; do { needRecheck = false ; FieldBinding existingField ; if ( ( existingField = this . getField ( synthField . name ) ) != null ) { TypeDeclaration typeDecl = scope . referenceContext ; for ( int i = 0 , max = typeDecl . fields . length ; i < max ; i ++ ) { FieldDeclaration fieldDecl = typeDecl . fields [ i ] ; if ( ( fieldDecl . binding ) == existingField ) { synthField . name = CharOperation . concat ( "$assertionsDisabled" . toCharArray ( ) , ( "_" + ( String . valueOf ( ( index ++ ) ) ) ) . toCharArray ( ) ) ; needRecheck = true ; break ; } } } } while ( needRecheck ) ; return synthField ; } public SyntheticAccessMethodBinding addSyntheticMethod ( FieldBinding targetField , boolean isReadAccess ) { } public SyntheticAccessMethodBinding addSyntheticMethod ( MethodBinding targetMethod , boolean isSuperAccess ) { } public FieldBinding [ ] availableFields ( ) { } public MethodBinding [ ] availableMethods ( ) { } void faultInTypesForFieldsAndMethods ( ) { } public FieldBinding [ ] fields ( ) { } public MethodBinding [ ] getDefaultAbstractMethods ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes ) { } public FieldBinding getField ( char [ ] fieldName ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public FieldBinding getSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public ReferenceBinding [ ] memberTypes ( ) { } public FieldBinding getUpdatedFieldBinding ( FieldBinding targetField , ReferenceBinding newDeclaringClass ) { } public MethodBinding getUpdatedMethodBinding ( MethodBinding targetMethod , ReferenceBinding newDeclaringClass ) { } public MethodBinding [ ] methods ( ) { } private FieldBinding resolveTypeFor ( FieldBinding field ) { } private MethodBinding resolveTypesFor ( MethodBinding method ) { } public final int sourceEnd ( ) { } public final int sourceStart ( ) { } public ReferenceBinding superclass ( ) { } public ReferenceBinding [ ] superInterfaces ( ) { } public SyntheticAccessMethodBinding [ ] syntheticAccessMethods ( ) { } public FieldBinding [ ] syntheticFields ( ) { } public String toString ( ) { } void verifyMethods ( MethodVerifier verifier ) { } public FieldBinding getSyntheticField ( ReferenceBinding targetEnclosingType , BlockScope scope , boolean onlyExactMatch ) { } }

Fix:
synthField = new SyntheticFieldBinding ( "$assertionsDisabled" . toCharArray ( ) , BooleanBinding , ( ( ( ( AccDefault ) | ( AccStatic ) ) | ( AccSynthetic ) ) | ( AccFinal ) ) , this , Constant . NotAConstant , synthetics [ SourceTypeBinding . FIELD ] . size ( ) ) ;