Buggy code:
protected CompilerOptions options ; protected ProblemReporter problemReporter ; protected int rBraceStart ; protected int rBraceEnd ; protected int rBraceSuccessorStart ; protected int realBlockPtr ; protected int [ ] realBlockStack ; protected int recoveredStaticInitializerStart ; public ReferenceContext referenceContext ; public boolean reportOnlyOneSyntaxError = false ; public boolean reportSyntaxErrorIsRequired = true ; protected boolean restartRecovery ; public Scanner scanner ; protected int [ ] stack = new int [ Parser . StackIncrement ] ; protected int stateStackTop ; protected int synchronizedBlockSourceStart ; protected int [ ] variablesCounter ; public Javadoc javadoc ; public JavadocParser javadocParser ; protected int lastJavadocEnd ; public static int asi ( int state ) { } public static final short base_check ( int i ) { } private static final void buildFile ( String filename , List listToDump ) throws IOException { } private static final String [ ] buildFileForName ( String filename , String contents ) throws IOException { } private static void buildFileForReadableName ( String file , char [ ] newLhs , char [ ] newNonTerminalIndex , String [ ] newName , String [ ] tokens ) throws IOException { } private static void buildFileForCompliance ( String file , int length , String [ ] tokens ) throws IOException { } private static final void buildFileForTable ( String filename , byte [ ] bytes ) throws IOException { } private static final void buildFileForTable ( String filename , char [ ] chars ) throws IOException { } private static final byte [ ] buildFileOfByteFor ( String filename , String tag , String [ ] tokens ) throws IOException { } private static final char [ ] buildFileOfIntFor ( String filename , String tag , String [ ] tokens ) throws IOException { } private static final void buildFileOfShortFor ( String filename , String tag , String [ ] tokens ) throws IOException { } public static final void buildFilesFromLPG ( String dataFilename , String dataFilename2 ) throws IOException { } public static int in_symbol ( int state ) { } public static final void initTables ( ) throws IOException { } public static int nasi ( int state ) { } public static int ntAction ( int state , int sym ) { } protected static int original_state ( int state ) { } protected static byte [ ] readByteTable ( String filename ) throws IOException { } protected static String [ ] readNameTable ( String filename ) throws IOException { } protected static String [ ] readReadableNameTable ( String filename ) { } protected static char [ ] readTable ( String filename ) throws IOException { } protected static long [ ] readLongTable ( String filename ) throws IOException { } public static int tAction ( int state , int sym ) { } public Parser ( ProblemReporter problemReporter , boolean optimizeStringLiterals ) { } public void arrayInitializer ( int length ) { } protected void blockReal ( ) { } public RecoveredElement buildInitialRecoveryState ( ) { } protected void checkAndSetModifiers ( int flag ) { } public void checkComment ( ) { } protected void checkNonExternalizedStringLiteral ( ) { } protected void checkNonNLSAfterBodyEnd ( int declarationEnd ) { } protected void classInstanceCreation ( boolean hasClassBody ) { } protected void concatExpressionLists ( ) { } protected void concatGenericsLists ( ) { } protected void concatNodeLists ( ) { } protected void consumeAdditionalBound ( ) { } protected void consumeAdditionalBound1 ( ) { } protected void consumeAdditionalBoundList ( ) { } protected void consumeAdditionalBoundList1 ( ) { } protected void consumeAllocationHeader ( ) { } protected void consumeAnnotationAsModifier ( ) { } protected void consumeAnnotationTypeDeclaration ( ) { } protected void consumeAnnotationTypeDeclarationHeader ( ) { <START_BUG> AnnotationTypeDeclaration annotationTypeDeclaration = new AnnotationTypeDeclaration ( this . compilationUnit . compilationResult ) ; <END_BUG> if ( ( this . nestedMethod [ this . nestedType ] ) == 0 ) { if ( ( this . nestedType ) != 0 ) { annotationTypeDeclaration . bits |= IsMemberTypeMASK ; } } else { annotationTypeDeclaration . bits |= IsLocalTypeMASK ; markEnclosingMemberWithLocalType ( ) ; blockReal ( ) ; } long pos = this . identifierPositionStack [ this . identifierPtr ] ; annotationTypeDeclaration . sourceEnd = ( ( int ) ( pos ) ) ; annotationTypeDeclaration . sourceStart = ( ( int ) ( pos > > > 32 ) ) ; annotationTypeDeclaration . name = this . identifierStack [ ( ( this . identifierPtr ) -- ) ] ; ( this . identifierLengthPtr ) -- ; ( this . intPtr ) -- ; ( this . intPtr ) -- ; annotationTypeDeclaration . modifiersSourceStart = this . intStack [ ( ( this . intPtr ) -- ) ] ; annotationTypeDeclaration . modifiers = ( ( this . intStack [ ( ( this . intPtr ) -- ) ] ) | ( AccAnnotation ) ) | ( AccInterface ) ; if ( ( annotationTypeDeclaration . modifiersSourceStart ) >= 0 ) { annotationTypeDeclaration . declarationSourceStart = annotationTypeDeclaration . modifiersSourceStart ; ( this . intPtr ) -- ; } else { int atPosition = this . intStack [ ( ( this . intPtr ) -- ) ] ; annotationTypeDeclaration . declarationSourceStart = atPosition ; } int length ; if ( ( length = this . expressionLengthStack [ ( ( this . expressionLengthPtr ) -- ) ] ) != 0 ) { System . arraycopy ( this . expressionStack , ( ( this . expressionPtr -= length ) + 1 ) , ( annotationTypeDeclaration . annotations = new Annotation [ length ] ) , 0 , length ) ; } annotationTypeDeclaration . bodyStart = ( annotationTypeDeclaration . sourceEnd ) + 1 ; annotationTypeDeclaration . javadoc = this . javadoc ; this . javadoc = null ; pushOnAstStack ( annotationTypeDeclaration ) ; if ( ( ( options . sourceLevel ) < ( ClassFileConstants . JDK1_5 ) ) && ( ( this . lastErrorEndPositionBeforeRecovery ) < ( this . scanner . currentPosition ) ) ) { this . problemReporter ( ) . invalidUsageOfAnnotationDeclarations ( annotationTypeDeclaration ) ; }

Fix:
TypeDeclaration annotationTypeDeclaration = new TypeDeclaration ( this . compilationUnit . compilationResult ) ;