@Override
  public boolean delete(@NotNull VirtualFile file) {
    if (!isMyVcs(file)) return false;

    startOperation(file);
    if (SvnUtil.isAdminDirectory(file)) return true;

    final VcsShowConfirmationOption.Value value = myDeleteConfirmation.getValue();
    if (VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY.equals(value)) return false;

    final File ioFile = getIOFile(file);
    if (!SvnUtil.isSvnVersioned(myVcs, ioFile.getParentFile()) || SvnUtil.isWorkingCopyRoot(ioFile)) {
      return false;
    }

    Status status = getFileStatus(ioFile);

    if (status == null ||
        status.is(StatusType.STATUS_UNVERSIONED, StatusType.STATUS_OBSTRUCTED, StatusType.STATUS_EXTERNAL, StatusType.STATUS_IGNORED)) {
      return false;
    }
    else if (status.is(StatusType.STATUS_DELETED)) {
      if (isUndo()) {
        moveToUndoStorage(file);
      }
      return true;
    }
    else {
      if (isAboveSourceOfCopyOrMove(ioFile)) {
        myDeletedFiles.add(ioFile);
        return true;
      }
      if (status.is(StatusType.STATUS_ADDED)) {
        try {
          createRevertAction(ioFile, false).execute();
        }
        catch (VcsException e) {
          // ignore
        }
      }
      else {
        myDeletedFiles.add(ioFile);
        // packages deleted from disk should not be deleted from svn (IDEADEV-16066)
        if (file.isDirectory() || isUndo()) return true;
      }
      return false;
    }
  }
@Override
  public boolean delete(@NotNull VirtualFile file)