Buggy code:
public class SelectionParser extends AssistParser { protected static final int SELECTION_PARSER = 1024 ; protected static final int SELECTION_OR_ASSIST_PARSER = ( AssistParser . ASSIST_PARSER ) + ( SelectionParser . SELECTION_PARSER ) ; protected static final int K_BETWEEN_CASE_AND_COLON = ( SelectionParser . SELECTION_PARSER ) + 1 ; public ASTNode assistNodeParent ; public int selectionStart ; public int selectionEnd ; public static final char [ ] SUPER = "super" . toCharArray ( ) ; public static final char [ ] THIS = "this" . toCharArray ( ) ; public SelectionParser ( ProblemReporter problemReporter ) { } public char [ ] assistIdentifier ( ) { } protected void attachOrphanCompletionNode ( ) { } private void buildMoreCompletionContext ( Expression expression ) { } private boolean checkRecoveredType ( ) { } protected void classInstanceCreation ( boolean hasClassBody ) { } protected void consumeArrayCreationExpressionWithoutInitializer ( ) { } protected void consumeArrayCreationExpressionWithInitializer ( ) { } protected void consumeClassInstanceCreationExpressionQualifiedWithTypeArguments ( ) { } protected void consumeClassInstanceCreationExpressionWithTypeArguments ( ) { } protected void consumeEnterAnonymousClassBody ( ) { if ( ( this . indexOfAssistIdentifier ( ) ) < 0 ) { super . consumeEnterAnonymousClassBody ( ) ; return ; } char [ ] oldIdent = this . assistIdentifier ( ) ; this . setAssistIdentifier ( null ) ; TypeReference typeReference = getTypeReference ( 0 ) ; this . setAssistIdentifier ( oldIdent ) ; TypeDeclaration anonymousType = new TypeDeclaration ( this . compilationUnit . compilationResult ) ; anonymousType . name = ANONYMOUS_EMPTY_NAME ; <START_BUG> anonymousType . bits |= AnonymousAndLocalMask ; <END_BUG> QualifiedAllocationExpression alloc = new SelectionOnQualifiedAllocationExpression ( anonymousType ) ; markEnclosingMemberWithLocalType ( ) ; pushOnAstStack ( anonymousType ) ; alloc . sourceEnd = rParenPos ; int argumentLength ; if ( ( argumentLength = expressionLengthStack [ ( ( expressionLengthPtr ) -- ) ] ) != 0 ) { expressionPtr -= argumentLength ; System . arraycopy ( expressionStack , ( ( expressionPtr ) + 1 ) , ( alloc . arguments = new Expression [ argumentLength ] ) , 0 , argumentLength ) ; } alloc . type = typeReference ; anonymousType . sourceEnd = alloc . sourceEnd ; anonymousType . sourceStart = anonymousType . declarationSourceStart = alloc . type . sourceStart ; alloc . sourceStart = intStack [ ( ( intPtr ) -- ) ] ; pushOnExpressionStack ( alloc ) ; assistNode = alloc ; this . lastCheckPoint = ( alloc . sourceEnd ) + 1 ; if ( ! ( diet ) ) { this . restartRecovery = true ; this . lastIgnoredToken = - 1 ; currentToken = 0 ; hasReportedError = true ; } anonymousType . bodyStart = scanner . currentPosition ; listLength = 0 ; if ( ( currentElement ) != null ) { lastCheckPoint = anonymousType . bodyStart ; currentElement = currentElement . add ( anonymousType , 0 ) ; currentToken = 0 ; lastIgnoredToken = - 1 ; } } protected void consumeEnterVariable ( ) { } protected void consumeExitVariableWithInitialization ( ) { } protected void consumeFieldAccess ( boolean isSuperAccess ) { } protected void consumeFormalParameter ( boolean isVarArgs ) { } protected void consumeInstanceOfExpression ( ) { } protected void consumeInstanceOfExpressionWithName ( ) { } protected void consumeLocalVariableDeclarationStatement ( ) { } protected void consumeMarkerAnnotation ( ) { } protected void consumeMemberValuePair ( ) { } protected void consumeMethodInvocationName ( ) { } protected void consumeMethodInvocationPrimary ( ) { } protected void consumeNormalAnnotation ( ) { } protected void consumeSingleMemberAnnotation ( ) { } protected void consumeStaticImportOnDemandDeclarationName ( ) { } protected void consumeToken ( int token ) { } protected void consumeTypeImportOnDemandDeclarationName ( ) { } public ImportReference createAssistImportReference ( char [ ] [ ] tokens , long [ ] positions , int mod ) { } public ImportReference createAssistPackageReference ( char [ ] [ ] tokens , long [ ] positions ) { } protected LocalDeclaration createLocalDeclaration ( char [ ] assistName , int sourceStart , int sourceEnd ) { } public NameReference createQualifiedAssistNameReference ( char [ ] [ ] previousIdentifiers , char [ ] assistName , long [ ] positions ) { } public TypeReference createQualifiedAssistTypeReference ( char [ ] [ ] previousIdentifiers , char [ ] assistName , long [ ] positions ) { } public TypeReference createParameterizedQualifiedAssistTypeReference ( char [ ] [ ] tokens , TypeReference [ ] [ ] typeArguments , char [ ] assistname , TypeReference [ ] assistTypeArguments , long [ ] positions ) { } public NameReference createSingleAssistNameReference ( char [ ] assistName , long position ) { } public TypeReference createSingleAssistTypeReference ( char [ ] assistName , long position ) { } public TypeReference createParameterizedSingleAssistTypeReference ( TypeReference [ ] typeArguments , char [ ] assistName , long position ) { } public CompilationUnitDeclaration dietParse ( ICompilationUnit sourceUnit , CompilationResult compilationResult , int start , int end ) { } protected NameReference getUnspecifiedReference ( ) { } protected NameReference getUnspecifiedReferenceOptimized ( ) { } public void initializeScanner ( ) { } protected MessageSend newMessageSend ( ) { } protected MessageSend newMessageSendWithTypeArguments ( ) { } public CompilationUnitDeclaration parse ( ICompilationUnit sourceUnit , CompilationResult compilationResult , int start , int end ) { } protected boolean resumeAfterRecovery ( ) { } public void selectionIdentifierCheck ( ) { } public void setAssistIdentifier ( char [ ] assistIdent ) { } protected void updateRecoveryState ( ) { } public String toString ( ) { } }

Fix:
anonymousType . bits |= ( ASTNode . IsAnonymousType ) | ( ASTNode . IsLocalType ) ;