@Override
  public String expand(@NotNull DataContext dataContext, String @NotNull ... args) throws ExecutionCancelledException {
    if(args.length == 0) {
      return super.expand(dataContext, args);
    }
    VirtualFile dir = getVirtualDirOrParent(dataContext);
    if (dir == null) {
      return "";
    }
    String dirPath = dir.getPath();
    String surroundedSubDir = surroundWithSlashes(FileUtil.toSystemIndependentName(args[0]));
    String surroundedDirPath = surroundWithSlashes(dirPath);
    if (surroundedSubDir.length() == 1) {
      return FileUtil.toSystemDependentName(surroundedDirPath.substring(1));
    }
    int ind = lastIndexOf(surroundedDirPath,
                          surroundedSubDir,
                          surroundedDirPath.length(),
                          !dir.isCaseSensitive());
    if (ind >= 0) {
      return FileUtil.toSystemDependentName(surroundedDirPath.substring(ind + surroundedSubDir.length()));
    }
    return FileUtil.toSystemDependentName(dirPath.endsWith(PATH_DELIMITER) ? dirPath : dirPath + PATH_DELIMITER);
  }
@Override
  public String expand(@NotNull DataContext dataContext, String @NotNull ... args)