Buggy code:
public class ClassFile implements TypeConstants , TypeIds { private byte [ ] bytes ; public CodeStream codeStream ; public ConstantPool constantPool ; public int constantPoolOffset ; public byte [ ] contents ; public int contentsOffset ; protected boolean creatingProblemType ; public ClassFile enclosingClassFile ; public byte [ ] header ; public int headerOffset ; public Set innerClassesBindings ; public int methodCount ; public int methodCountOffset ; public boolean isShared = false ; public int produceAttributes ; public SourceTypeBinding referenceBinding ; public long targetJDK ; public static final int INITIAL_CONTENTS_SIZE = 400 ; public static final int INITIAL_HEADER_SIZE = 1500 ; public static final int INNER_CLASSES_SIZE = 5 ; public static String buildAllDirectoriesInto ( String outputPath , String relativeFileName ) throws IOException { } public static void createProblemType ( TypeDeclaration typeDeclaration , CompilationResult unitResult ) { } public static ClassFile getNewInstance ( SourceTypeBinding typeBinding ) { } public static void writeToDisk ( boolean generatePackagesStructure , String outputPath , String relativeFileName , ClassFile classFile ) throws IOException { } protected ClassFile ( ) { } public ClassFile ( SourceTypeBinding typeBinding ) { } public void addAbstractMethod ( AbstractMethodDeclaration method , MethodBinding methodBinding ) { } public void addAttributes ( ) { } public void addDefaultAbstractMethods ( ) { } private int addFieldAttributes ( FieldBinding fieldBinding , int fieldAttributeOffset ) { } private void addFieldInfo ( FieldBinding fieldBinding ) { } public void addFieldInfos ( ) { } private void addMissingAbstractProblemMethod ( MethodDeclaration methodDeclaration , MethodBinding methodBinding , CategorizedProblem problem , CompilationResult compilationResult ) { } public void addProblemClinit ( CategorizedProblem [ ] problems ) { } public void addProblemConstructor ( AbstractMethodDeclaration method , MethodBinding methodBinding , CategorizedProblem [ ] problems ) { } public void addProblemConstructor ( AbstractMethodDeclaration method , MethodBinding methodBinding , CategorizedProblem [ ] problems , int savedOffset ) { } public void addProblemMethod ( AbstractMethodDeclaration method , MethodBinding methodBinding , CategorizedProblem [ ] problems ) { } public void addProblemMethod ( AbstractMethodDeclaration method , MethodBinding methodBinding , CategorizedProblem [ ] problems , int savedOffset ) { } public void addSpecialMethods ( ) { generateMissingAbstractMethods ( referenceBinding . scope . referenceType ( ) . missingAbstractMethods , referenceBinding . scope . referenceCompilationUnit ( ) . compilationResult ) ; MethodBinding [ ] defaultAbstractMethods = this . referenceBinding . getDefaultAbstractMethods ( ) ; for ( int i = 0 , max = defaultAbstractMethods . length ; i < max ; i ++ ) { generateMethodInfoHeader ( defaultAbstractMethods [ i ] ) ; int methodAttributeOffset = contentsOffset ; int attributeNumber = generateMethodInfoAttribute ( defaultAbstractMethods [ i ] ) ; completeMethodInfo ( methodAttributeOffset , attributeNumber ) ; } SyntheticMethodBinding [ ] syntheticMethods = this . referenceBinding . syntheticMethods ( ) ; if ( syntheticMethods != null ) { for ( int i = 0 , max = syntheticMethods . length ; i < max ; i ++ ) { SyntheticMethodBinding syntheticMethod = syntheticMethods [ i ] ; <START_BUG> switch ( syntheticMethod . kind ) { <END_BUG> case SyntheticMethodBinding . FieldReadAccess : addSyntheticFieldReadAccessMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . FieldWriteAccess : addSyntheticFieldWriteAccessMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . MethodAccess : case SyntheticMethodBinding . SuperMethodAccess : case SyntheticMethodBinding . BridgeMethod : addSyntheticMethodAccessMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . ConstructorAccess : addSyntheticConstructorAccessMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . EnumValues : addSyntheticEnumValuesMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . EnumValueOf : addSyntheticEnumValueOfMethod ( syntheticMethod ) ; break ; case SyntheticMethodBinding . SwitchTable : addSyntheticSwitchTable ( syntheticMethod ) ; } } } } public void addSyntheticConstructorAccessMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticEnumValueOfMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticEnumValuesMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticFieldReadAccessMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticFieldWriteAccessMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticMethodAccessMethod ( SyntheticMethodBinding methodBinding ) { } public void addSyntheticSwitchTable ( SyntheticMethodBinding methodBinding ) { } public void completeCodeAttribute ( int codeAttributeOffset ) { } public void completeCodeAttributeForClinit ( int codeAttributeOffset ) { } public void completeCodeAttributeForClinit ( int codeAttributeOffset , int problemLine ) { } public void completeCodeAttributeForMissingAbstractProblemMethod ( MethodBinding binding , int codeAttributeOffset , int [ ] startLineIndexes , int problemLine ) { } public void completeCodeAttributeForProblemMethod ( AbstractMethodDeclaration method , MethodBinding binding , int codeAttributeOffset , int [ ] startLineIndexes , int problemLine ) { } public void completeCodeAttributeForSyntheticMethod ( boolean hasExceptionHandlers , SyntheticMethodBinding binding , int codeAttributeOffset , int [ ] startLineIndexes ) { } public void completeCodeAttributeForSyntheticMethod ( SyntheticMethodBinding binding , int codeAttributeOffset , int [ ] startLineIndexes ) { } public void completeMethodInfo ( int methodAttributeOffset , int attributeNumber ) { } public char [ ] fileName ( ) { } private void generateAnnotation ( Annotation annotation , int attributeOffset ) { } public void generateCodeAttributeHeader ( ) { } private void generateElementValue ( Expression defaultValue , TypeBinding memberValuePairReturnType , int attributeOffset ) { } private void generateElementValue ( int attributeOffset , Expression defaultValue , Constant constant , TypeBinding binding ) { } private void generateElementValueForNonConstantExpression ( Expression defaultValue , int attributeOffset , TypeBinding defaultValueBinding ) { } public int generateMethodInfoAttribute ( MethodBinding methodBinding ) { } public int generateMethodInfoAttribute ( MethodBinding methodBinding , AnnotationMethodDeclaration declaration ) { } public int generateMethodInfoAttribute ( MethodBinding methodBinding , boolean createProblemMethod ) { } public void generateMethodInfoHeader ( MethodBinding methodBinding ) { } public void generateMethodInfoHeader ( MethodBinding methodBinding , int accessFlags ) { } public void generateMethodInfoHeaderForClinit ( ) { } public void generateMissingAbstractMethods ( MethodDeclaration [ ] methodDeclarations , CompilationResult compilationResult ) { } private int generateRuntimeAnnotations ( final Annotation [ ] annotations ) { } private int generateRuntimeAnnotationsForParameters ( Argument [ ] arguments ) { } public byte [ ] getBytes ( ) { } public char [ ] [ ] getCompoundName ( ) { } protected void initByteArrays ( ) { } public void initialize ( SourceTypeBinding aType , ClassFile parentClassFile , boolean createProblemType ) { } private boolean isRuntimeInvisible ( Annotation annotation ) { }

Fix:
switch ( syntheticMethod . purpose ) {