@Override
  public void processFiles(final Collection<? extends VirtualFile> files, @Nullable final String changelist) {
    try {
      EditFileProvider provider = myVcs.getEditFileProvider();
      assert provider != null;
      provider.editFiles(VfsUtilCore.toVirtualFileArray(files));
    }
    catch (VcsException e) {
      Messages.showErrorDialog(VcsBundle.message("message.text.cannot.edit.file", e.getLocalizedMessage()),
                               VcsBundle.message("message.title.edit.files"));
    }
    ApplicationManager.getApplication().runWriteAction(() -> {
      for (final VirtualFile file : files) {
        file.refresh(false, false);
      }
    });
    if (changelist != null) {
      myChangeListManager.invokeAfterUpdate(true, () -> {
        LocalChangeList list = myChangeListManager.findChangeList(changelist);
        if (list != null) {
          List<Change> changes = ContainerUtil.mapNotNull(files, myChangeFunction);
          myChangeListManager.moveChangesTo(list, changes.toArray(Change.EMPTY_CHANGE_ARRAY));
        }
      });
    }
  }
@Override
  public void processFiles(final Collection<? extends VirtualFile> files, @Nullable final String changelist)