Buggy code:
protected void consumeSwitchBlock ( ) { } protected void consumeSwitchBlockStatement ( ) { } protected void consumeSwitchBlockStatements ( ) { } protected void consumeSwitchLabels ( ) { } protected void consumeToken ( int type ) { } protected void consumeTypeDeclarations ( ) { } protected void consumeTypeDeclarationsopt ( ) { } protected void consumeTypeImportOnDemandDeclaration ( ) { } protected void consumeTypeImportOnDemandDeclarationName ( ) { } protected void consumeUnaryExpression ( int op ) { } protected void consumeUnaryExpression ( int op , boolean post ) { } protected void consumeVariableDeclarators ( ) { } protected void consumeVariableInitializers ( ) { } public boolean containsComment ( int sourceStart , int sourceEnd ) { } public MethodDeclaration convertToMethodDeclaration ( ConstructorDeclaration c , CompilationResult compilationResult ) { } protected TypeReference copyDims ( TypeReference typeRef , int dim ) { } protected FieldDeclaration createFieldDeclaration ( char [ ] fieldDeclarationName , int sourceStart , int sourceEnd ) { } protected LocalDeclaration createLocalDeclaration ( char [ ] localDeclarationName , int sourceStart , int sourceEnd ) { } public CompilationUnitDeclaration dietParse ( ICompilationUnit sourceUnit , CompilationResult compilationResult ) { } protected void dispatchDeclarationInto ( int length ) { } protected CompilationUnitDeclaration endParse ( int act ) { } public int flushCommentsDefinedPriorTo ( int position ) { } public final int getFirstToken ( ) { } public int [ ] getJavaDocPositions ( ) { } public void getMethodBodies ( CompilationUnitDeclaration unit ) { } protected TypeReference getTypeReference ( int dim ) { } protected Expression getTypeReference ( Expression exp ) { } protected NameReference getUnspecifiedReference ( ) { } protected NameReference getUnspecifiedReferenceOptimized ( ) { } public void goForBlockStatementsopt ( ) { } public void goForBlockStatementsOrCatchHeader ( ) { } public void goForClassBodyDeclarations ( ) { } public void goForCompilationUnit ( ) { } public void goForExpression ( ) { } public void goForFieldDeclaration ( ) { } public void goForGenericMethodDeclaration ( ) { } public void goForHeaders ( ) { } public void goForImportDeclaration ( ) { } public void goForInitializer ( ) { } public void goForMethodBody ( ) { } public void goForPackageDeclaration ( ) { } public void goForTypeDeclaration ( ) { } protected void ignoreExpressionAssignment ( ) { } protected void ignoreInterfaceDeclaration ( ) { } protected void ignoreInvalidConstructorDeclaration ( boolean hasBody ) { } protected void ignoreMethodBody ( ) { } public void initialize ( ) { } public void initializeScanner ( ) { } public static final void initTables ( ) throws IOException { } public static int in_symbol ( int state ) { } public final void jumpOverMethodBody ( ) { } protected void markEnclosingMemberWithLocalType ( ) { } protected void markInitializersWithLocalType ( TypeDeclaration type ) { } protected boolean moveRecoveryCheckpoint ( ) { } protected MessageSend newMessageSend ( ) { } public static int nasi ( int state ) { } public static int ntAction ( int state , int sym ) { } private final void optimizedConcatNodeLists ( ) { } protected static int original_state ( int state ) { } protected void parse ( ) { } protected void reportSyntaxErrors ( boolean isDietParse , int oldFirstToken ) { if ( ( referenceContext ) instanceof MethodDeclaration ) { MethodDeclaration methodDeclaration = ( ( MethodDeclaration ) ( referenceContext ) ) ; if ( methodDeclaration . errorInSignature ) { return ; } } compilationUnit . compilationResult . lineSeparatorPositions = scanner . getLineEnds ( ) ; scanner . recordLineSeparator = false ; int start = scanner . initialPosition ; int end = ( ( scanner . eofPosition ) <= ( Integer . MAX_VALUE ) ) ? ( scanner . eofPosition ) - 1 : scanner . eofPosition ; if ( isDietParse ) { TypeDeclaration [ ] types = this . compilationUnit . types ; <START_BUG> int [ ] [ ] intervalToSkip = org . eclipse . jdt . internal . compiler . parser . diagnose . Util . computeDietRange ( types ) ; <END_BUG> DiagnoseParser diagnoseParser = new DiagnoseParser ( this , oldFirstToken , start , end , intervalToSkip [ 0 ] , intervalToSkip [ 1 ] , intervalToSkip [ 2 ] ) ; diagnoseParser . diagnoseParse ( ) ; reportSyntaxErrorsForSkippedMethod ( types ) ; scanner . resetTo ( start , end ) ; } else { DiagnoseParser diagnoseParser = new DiagnoseParser ( this , oldFirstToken , start , end ) ; diagnoseParser . diagnoseParse ( ) ; } } private void reportSyntaxErrorsForSkippedMethod ( TypeDeclaration [ ] types ) { } public void parse ( ConstructorDeclaration cd , CompilationUnitDeclaration unit ) { } public void parse ( FieldDeclaration field , TypeDeclaration type , CompilationUnitDeclaration unit , char [ ] initializationSource ) { } public void parse ( Initializer initializer , TypeDeclaration type , CompilationUnitDeclaration unit ) { } public void parse ( MethodDeclaration md , CompilationUnitDeclaration unit ) { } public CompilationUnitDeclaration parse ( ICompilationUnit sourceUnit , CompilationResult compilationResult ) { } public CompilationUnitDeclaration parse ( ICompilationUnit sourceUnit , CompilationResult compilationResult , int start , int end ) { } public ProblemReporter problemReporter ( ) { } protected void pushIdentifier ( ) { } protected void pushIdentifier ( int flag ) { } protected void pushOnAstLengthStack ( int pos ) { } protected void pushOnAstStack ( ASTNode node ) { } protected void pushOnExpressionStack ( Expression expr ) { } protected void pushOnExpressionStackLengthStack ( int pos ) { } protected void pushOnIntStack ( int pos ) { } protected void pushOnRealBlockStack ( int i ) { } protected static char [ ] readTable ( String filename ) throws IOException { } protected static byte [ ] readByteTable ( String filename ) throws IOException { } protected static String [ ] readReadableNameTable ( String filename ) { } protected static String [ ] readNameTable ( String filename ) throws IOException { } public void recoveryExitFromVariable ( ) { } public void recoveryTokenCheck ( ) { } protected void resetModifiers ( ) { } protected void resetStacks ( ) { } protected boolean resumeAfterRecovery ( ) { }

Fix:
int [ ] [ ] intervalToSkip = RangeUtil . computeDietRange ( types ) ;