public static void doMove(Project project,@NotNull PsiElement[] elements,PsiElement targetContainer,DataContext dataContext,MoveCallback callback){
  if (elements.length == 0)   return;
  for (  MoveHandlerDelegate delegate : Extensions.getExtensions(MoveHandlerDelegate.EP_NAME)) {
    if (delegate.canMove(elements,targetContainer)) {
      delegate.doMove(project,elements,delegate.adjustTargetForMove(dataContext,targetContainer),callback);
      break;
    }
  }
}

public static void doMove ( Project project , @ NotNull PsiElement [ ] elements , PsiElement targetContainer , DataContext dataContext , MoveCallback callback ) { if ( elements . length == 0 ) return ; for ( MoveHandlerDelegate delegate : Extensions . getExtensions ( MoveHandlerDelegate . EP_NAME ) ) { if ( delegate . canMove ( elements , targetContainer ) ) { delegate . doMove ( project , elements , delegate . adjustTargetForMove ( dataContext , targetContainer ) , callback ) ; break ; } } }
must be invoked in atomicaction
