Buggy code:
public class DeltaProcessor { static class OutputsInfo { int outputCount ; IPath [ ] paths ; int [ ] traverseModes ; OutputsInfo ( IPath [ ] paths , int [ ] traverseModes , int outputCount ) { } public String toString ( ) { } } public static class RootInfo { char [ ] [ ] inclusionPatterns ; char [ ] [ ] exclusionPatterns ; public JavaProject project ; IPath rootPath ; int entryKind ; IPackageFragmentRoot root ; RootInfo ( JavaProject project , IPath rootPath , char [ ] [ ] inclusionPatterns , char [ ] [ ] exclusionPatterns , int entryKind ) { } public IPackageFragmentRoot getPackageFragmentRoot ( IResource resource ) { } boolean isRootOfProject ( IPath path ) { } public String toString ( ) { } } private static final int IGNORE = 0 ; private static final int SOURCE = 1 ; private static final int BINARY = 2 ; private static final String EXTERNAL_JAR_ADDED = "external<seq2seq4repair_space>jar<seq2seq4repair_space>added" ; private static final String EXTERNAL_JAR_CHANGED = "external<seq2seq4repair_space>jar<seq2seq4repair_space>changed" ; private static final String EXTERNAL_JAR_REMOVED = "external<seq2seq4repair_space>jar<seq2seq4repair_space>removed" ; private static final String EXTERNAL_JAR_UNCHANGED = "external<seq2seq4repair_space>jar<seq2seq4repair_space>unchanged" ; private static final String INTERNAL_JAR_IGNORE = "internal<seq2seq4repair_space>jar<seq2seq4repair_space>ignore" ; private static final int NON_JAVA_RESOURCE = - 1 ; public static boolean DEBUG = false ; public static boolean VERBOSE = false ; public static boolean PERF = false ; public static final int DEFAULT_CHANGE_EVENT = 0 ; public static long getTimeStamp ( File file ) { } private DeltaProcessingState state ; JavaModelManager manager ; private JavaElementDelta currentDelta ; private Openable currentElement ; public ArrayList javaModelDeltas = new ArrayList ( ) ; public HashMap reconcileDeltas = new HashMap ( ) ; private boolean isFiring = true ; private final ModelUpdater modelUpdater = new ModelUpdater ( ) ; public HashSet projectCachesToReset = new HashSet ( ) ; public Map oldRoots ; public int overridenEventType = - 1 ; private SourceElementParser sourceElementParserCache ; public HashMap classpathChanges = new HashMap ( ) ; public DeltaProcessor ( DeltaProcessingState state , JavaModelManager manager ) { } public ClasspathChange addClasspathChange ( IProject project , IClasspathEntry [ ] oldRawClasspath , IPath oldOutputLocation , IClasspathEntry [ ] oldResolvedClasspath ) { } private void addDependentProjects ( IJavaProject project , HashMap projectDependencies , HashSet result ) { } private void addToParentInfo ( Openable child ) { } private void checkProjectsBeingAddedOrRemoved ( IResourceDelta delta ) { } private void checkExternalFolderChange ( IProject project , JavaProject javaProject ) { } private void checkProjectReferenceChange ( IProject project , JavaProject javaProject ) { } private void readRawClasspath ( JavaProject javaProject ) { } private void checkSourceAttachmentChange ( IResourceDelta delta , IResource res ) { } private void close ( Openable element ) { } private void contentChanged ( Openable element ) { } private Openable createElement ( IResource resource , int elementType , DeltaProcessor . RootInfo rootInfo ) { } public void checkExternalArchiveChanges ( IJavaElement [ ] elementsScope , IProgressMonitor monitor ) throws JavaModelException { } private boolean createExternalArchiveDelta ( HashSet refreshedElements , IProgressMonitor monitor ) { } private JavaElementDelta currentDelta ( ) { } private void deleting ( IProject project ) { } private void elementAdded ( Openable element , IResourceDelta delta , DeltaProcessor . RootInfo rootInfo ) { int elementType = element . getElementType ( ) ; if ( elementType == ( IJavaElement . JAVA_PROJECT ) ) { IProject project ; if ( ( delta != null ) && ( JavaProject . hasJavaNature ( ( project = ( ( IProject ) ( delta . getResource ( ) ) ) ) ) ) ) { addToParentInfo ( element ) ; <START_BUG> this . manager . getPerProjectInfo ( project , false ) . rememberExternalLibTimestamps ( ) ; <END_BUG> if ( ( ( delta . getFlags ( ) ) & ( IResourceDelta . MOVED_FROM ) ) != 0 ) { Openable movedFromElement = ( ( Openable ) ( element . getJavaModel ( ) . getJavaProject ( delta . getMovedFromPath ( ) . lastSegment ( ) ) ) ) ; currentDelta ( ) . movedTo ( element , movedFromElement ) ; } else { close ( element ) ; currentDelta ( ) . added ( element ) ; } this . state . updateRoots ( element . getPath ( ) , delta , this ) ; this . projectCachesToReset . add ( element ) ; } } else { if ( ( delta == null ) || ( ( ( delta . getFlags ( ) ) & ( IResourceDelta . MOVED_FROM ) ) == 0 ) ) { if ( isPrimaryWorkingCopy ( element , elementType ) ) { currentDelta ( ) . changed ( element , IJavaElementDelta . F_PRIMARY_RESOURCE ) ; } else { addToParentInfo ( element ) ; close ( element ) ; currentDelta ( ) . added ( element ) ; } } else { addToParentInfo ( element ) ; close ( element ) ; IPath movedFromPath = delta . getMovedFromPath ( ) ; IResource res = delta . getResource ( ) ; IResource movedFromRes ; if ( res instanceof IFile ) { movedFromRes = res . getWorkspace ( ) . getRoot ( ) . getFile ( movedFromPath ) ; } else { movedFromRes = res . getWorkspace ( ) . getRoot ( ) . getFolder ( movedFromPath ) ; } IPath rootPath = externalPath ( movedFromRes ) ; DeltaProcessor . RootInfo movedFromInfo = enclosingRootInfo ( rootPath , IResourceDelta . REMOVED ) ; int movedFromType = elementType ( movedFromRes , IResourceDelta . REMOVED , element . getParent ( ) . getElementType ( ) , movedFromInfo ) ; this . currentElement = null ; Openable movedFromElement = ( ( elementType != ( IJavaElement . JAVA_PROJECT ) ) && ( movedFromType == ( IJavaElement . JAVA_PROJECT ) ) ) ? null : createElement ( movedFromRes , movedFromType , movedFromInfo ) ; if ( movedFromElement == null ) { currentDelta ( ) . added ( element ) ; } else { currentDelta ( ) . movedTo ( element , movedFromElement ) ; } }

Fix:
this . manager . getPerProjectInfo ( project , true ) . rememberExternalLibTimestamps ( ) ;