Buggy code:
private int elementChangedListenerCount = 0 ; public int currentChangeEventType = ElementChangedEvent . PRE_AUTO_BUILD ; public static final int DEFAULT_CHANGE_EVENT = 0 ; public final DeltaProcessor deltaProcessor = new DeltaProcessor ( this ) ; private final ModelUpdater modelUpdater = new ModelUpdater ( ) ; public IJavaProject [ ] javaProjectsCache ; protected Map perProjectInfo = new HashMap ( 5 ) ; public Map sharedWorkingCopies = new HashMap ( ) ; protected WeakHashMap scopes = new WeakHashMap ( ) ; public static class PerProjectInfo { public IProject project ; public Object savedState ; public boolean triedRead ; public IClasspathEntry [ ] classpath ; public IClasspathEntry [ ] lastResolvedClasspath ; public IPath outputLocation ; public Preferences preferences ; public PerProjectInfo ( IProject project ) { } } public static boolean VERBOSE = false ; public static boolean CP_RESOLVE_VERBOSE = false ; public static boolean ZIP_ACCESS_VERBOSE = false ; private HashMap zipFiles = new HashMap ( ) ; public static class PluginPreferencesListener implements Preferences . IPropertyChangeListener { public void propertyChange ( Preferences . PropertyChangeEvent event ) { } } private JavaModelManager ( ) { } public void addElementChangedListener ( IElementChangedListener listener ) { } public void addElementChangedListener ( IElementChangedListener listener , int eventMask ) { } public synchronized void cacheZipFiles ( ) { } public synchronized void closeZipFile ( ZipFile zipFile ) { } public void configurePluginDebugOptions ( ) { } public void doneSaving ( ISaveContext context ) { } public void fire ( IJavaElementDelta customDelta , int eventType ) { } private void firePreAutoBuildDelta ( IJavaElementDelta deltaToNotify , IElementChangedListener [ ] listeners , int [ ] listenerMask , int listenerCount ) { } private void firePostChangeDelta ( IJavaElementDelta deltaToNotify , IElementChangedListener [ ] listeners , int [ ] listenerMask , int listenerCount ) { } private void fireReconcileDelta ( IElementChangedListener [ ] listeners , int [ ] listenerMask , int listenerCount ) { } public void notifyListeners ( IJavaElementDelta deltaToNotify , int eventType , IElementChangedListener [ ] listeners , int [ ] listenerMask , int listenerCount ) { } protected void flush ( ) { } public synchronized void flushZipFiles ( ) { } protected Map getElementsOutOfSynchWithBuffers ( ) { } public IJavaElement getHandleFromMemento ( String memento ) throws JavaModelException { } public IndexManager getIndexManager ( ) { } public Object getInfo ( IJavaElement element ) { } public final JavaModel getJavaModel ( ) { } public static final JavaModelManager getJavaModelManager ( ) { } public Object getLastBuiltState ( IProject project , IProgressMonitor monitor ) { } public JavaModelManager . PerProjectInfo getPerProjectInfo ( IProject project ) { } public synchronized JavaModelManager . PerProjectInfo getPerProjectInfo ( IProject project , boolean create ) { } public JavaModelManager . PerProjectInfo getPerProjectInfoCheckExistence ( IProject project ) throws JavaModelException { } public static String [ ] getRegisteredVariableNames ( ) { } public static String [ ] getRegisteredContainerIDs ( ) { } private File getSerializationFile ( IProject project ) { } public synchronized ZipFile getZipFile ( IPath path ) throws CoreException { } public void loadVariablesAndContainers ( ) throws CoreException { } public IJavaElementDelta mergeDeltas ( Collection deltas ) { } protected Object peekAtInfo ( IJavaElement element ) { } public void prepareToSave ( ISaveContext context ) throws CoreException { } protected void putInfo ( IJavaElement element , Object info ) { } protected Object readState ( IProject project ) throws CoreException { } public static void recreatePersistedContainer ( String propertyName , String containerString , boolean addToContainerValues ) { int containerPrefixLength = JavaModelManager . CP_CONTAINER_PREFERENCES_PREFIX . length ( ) ; int index = propertyName . indexOf ( '|' , containerPrefixLength ) ; if ( containerString != null ) containerString = containerString . trim ( ) ; if ( index > 0 ) { final String projectName = propertyName . substring ( containerPrefixLength , index ) . trim ( ) ; JavaProject project = ( ( JavaProject ) ( JavaModelManager . getJavaModelManager ( ) . getJavaModel ( ) . getJavaProject ( projectName ) ) ) ; final IPath containerPath = new Path ( propertyName . substring ( ( index + 1 ) ) . trim ( ) ) ; if ( ( containerString == null ) || ( containerString . equals ( JavaModelManager . CP_ENTRY_IGNORE ) ) ) { JavaModelManager . containerPut ( project , containerPath , null ) ; } else { final IClasspathEntry [ ] containerEntries = project . decodeClasspath ( containerString , false , false ) ; <START_BUG> if ( containerEntries != null ) { <END_BUG> IClasspathContainer container = new IClasspathContainer ( ) { public IClasspathEntry [ ] getClasspathEntries ( ) { return containerEntries ; } public String getDescription ( ) { return ( ( ( "Persisted<seq2seq4repair_space>container<seq2seq4repair_space>[" + containerPath ) + "<seq2seq4repair_space>for<seq2seq4repair_space>project<seq2seq4repair_space>[" ) + projectName ) + "]" ; } public int getKind ( ) { return 0 ; } public IPath getPath ( ) { return containerPath ; } public String toString ( ) { return getDescription ( ) ; } } ; if ( addToContainerValues ) { JavaModelManager . containerPut ( project , containerPath , container ) ; } Map projectContainers = ( ( Map ) ( JavaModelManager . PreviousSessionContainers . get ( project ) ) ) ; if ( projectContainers == null ) { projectContainers = new HashMap ( 1 ) ; JavaModelManager . PreviousSessionContainers . put ( project , projectContainers ) ; } projectContainers . put ( containerPath , container ) ; } } } } protected void registerJavaModelDelta ( IJavaElementDelta delta ) { } public void rememberScope ( AbstractSearchScope scope ) { } public void removeElementChangedListener ( IElementChangedListener listener ) { } protected void removeInfo ( IJavaElement element ) { } public void removePerProjectInfo ( JavaProject javaProject ) { } public void rollback ( ISaveContext context ) { } private void saveState ( JavaModelManager . PerProjectInfo info , ISaveContext context ) throws CoreException { } private void saveBuiltState ( JavaModelManager . PerProjectInfo info ) throws CoreException { } public void saving ( ISaveContext context ) throws CoreException { } protected void setBuildOrder ( String [ ] javaBuildOrder ) throws JavaModelException { }

Fix:
if ( ( containerEntries != null ) && ( containerEntries != ( JavaProject . INVALID_CLASSPATH ) ) ) {