Program: 141682
Project: 141682
Buggy source:
@Override public void resourceChanged(IResourceChangeEvent event){
  IResourceDelta delta=event.getDelta();
  try {
    if (delta == null || editorFile == null) {
      return;
    }
    delta.accept(new IResourceDeltaVisitor(){
      @Override public boolean visit(      IResourceDelta delta) throws CoreException {
        IResource resource=delta.getResource();
        if (resource == null) {
          return false;
        }
        if (resource.getType() != IResource.FILE) {
          IPath location=resource.getLocation();
          if (location == null || !filePath.startsWith(location.toPortableString())) {
            return false;
          }
          return true;
        }
        if (resource.equals(editorFile)) {
          RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(SAVING_RESOURCE,this){
            @Override protected void run() throws LoginException, PersistenceException {
              RouteResourceEditor.saveContentsToItem(editorInput);
            }
          }
;
          repositoryWorkUnit.setAvoidUpdateLocks(false);
          repositoryWorkUnit.setAvoidUnloadResources(false);
          repositoryWorkUnit.setUnloadResourcesAfterRun(false);
          Display.getDefault().asyncExec(new Runnable(){
            @Override public void run(){
              CoreRuntimePlugin.getInstance().getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
            }
          }
);
          return false;
        }
        return false;
      }
    }
,IResource.FILE);
  }
 catch (  CoreException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
@Override public void resourceChanged(IResourceChangeEvent event){
  IResourceDelta delta=event.getDelta();
  try {
    if (delta == null || editorFile == null) {
      return;
    }
    delta.accept(new IResourceDeltaVisitor(){
      @Override public boolean visit(      IResourceDelta delta) throws CoreException {
        IResource resource=delta.getResource();
        if (resource == null) {
          return false;
        }
        if (resource.getType() != IResource.FILE) {
          IPath location=resource.getLocation();
          if (location == null || !filePath.startsWith(location.toPortableString())) {
            return false;
          }
          return true;
        }
        if (resource.equals(editorFile)) {
          final RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(SAVING_RESOURCE,this){
            @Override protected void run() throws LoginException, PersistenceException {
              RouteResourceEditor.saveContentsToItem(editorInput);
            }
          }
;
          repositoryWorkUnit.setAvoidUpdateLocks(false);
          repositoryWorkUnit.setAvoidUnloadResources(false);
          repositoryWorkUnit.setUnloadResourcesAfterRun(false);
          Display.getDefault().asyncExec(new Runnable(){
            @Override public void run(){
              CoreRuntimePlugin.getInstance().getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
            }
          }
);
          return false;
        }
        return false;
      }
    }
,IResource.FILE);
  }
 catch (  CoreException e) {
    e.printStackTrace();
  }
}