void (@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); }); } } }