Buggy code:
public MethodDeclaration addMissingAbstractMethodFor ( MethodBinding methodBinding ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void analyseCode ( ClassScope enclosingClassScope ) { } public void analyseCode ( ClassScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void analyseCode ( CompilationUnitScope unitScope ) { } public boolean checkConstructors ( Parser parser ) { } public CompilationResult compilationResult ( ) { } public ConstructorDeclaration createDefaultConstructor ( boolean needExplicitConstructorCall , boolean needToInsert ) { } public MethodBinding createDefaultConstructorWithBinding ( MethodBinding inheritedConstructorBinding ) { } public FieldDeclaration declarationOf ( FieldBinding fieldBinding ) { } public TypeDeclaration declarationOf ( MemberTypeBinding memberTypeBinding ) { } public AbstractMethodDeclaration declarationOf ( MethodBinding methodBinding ) { } public TypeDeclaration declarationOfType ( char [ ] [ ] typeName ) { } public void generateCode ( ClassFile enclosingClassFile ) { } public void generateCode ( BlockScope blockScope , CodeStream codeStream ) { } public void generateCode ( ClassScope classScope , ClassFile enclosingClassFile ) { } public void generateCode ( CompilationUnitScope unitScope ) { } public boolean hasErrors ( ) { } private void internalAnalyseCode ( FlowContext flowContext , FlowInfo flowInfo ) { if ( ( this . binding . isPrivate ( ) ) && ( ! ( this . binding . isUsed ( ) ) ) ) { if ( ! ( scope . referenceCompilationUnit ( ) . compilationResult . hasSyntaxError ) ) { scope . problemReporter ( ) . unusedPrivateType ( this ) ; } } InitializationFlowContext initializerContext = new InitializationFlowContext ( null , this , initializerScope ) ; InitializationFlowContext staticInitializerContext = new InitializationFlowContext ( null , this , staticInitializerScope ) ; FlowInfo nonStaticFieldInfo = flowInfo . unconditionalFieldLessCopy ( ) ; FlowInfo staticFieldInfo = flowInfo . unconditionalFieldLessCopy ( ) ; if ( ( fields ) != null ) { for ( int i = 0 , count = fields . length ; i < count ; i ++ ) { FieldDeclaration field = fields [ i ] ; if ( field . isStatic ( ) ) { if ( ( ( staticFieldInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) != 0 ) field . bits &= ~ ( ASTNode . IsReachable ) ; staticInitializerContext . handledExceptions = Binding . ANY_EXCEPTION ; staticFieldInfo = field . analyseCode ( staticInitializerScope , staticInitializerContext , staticFieldInfo ) ; if ( staticFieldInfo == ( FlowInfo . DEAD_END ) ) { staticInitializerScope . problemReporter ( ) . initializerMustCompleteNormally ( field ) ; staticFieldInfo = FlowInfo . initial ( maxFieldCount ) . setReachMode ( FlowInfo . UNREACHABLE ) ; } } else { if ( ( ( nonStaticFieldInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) != 0 ) field . bits &= ~ ( ASTNode . IsReachable ) ; initializerContext . handledExceptions = Binding . ANY_EXCEPTION ; nonStaticFieldInfo = field . analyseCode ( initializerScope , initializerContext , nonStaticFieldInfo ) ; if ( nonStaticFieldInfo == ( FlowInfo . DEAD_END ) ) { initializerScope . problemReporter ( ) . initializerMustCompleteNormally ( field ) ; nonStaticFieldInfo = FlowInfo . initial ( maxFieldCount ) . setReachMode ( FlowInfo . UNREACHABLE ) ; } } } } if ( ( memberTypes ) != null ) { for ( int i = 0 , count = memberTypes . length ; i < count ; i ++ ) { if ( flowContext != null ) { memberTypes [ i ] . analyseCode ( scope , flowContext , nonStaticFieldInfo . copy ( ) . setReachMode ( flowInfo . reachMode ( ) ) ) ; } else { memberTypes [ i ] . analyseCode ( scope ) ; } } } if ( ( methods ) != null ) { UnconditionalFlowInfo outerInfo = flowInfo . unconditionalFieldLessCopy ( ) ; FlowInfo constructorInfo = nonStaticFieldInfo . unconditionalInits ( ) . discardNonFieldInitializations ( ) . addInitializationsFrom ( outerInfo ) ; for ( int i = 0 , count = methods . length ; i < count ; i ++ ) { AbstractMethodDeclaration method = methods [ i ] ; if ( method . ignoreFurtherInvestigation ) continue ; if ( method . isInitializationMethod ( ) ) { if ( method . isStatic ( ) ) { method . analyseCode ( scope , staticInitializerContext , staticFieldInfo . unconditionalInits ( ) . discardNonFieldInitializations ( ) . addInitializationsFrom ( outerInfo ) . setReachMode ( flowInfo . reachMode ( ) ) ) ; } else { method . analyseCode ( scope , initializerContext , constructorInfo . copy ( ) . setReachMode ( flowInfo . reachMode ( ) ) ) ; } } else { method . analyseCode ( scope , null , flowInfo . copy ( ) ) ; } } } <START_BUG> if ( this . binding . isEnum ( ) ) { <END_BUG> this . enumValuesSyntheticfield = this . binding . addSyntheticFieldForEnumValues ( ) ; } } public static final int kind ( int flags ) { } public void manageEnclosingInstanceAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo ) { } public void manageEnclosingInstanceAccessIfNecessary ( ClassScope currentScope , FlowInfo flowInfo ) { } public final boolean needClassInitMethod ( ) { } public void parseMethod ( Parser parser , CompilationUnitDeclaration unit ) { } public StringBuffer print ( int indent , StringBuffer output ) { } public StringBuffer printBody ( int indent , StringBuffer output ) { } public StringBuffer printHeader ( int indent , StringBuffer output ) { } public StringBuffer printStatement ( int tab , StringBuffer output ) { } public void resolve ( ) { } public void resolve ( BlockScope blockScope ) { } public void resolve ( ClassScope upperScope ) { } public void resolve ( CompilationUnitScope upperScope ) { } public void tagAsHavingErrors ( ) { } public void traverse ( ASTVisitor visitor , CompilationUnitScope unitScope ) { } public void traverse ( ASTVisitor visitor , BlockScope blockScope ) { } public void traverse ( ASTVisitor visitor , ClassScope classScope ) { } void updateMaxFieldCount ( ) { } public boolean isSecondary ( ) { } }

Fix:
if ( ( this . binding . isEnum ( ) ) && ( ! ( this . binding . isAnonymousType ( ) ) ) ) {