Buggy code:
if ( JavaModelManager . CP_RESOLVE_VERBOSE ) { Util . verbose ( ( ( ( ( ( "CPVariable<seq2seq4repair_space>SET<seq2seq4repair_space>-<seq2seq4repair_space>setting<seq2seq4repair_space>variables\n" + "<seq2seq4repair_space>variables:<seq2seq4repair_space>" ) + ( org . eclipse . jdt . internal . compiler . util . Util . toString ( variableNames ) ) ) + '\n' ) + "<seq2seq4repair_space>values:<seq2seq4repair_space>" ) + ( org . eclipse . jdt . internal . compiler . util . Util . toString ( variablePaths ) ) ) ) ; } if ( variablePutIfInitializingWithSameValue ( variableNames , variablePaths ) ) return ; int varLength = variableNames . length ; final HashMap affectedProjectClasspaths = new HashMap ( 5 ) ; IJavaModel model = getJavaModel ( ) ; int discardCount = 0 ; for ( int i = 0 ; i < varLength ; i ++ ) { String variableName = variableNames [ i ] ; IPath oldPath = this . variableGet ( variableName ) ; if ( oldPath == ( JavaModelManager . VARIABLE_INITIALIZATION_IN_PROGRESS ) ) { oldPath = null ; } if ( ( oldPath != null ) && ( oldPath . equals ( variablePaths [ i ] ) ) ) { variableNames [ i ] = null ; discardCount ++ ; } } if ( discardCount > 0 ) { if ( discardCount == varLength ) return ; int changedLength = varLength - discardCount ; String [ ] changedVariableNames = new String [ changedLength ] ; IPath [ ] changedVariablePaths = new IPath [ changedLength ] ; for ( int i = 0 , index = 0 ; i < varLength ; i ++ ) { if ( ( variableNames [ i ] ) != null ) { changedVariableNames [ index ] = variableNames [ i ] ; changedVariablePaths [ index ] = variablePaths [ i ] ; index ++ ; } } variableNames = changedVariableNames ; variablePaths = changedVariablePaths ; varLength = changedLength ; } if ( ( monitor != null ) && ( monitor . isCanceled ( ) ) ) return ; if ( model != null ) { IJavaProject [ ] projects = model . getJavaProjects ( ) ; nextProject : for ( int i = 0 , projectLength = projects . length ; i < projectLength ; i ++ ) { JavaProject project = ( ( JavaProject ) ( projects [ i ] ) ) ; IClasspathEntry [ ] classpath = project . getRawClasspath ( ) ; for ( int j = 0 , cpLength = classpath . length ; j < cpLength ; j ++ ) { IClasspathEntry entry = classpath [ j ] ; for ( int k = 0 ; k < varLength ; k ++ ) { String variableName = variableNames [ k ] ; if ( ( entry . getEntryKind ( ) ) == ( IClasspathEntry . CPE_VARIABLE ) ) { if ( variableName . equals ( entry . getPath ( ) . segment ( 0 ) ) ) { affectedProjectClasspaths . put ( project , project . getResolvedClasspath ( true , false , false ) ) ; continue nextProject ; } IPath sourcePath ; IPath sourceRootPath ; if ( ( ( ( sourcePath = entry . getSourceAttachmentPath ( ) ) != null ) && ( variableName . equals ( sourcePath . segment ( 0 ) ) ) ) || ( ( ( sourceRootPath = entry . getSourceAttachmentRootPath ( ) ) != null ) && ( variableName . equals ( sourceRootPath . segment ( 0 ) ) ) ) ) { affectedProjectClasspaths . put ( project , project . getResolvedClasspath ( true , false , false ) ) ; continue nextProject ; } } } } } } for ( int i = 0 ; i < varLength ; i ++ ) { this . variablePut ( variableNames [ i ] , variablePaths [ i ] ) ; } final String [ ] dbgVariableNames = variableNames ; if ( ! ( affectedProjectClasspaths . isEmpty ( ) ) ) { try { final boolean canChangeResources = ! ( ResourcesPlugin . getWorkspace ( ) . isTreeLocked ( ) ) ; JavaCore . run ( new IWorkspaceRunnable ( ) { public void run ( IProgressMonitor progressMonitor ) throws CoreException { Iterator projectsToUpdate = affectedProjectClasspaths . keySet ( ) . iterator ( ) ; while ( projectsToUpdate . hasNext ( ) ) { if ( ( progressMonitor != null ) && ( progressMonitor . isCanceled ( ) ) ) return ; JavaProject affectedProject = ( ( JavaProject ) ( projectsToUpdate . next ( ) ) ) ; if ( JavaModelManager . CP_RESOLVE_VERBOSE ) { Util . verbose ( ( ( ( ( ( "CPVariable<seq2seq4repair_space>SET<seq2seq4repair_space>-<seq2seq4repair_space>updating<seq2seq4repair_space>affected<seq2seq4repair_space>project<seq2seq4repair_space>due<seq2seq4repair_space>to<seq2seq4repair_space>setting<seq2seq4repair_space>variables\n" + "<seq2seq4repair_space>project:<seq2seq4repair_space>" ) + ( affectedProject . getElementName ( ) ) ) + '\n' ) + "<seq2seq4repair_space>variables:<seq2seq4repair_space>" ) + ( org . eclipse . jdt . internal . compiler . util . Util . toString ( dbgVariableNames ) ) ) ) ; } <START_BUG> affectedProject . setRawClasspath ( affectedProject . getRawClasspath ( ) , REUSE_PATH , null , canChangeResources , ( ( IClasspathEntry [ ] ) ( affectedProjectClasspaths . get ( affectedProject ) ) ) , false , false ) ; <END_BUG> } } } , null , monitor ) ; } catch ( CoreException e ) { if ( JavaModelManager . CP_RESOLVE_VERBOSE ) { Util . verbose ( ( ( "CPVariable<seq2seq4repair_space>SET<seq2seq4repair_space>-<seq2seq4repair_space>FAILED<seq2seq4repair_space>DUE<seq2seq4repair_space>TO<seq2seq4repair_space>EXCEPTION\n" + "<seq2seq4repair_space>variables:<seq2seq4repair_space>" ) + ( org . eclipse . jdt . internal . compiler . util . Util . toString ( dbgVariableNames ) ) ) , System . err ) ; e . printStackTrace ( ) ; } if ( e instanceof JavaModelException ) { throw ( ( JavaModelException ) ( e ) ) ; } else { throw new JavaModelException ( e ) ; } } } } private HashSet variableInitializationInProgress ( ) { } public synchronized String [ ] variableNames ( ) { } public synchronized void variablePut ( String variableName , IPath variablePath ) { } public boolean variablePutIfInitializingWithSameValue ( String [ ] variableNames , IPath [ ] variablePaths ) { } }

Fix:
affectedProject . setRawClasspath ( affectedProject . getRawClasspath ( ) , DO_NOT_SET_OUTPUT , null , canChangeResources , ( ( IClasspathEntry [ ] ) ( affectedProjectClasspaths . get ( affectedProject ) ) ) , false , false ) ;