Buggy code:
public class MatchLocator implements ITypeRequestor { public static final int MAX_AT_ONCE = 500 ; public SearchPattern pattern ; public PatternLocator patternLocator ; public int matchContainer ; public SearchRequestor requestor ; public IJavaSearchScope scope ; public IProgressMonitor progressMonitor ; public ICompilationUnit [ ] workingCopies ; public HandleFactory handleFactory ; public char [ ] [ ] [ ] allSuperTypeNames ; public MatchLocatorParser parser ; private Parser basicParser ; public INameEnvironment nameEnvironment ; public NameLookup nameLookup ; public LookupEnvironment lookupEnvironment ; public HierarchyResolver hierarchyResolver ; public CompilerOptions options ; public int numberOfMatches ; public PossibleMatch [ ] matchesToProcess ; public PossibleMatch currentPossibleMatch ; public long resultCollectorTime = 0 ; public class LocalDeclarationVisitor extends ASTVisitor { IJavaElement enclosingElement ; MatchingNodeSet nodeSet ; HashtableOfIntValues occurrencesCounts = new HashtableOfIntValues ( ) ; public LocalDeclarationVisitor ( IJavaElement enclosingElement , MatchingNodeSet nodeSet ) { } public boolean visit ( TypeDeclaration typeDeclaration , BlockScope unused ) { } } public class WrappedCoreException extends RuntimeException { public CoreException coreException ; public WrappedCoreException ( CoreException coreException ) { } } public static ClassFileReader classFileReader ( IType type ) { } public MatchLocator ( SearchPattern pattern , SearchRequestor requestor , IJavaSearchScope scope , ICompilationUnit [ ] workingCopies , IProgressMonitor progressMonitor ) { } public void accept ( IBinaryType binaryType , PackageBinding packageBinding ) { } public void accept ( org . eclipse . jdt . internal . compiler . env . ICompilationUnit sourceUnit ) { } public void accept ( ISourceType [ ] sourceTypes , PackageBinding packageBinding ) { } protected Parser basicParser ( ) { } protected void buildBindings ( PossibleMatch possibleMatch ) { } protected BinaryTypeBinding cacheBinaryType ( IType type ) throws JavaModelException { } protected char [ ] [ ] [ ] computeSuperTypeNames ( IType focusType ) { } protected IJavaElement createHandle ( AbstractMethodDeclaration method , IJavaElement parent ) { } protected IJavaElement createHandle ( FieldDeclaration fieldDeclaration , TypeDeclaration typeDeclaration , IJavaElement parent ) { } protected boolean createHierarchyResolver ( IType focusType , PossibleMatch [ ] possibleMatches ) { } protected IJavaElement createImportHandle ( ImportReference importRef ) { } protected IType createTypeHandle ( String simpleTypeName ) { } protected IBinaryType getBinaryInfo ( ClassFile classFile , IResource resource ) throws CoreException { } protected IType getFocusType ( ) { } protected void getMethodBodies ( CompilationUnitDeclaration unit ) { if ( unit . ignoreMethodBodies ) { unit . ignoreFurtherInvestigation = true ; return ; } int [ ] oldLineEnds = this . parser . scanner . lineEnds ; int oldLinePtr = this . parser . scanner . linePtr ; try { char [ ] contents = unit . compilationResult . compilationUnit . getContents ( ) ; this . parser . scanner . setSource ( contents ) ; final int [ ] lineSeparatorPositions = unit . compilationResult . lineSeparatorPositions ; this . parser . scanner . lineEnds = lineSeparatorPositions ; this . parser . scanner . linePtr = ( lineSeparatorPositions . length ) - 1 ; <START_BUG> if ( this . parser . javadocParser . checkJavadoc ) { <END_BUG> this . parser . javadocParser . scanner . setSource ( contents ) ; } this . parser . nodeSet = this . currentPossibleMatch . nodeSet ; this . parser . parseBodies ( unit ) ; } finally { this . parser . nodeSet = null ; this . parser . scanner . lineEnds = oldLineEnds ; this . parser . scanner . linePtr = oldLinePtr ; } } protected boolean hasAlreadyDefinedType ( CompilationUnitDeclaration parsedUnit ) { } public void initialize ( JavaProject project , int possibleMatchSize ) throws JavaModelException { } protected void locateMatches ( JavaProject javaProject , PossibleMatch [ ] possibleMatches , int start , int length ) throws JavaModelException { } protected void locateMatches ( JavaProject javaProject , PossibleMatchSet matchSet ) throws JavaModelException { } public void locateMatches ( SearchDocument [ ] searchDocuments ) throws JavaModelException { } public void locatePackageDeclarations ( SearchParticipant participant ) throws JavaModelException { } protected void locatePackageDeclarations ( SearchPattern searchPattern , SearchParticipant participant ) throws JavaModelException { } protected IType lookupType ( ReferenceBinding typeBinding ) { } protected void process ( PossibleMatch possibleMatch , boolean bindingsWereCreated ) throws CoreException { } protected void purgeMethodStatements ( TypeDeclaration type , boolean checkEachMethod ) { } protected void reduceParseTree ( CompilationUnitDeclaration unit ) { } protected void report ( int sourceStart , int sourceEnd , IJavaElement element , int accuracy ) throws CoreException { } public SearchParticipant getParticipant ( ) { } protected void report ( IResource resource , int sourceStart , int sourceEnd , IJavaElement element , int accuracy , SearchParticipant participant ) throws CoreException { } protected void report ( long start , long end , IJavaElement element , int accuracy ) throws CoreException { } protected void reportAccurateReference ( int sourceStart , int sourceEnd , char [ ] name , IJavaElement element , int accuracy ) throws CoreException { } protected void reportAccurateReference ( int sourceStart , int sourceEnd , char [ ] [ ] tokens , IJavaElement element , int [ ] accuracies ) throws CoreException { } protected void reportBinaryMatch ( IResource resource , IMember binaryMember , IBinaryType info , int accuracy ) throws CoreException { } protected void reportMatching ( AbstractMethodDeclaration method , IJavaElement parent , int accuracy , boolean typeInHierarchy , MatchingNodeSet nodeSet ) throws CoreException { } protected void reportMatching ( CompilationUnitDeclaration unit , boolean mustResolve ) throws CoreException { } protected void reportMatching ( FieldDeclaration field , TypeDeclaration type , IJavaElement parent , int accuracy , boolean typeInHierarchy , MatchingNodeSet nodeSet ) throws CoreException { } protected void reportMatching ( TypeDeclaration type , IJavaElement parent , int accuracy , MatchingNodeSet nodeSet , int occurrenceCount ) throws CoreException { } protected boolean typeInHierarchy ( ReferenceBinding binding ) { } }

Fix:
if ( this . parser . javadocParser . checkDocComment ) {