Program: 127404
Project: 127404
Buggy source:
@Override public void moveObjectMulti(IRepositoryViewObject[] objToMoves,IPath newPath) throws PersistenceException {
  List<Resource> allResource=new ArrayList<Resource>();
  Map<Resource,IFolder> resourceFolderMap=new HashMap<Resource,IFolder>();
  IPath parentPath=null;
  Project project=getRepositoryContext().getProject();
  IProject fsProject=ResourceModelUtils.getProject(project);
  List<IRepositoryViewObject> allRepositoryViewObject=new ArrayList<IRepositoryViewObject>();
  for (  IRepositoryViewObject objToMove : objToMoves) {
    String folderName=ERepositoryObjectType.getFolderName(objToMove.getRepositoryObjectType()) + IPath.SEPARATOR + newPath;
    IFolder folder=ResourceUtils.getFolder(fsProject,folderName,true);
    parentPath=folder.getFullPath();
    ERepositoryObjectType itemType=ERepositoryObjectType.getItemType(objToMove.getProperty().getItem());
    FolderItem folderItem=getFolderItem(project,itemType,newPath);
    List<IRepositoryViewObject> objects=getSerializableFromFolder(project,folderItem,null,itemType,false,false,true,true,false);
    for (    IRepositoryViewObject oject : objects) {
      if (oject.getLabel().equalsIgnoreCase(objToMove.getLabel())) {
        throw new PersistenceException("String_Node_Str" + oject.getLabel() + "String_Node_Str"+ newPath.toPortableString());
      }
    }
    List<IRepositoryViewObject> allVersionToMove=getAllVersion(getRepositoryContext().getProject(),objToMove.getId(),false);
    for (    IRepositoryViewObject obj : allVersionToMove) {
      allRepositoryViewObject.add(obj);
      Item currentItem=obj.getProperty().getItem();
      if (currentItem.getParent() instanceof FolderItem) {
        ((FolderItem)currentItem.getParent()).getChildren().remove(currentItem);
      }
      FolderItem newFolderItem=getFolderItem(project,objToMove.getRepositoryObjectType(),newPath);
      newFolderItem.getChildren().add(currentItem);
      currentItem.setParent(newFolderItem);
      ItemState state=obj.getProperty().getItem().getState();
      state.setPath(newPath.toString());
      xmiResourceManager.saveResource(state.eResource());
      List<Resource> affectedResources=xmiResourceManager.getAffectedResources(obj.getProperty());
      for (      Resource resource : affectedResources) {
        xmiResourceManager.saveResource(resource);
        allResource.add(resource);
        resourceFolderMap.put(resource,folder);
      }
    }
  }
  Map<Resource,IPath> resourceAndPathMap=new HashMap<Resource,IPath>();
  for (  Resource resource : allResource) {
    IFolder folder=resourceFolderMap.get(resource);
    IPath path=folder.getFullPath().append(resource.getURI().lastSegment());
    resourceAndPathMap.put(resource,path);
    List<Resource> needSaves=findCrossReference(resource);
    moveResource(resource,path);
    saveCrossReference(needSaves);
  }
  svnMoveResource(allResource,parentPath,resourceAndPathMap);
  for (  IRepositoryViewObject objToMove : objToMoves) {
    List<IRepositoryViewObject> allVersionToMove=getAllVersion(getRepositoryContext().getProject(),objToMove.getId(),false);
    for (    IRepositoryViewObject obj : allVersionToMove) {
      List<Resource> affectedResources=xmiResourceManager.getAffectedResources(obj.getProperty());
      for (      Resource resource : affectedResources) {
        xmiResourceManager.saveResource(resource);
      }
    }
  }
  saveProject(project);
}

Fixed version (ground truth):
@Override public void moveObjectMulti(IRepositoryViewObject[] objToMoves,IPath newPath) throws PersistenceException {
  List<Resource> allResource=new ArrayList<Resource>();
  Map<Resource,IFolder> resourceFolderMap=new HashMap<Resource,IFolder>();
  IPath parentPath=null;
  Project project=getRepositoryContext().getProject();
  IProject fsProject=ResourceModelUtils.getProject(project);
  List<IRepositoryViewObject> allRepositoryViewObject=new ArrayList<IRepositoryViewObject>();
  for (  IRepositoryViewObject objToMove : objToMoves) {
    String folderName=ERepositoryObjectType.getFolderName(objToMove.getRepositoryObjectType()) + IPath.SEPARATOR + newPath;
    IFolder folder=ResourceUtils.getFolder(fsProject,folderName,true);
    parentPath=folder.getFullPath();
    ERepositoryObjectType itemType=ERepositoryObjectType.getItemType(objToMove.getProperty().getItem());
    FolderItem folderItem=getFolderItem(project,itemType,newPath);
    List<IRepositoryViewObject> objects=getSerializableFromFolder(project,folderItem,null,itemType,false,false,true,true,false);
    for (    IRepositoryViewObject oject : objects) {
      if (oject.getLabel().equalsIgnoreCase(objToMove.getLabel())) {
        throw new PersistenceException("String_Node_Str" + oject.getLabel() + "String_Node_Str"+ newPath.toPortableString());
      }
    }
    List<IRepositoryViewObject> allVersionToMove=getAllVersion(getRepositoryContext().getProject(),objToMove.getId(),false);
    for (    IRepositoryViewObject obj : allVersionToMove) {
      allRepositoryViewObject.add(obj);
      Item currentItem=obj.getProperty().getItem();
      if (currentItem.getParent() instanceof FolderItem) {
        ((FolderItem)currentItem.getParent()).getChildren().remove(currentItem);
      }
      FolderItem newFolderItem=getFolderItem(project,objToMove.getRepositoryObjectType(),newPath);
      newFolderItem.getChildren().add(currentItem);
      currentItem.setParent(newFolderItem);
      ItemState state=obj.getProperty().getItem().getState();
      state.setPath(newPath.toString());
      xmiResourceManager.saveResource(state.eResource());
      List<Resource> affectedResources=xmiResourceManager.getAffectedResources(obj.getProperty());
      for (      Resource resource : affectedResources) {
        xmiResourceManager.saveResource(resource);
        allResource.add(resource);
        resourceFolderMap.put(resource,folder);
      }
    }
  }
  Map<Resource,IPath> resourceAndPathMap=new HashMap<Resource,IPath>();
  List<Resource> crossReferences=new ArrayList<Resource>();
  for (  Resource resource : allResource) {
    IFolder folder=resourceFolderMap.get(resource);
    IPath path=folder.getFullPath().append(resource.getURI().lastSegment());
    resourceAndPathMap.put(resource,path);
    crossReferences.addAll(findCrossReference(resource));
    moveResource(resource,path);
  }
  svnMoveResource(allResource,parentPath,resourceAndPathMap);
  saveCrossReference(crossReferences);
  for (  IRepositoryViewObject objToMove : objToMoves) {
    List<IRepositoryViewObject> allVersionToMove=getAllVersion(getRepositoryContext().getProject(),objToMove.getId(),false);
    for (    IRepositoryViewObject obj : allVersionToMove) {
      List<Resource> affectedResources=xmiResourceManager.getAffectedResources(obj.getProperty());
      for (      Resource resource : affectedResources) {
        xmiResourceManager.saveResource(resource);
      }
    }
  }
  saveProject(project);
}