docs: public List<ChangesByCommit> groupByCommit() {
          Map<CommitMetadata, List<Change>> changesByCommit = changes.stream().collect(
                  groupingBy(c -> c.getCommitMetadata().orElseThrow( () -> new IllegalStateException("No CommitMetadata in this Change")),
                             () -> new LinkedHashMap<>(), toList()));
  
          List<ChangesByCommit> result = new ArrayList<>();
          changesByCommit.forEach((k,v) -> {
              result.add(new ChangesByCommit(k, v, valuePrinter));
          });
  
          return Collections.unmodifiableList(result);
      }