public void performCopyFrom(@NotNull DirDiffElementImpl element) {
    DiffElement<?> target = element.getTarget();
    if (target != null) {
      String path = element.getParentNode().getPath();

      if (target instanceof AsyncDiffElement) {
        ((AsyncDiffElement)target).copyToAsync(mySource, element.getSource(), path)
          .onError(error -> reportException(error == null ? null : error.getMessage()))
          .onSuccess(newElement -> refreshAfterCopyFrom(element, newElement));
      }
      else {
        WriteAction.run(() -> {
          DiffElement<?> diffElement = target.copyTo(mySource, path);
          refreshElementAfterCopyFrom(element, diffElement);
        });
      }
    }
  }
public void performCopyFrom(@NotNull DirDiffElementImpl element)