public static @NotNull VcsFullCommitDetails createDetails(@NotNull Project project,
                                                            @NotNull VirtualFile root,
                                                            @NotNull VcsLogObjectsFactory factory,
                                                            @NotNull HgFileRevision revision) {
    List<List<VcsFileStatusInfo>> reportedChanges = new ArrayList<>();
    reportedChanges.add(getStatusInfo(revision));

    HgRevisionNumber vcsRevisionNumber = revision.getRevisionNumber();
    List<? extends HgRevisionNumber> parents = vcsRevisionNumber.getParents();
    for (HgRevisionNumber parent : parents.stream().skip(1).toList()) {
      reportedChanges.add(getChangesFromParent(project, root, vcsRevisionNumber, parent));
    }

    Hash hash = factory.createHash(vcsRevisionNumber.getChangeset());
    List<Hash> parentsHashes = ContainerUtil.map(parents, p -> factory.createHash(p.getChangeset()));
    long time = revision.getRevisionDate().getTime();
    VcsUser author = factory.createUser(vcsRevisionNumber.getName(), vcsRevisionNumber.getEmail());
    return new VcsChangesLazilyParsedDetails(project, hash, parentsHashes, time, root, vcsRevisionNumber.getSubject(), author,
                                             vcsRevisionNumber.getCommitMessage(), author,
                                             time, reportedChanges, new HgChangesParser(vcsRevisionNumber));
  }
public static @NotNull VcsFullCommitDetails createDetails(@NotNull Project project,
                                                            @NotNull VirtualFile root,
                                                            @NotNull VcsLogObjectsFactory factory,
                                                            @NotNull HgFileRevision revision)