Buggy code:
public class MatchLocatorParser extends Parser { MatchingNodeSet nodeSet ; PatternLocator patternLocator ; private ASTVisitor localDeclarationVisitor ; final int patternFineGrain ; public static MatchLocatorParser createParser ( ProblemReporter problemReporter , MatchLocator locator ) { } public class NoClassNoMethodDeclarationVisitor extends ASTVisitor { public boolean visit ( ConstructorDeclaration constructorDeclaration , ClassScope scope ) { } public boolean visit ( FieldDeclaration fieldDeclaration , MethodScope scope ) { } public boolean visit ( Initializer initializer , MethodScope scope ) { } public boolean visit ( MethodDeclaration methodDeclaration , ClassScope scope ) { } } public class MethodButNoClassDeclarationVisitor extends MatchLocatorParser . NoClassNoMethodDeclarationVisitor { public boolean visit ( TypeDeclaration localTypeDeclaration , BlockScope scope ) { } } public class ClassButNoMethodDeclarationVisitor extends ASTVisitor { public boolean visit ( ConstructorDeclaration constructorDeclaration , ClassScope scope ) { } public boolean visit ( FieldDeclaration fieldDeclaration , MethodScope scope ) { } public boolean visit ( Initializer initializer , MethodScope scope ) { } public boolean visit ( TypeDeclaration memberTypeDeclaration , ClassScope scope ) { } public boolean visit ( MethodDeclaration methodDeclaration , ClassScope scope ) { } public boolean visit ( AnnotationMethodDeclaration methodDeclaration , ClassScope scope ) { } } public class ClassAndMethodDeclarationVisitor extends MatchLocatorParser . ClassButNoMethodDeclarationVisitor { public boolean visit ( TypeDeclaration localTypeDeclaration , BlockScope scope ) { } } protected MatchLocatorParser ( ProblemReporter problemReporter , MatchLocator locator ) { } public void checkComment ( ) { super . checkComment ( ) ; <START_BUG> if ( ( this . javadocParser . checkDocComment ) && ( ( this . javadoc ) != null ) ) { <END_BUG> JavadocSingleNameReference [ ] paramReferences = this . javadoc . paramReferences ; if ( paramReferences != null ) { for ( int i = 0 , length = paramReferences . length ; i < length ; i ++ ) { this . patternLocator . match ( paramReferences [ i ] , this . nodeSet ) ; } } JavadocSingleTypeReference [ ] paramTypeParameters = this . javadoc . paramTypeParameters ; if ( paramTypeParameters != null ) { for ( int i = 0 , length = paramTypeParameters . length ; i < length ; i ++ ) { this . patternLocator . match ( paramTypeParameters [ i ] , this . nodeSet ) ; } } TypeReference [ ] thrownExceptions = this . javadoc . exceptionReferences ; if ( thrownExceptions != null ) { for ( int i = 0 , length = thrownExceptions . length ; i < length ; i ++ ) { this . patternLocator . match ( thrownExceptions [ i ] , this . nodeSet ) ; } } Expression [ ] references = this . javadoc . seeReferences ; if ( references != null ) { for ( int i = 0 , length = references . length ; i < length ; i ++ ) { Expression reference = references [ i ] ; if ( reference instanceof TypeReference ) { TypeReference typeRef = ( ( TypeReference ) ( reference ) ) ; this . patternLocator . match ( typeRef , this . nodeSet ) ; } else if ( reference instanceof JavadocFieldReference ) { JavadocFieldReference fieldRef = ( ( JavadocFieldReference ) ( reference ) ) ; this . patternLocator . match ( fieldRef , this . nodeSet ) ; if ( ( ( fieldRef . receiver ) instanceof TypeReference ) && ( ! ( fieldRef . receiver . isThis ( ) ) ) ) { TypeReference typeRef = ( ( TypeReference ) ( fieldRef . receiver ) ) ; this . patternLocator . match ( typeRef , this . nodeSet ) ; } } else if ( reference instanceof JavadocMessageSend ) { JavadocMessageSend messageSend = ( ( JavadocMessageSend ) ( reference ) ) ; this . patternLocator . match ( messageSend , this . nodeSet ) ; if ( ( ( messageSend . receiver ) instanceof TypeReference ) && ( ! ( messageSend . receiver . isThis ( ) ) ) ) { TypeReference typeRef = ( ( TypeReference ) ( messageSend . receiver ) ) ; this . patternLocator . match ( typeRef , this . nodeSet ) ; } if ( ( messageSend . arguments ) != null ) { for ( int a = 0 , al = messageSend . arguments . length ; a < al ; a ++ ) { JavadocArgumentExpression argument = ( ( JavadocArgumentExpression ) ( messageSend . arguments [ a ] ) ) ; if ( ( ( argument . argument ) != null ) && ( ( argument . argument . type ) != null ) ) { this . patternLocator . match ( argument . argument . type , this . nodeSet ) ; } } } } else if ( reference instanceof JavadocAllocationExpression ) { JavadocAllocationExpression constructor = ( ( JavadocAllocationExpression ) ( reference ) ) ; this . patternLocator . match ( constructor , this . nodeSet ) ; if ( ( ( constructor . type ) != null ) && ( ! ( constructor . type . isThis ( ) ) ) ) { this . patternLocator . match ( constructor . type , this . nodeSet ) ; } if ( ( constructor . arguments ) != null ) { for ( int a = 0 , al = constructor . arguments . length ; a < al ; a ++ ) { this . patternLocator . match ( constructor . arguments [ a ] , this . nodeSet ) ; JavadocArgumentExpression argument = ( ( JavadocArgumentExpression ) ( constructor . arguments [ a ] ) ) ; if ( ( ( argument . argument ) != null ) && ( ( argument . argument . type ) != null ) ) { this . patternLocator . match ( argument . argument . type , this . nodeSet ) ; } } } } } } } } protected void classInstanceCreation ( boolean alwaysQualified ) { } protected void consumeAdditionalBound ( ) { } protected void consumeAssignment ( ) { }

Fix:
if ( ( ( this . javadocParser . checkDocComment ) && ( ( this . javadoc ) != null ) ) && ( ( this . patternFineGrain ) == 0 ) ) {