Buggy code:
private long findLastTypeArgumentInfo ( TypeReference typeRef ) { } protected IBinaryType getBinaryInfo ( ClassFile classFile , IResource resource ) throws CoreException { } protected IType getFocusType ( ) { } protected void getMethodBodies ( CompilationUnitDeclaration unit , MatchingNodeSet nodeSet ) { } protected TypeBinding getType ( Object typeKey , char [ ] typeName ) { } public MethodBinding getMethodBinding ( MethodPattern methodPattern ) { } 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 CoreException { } protected void locateMatches ( JavaProject javaProject , PossibleMatchSet matchSet , int expected ) throws CoreException { } public void locateMatches ( SearchDocument [ ] searchDocuments ) throws CoreException { } public void locatePackageDeclarations ( SearchParticipant participant ) throws CoreException { } protected void locatePackageDeclarations ( SearchPattern searchPattern , SearchParticipant participant ) throws CoreException { } protected IType lookupType ( ReferenceBinding typeBinding ) { } public SearchMatch newDeclarationMatch ( IJavaElement element , Binding binding , int accuracy , int offset , int length ) { } public SearchMatch newDeclarationMatch ( IJavaElement element , Binding binding , int accuracy , int offset , int length , SearchParticipant participant , IResource resource ) { } public SearchMatch newFieldReferenceMatch ( IJavaElement enclosingElement , Binding enclosingBinding , int accuracy , int offset , int length , ASTNode reference ) { } public SearchMatch newLocalVariableReferenceMatch ( IJavaElement enclosingElement , int accuracy , int offset , int length , ASTNode reference ) { } public SearchMatch newMethodReferenceMatch ( IJavaElement enclosingElement , Binding enclosingBinding , int accuracy , int offset , int length , boolean isConstructor , boolean isSynthetic , ASTNode reference ) { } public SearchMatch newPackageReferenceMatch ( IJavaElement enclosingElement , int accuracy , int offset , int length , ASTNode reference ) { } public SearchMatch newTypeParameterReferenceMatch ( IJavaElement enclosingElement , int accuracy , int offset , int length , ASTNode reference ) { } public SearchMatch newTypeReferenceMatch ( IJavaElement enclosingElement , Binding enclosingBinding , int accuracy , int offset , int length , ASTNode reference ) { } public SearchMatch newTypeReferenceMatch ( IJavaElement enclosingElement , Binding enclosingBinding , int accuracy , ASTNode reference ) { } protected boolean parseAndBuildBindings ( PossibleMatch possibleMatch , boolean mustResolve ) throws CoreException { } protected void process ( PossibleMatch possibleMatch , boolean bindingsWereCreated ) throws CoreException { this . currentPossibleMatch = possibleMatch ; CompilationUnitDeclaration unit = possibleMatch . parsedUnit ; try { if ( unit . isEmpty ( ) ) { if ( ( this . currentPossibleMatch . openable ) instanceof ClassFile ) { ClassFile classFile = ( ( ClassFile ) ( this . currentPossibleMatch . openable ) ) ; IBinaryType info = getBinaryInfo ( classFile , this . currentPossibleMatch . resource ) ; if ( info != null ) new ClassFileMatchLocator ( ) . locateMatches ( this , classFile , info ) ; } return ; } if ( hasAlreadyDefinedType ( unit ) ) return ; boolean mustResolve = ( ( ( InternalSearchPattern ) ( this . pattern ) ) . mustResolve ) || ( possibleMatch . nodeSet . mustResolve ) ; if ( bindingsWereCreated && mustResolve ) { if ( ( unit . types ) != null ) { if ( BasicSearchEngine . VERBOSE ) System . out . println ( ( "Resolving<seq2seq4repair_space>" + ( this . currentPossibleMatch . openable . toStringWithAncestors ( ) ) ) ) ; reduceParseTree ( unit ) ; if ( ( unit . scope ) != null ) { unit . scope . faultInTypes ( ) ; } unit . resolve ( ) ; } else if ( unit . isPackageInfo ( ) ) { if ( BasicSearchEngine . VERBOSE ) System . out . println ( ( "Resolving<seq2seq4repair_space>" + ( this . currentPossibleMatch . openable . toStringWithAncestors ( ) ) ) ) ; unit . resolve ( ) ; } } reportMatching ( unit , mustResolve ) ; } catch ( AbortCompilation e ) { <START_BUG> reportMatching ( unit , true ) ; <END_BUG> if ( ! ( e instanceof AbortCompilationUnit ) ) { throw e ; } } finally { this . currentPossibleMatch = null ; } } protected void purgeMethodStatements ( TypeDeclaration type , boolean checkEachMethod ) { } protected void reduceParseTree ( CompilationUnitDeclaration unit ) { } public SearchParticipant getParticipant ( ) { } protected void report ( SearchMatch match ) throws CoreException { } protected void reportAccurateTypeReference ( SearchMatch match , ASTNode typeRef , char [ ] name ) throws CoreException { } protected void reportAccurateParameterizedMethodReference ( SearchMatch match , ASTNode statement , TypeReference [ ] typeArguments ) throws CoreException { } protected void reportAccurateParameterizedTypeReference ( SearchMatch match , TypeReference typeRef , int index , TypeReference [ ] typeArguments ) throws CoreException { } protected void reportAccurateFieldReference ( SearchMatch [ ] matches , QualifiedNameReference qNameRef ) throws CoreException { } protected void reportBinaryMemberDeclaration ( IResource resource , IMember binaryMember , Binding binaryMemberBinding , IBinaryType info , int accuracy ) throws CoreException { } protected void reportMatching ( AbstractMethodDeclaration method , IJavaElement parent , int accuracy , boolean typeInHierarchy , MatchingNodeSet nodeSet ) throws CoreException { } protected void reportMatching ( Annotation [ ] annotations , IJavaElement enclosingElement , Binding elementBinding , MatchingNodeSet nodeSet , boolean matchedContainer , boolean enclosesElement ) 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 void reportMatchingSuper ( TypeReference superReference , IJavaElement enclosingElement , Binding elementBinding , MatchingNodeSet nodeSet , boolean matchedClassContainer ) throws CoreException { } protected boolean typeInHierarchy ( ReferenceBinding binding ) { } }

Fix:
reportMatching ( unit , false ) ;