VcsFullCommitDetails (@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)); }