public static @NotNull List<StagedFileOrDirectory> listTreeForRawPaths(@Nullable Project project,
                                                                         @NotNull VirtualFile repositoryRoot,
                                                                         @NotNull List<String> filePaths,
                                                                         @NotNull VcsRevisionNumber revision) throws VcsException {
    List<StagedFileOrDirectory> result = new ArrayList<>();

    GitLineHandler h = new GitLineHandler(project, repositoryRoot, GitCommand.LS_TREE);
    h.addParameters(revision.asString());
    h.endOptions();
    h.addParameters(filePaths);

    h.addLineListener(new GitLineHandlerListener() {
      @Override
      public void onLineAvailable(String line, Key outputType) {
        if (outputType != ProcessOutputTypes.STDOUT) return;
        ContainerUtil.addIfNotNull(result, parseListTreeRecord(repositoryRoot, line));
      }
    });
    Git.getInstance().runCommandWithoutCollectingOutput(h).throwOnError();

    return result;
  }
public static @NotNull List<StagedFileOrDirectory> listTreeForRawPaths(@Nullable Project project,
                                                                         @NotNull VirtualFile repositoryRoot,
                                                                         @NotNull List<String> filePaths,
                                                                         @NotNull VcsRevisionNumber revision)