private static @NotNull HtmlChunk getCommitterHtml(@Nullable VcsUser committer, @Nullable Long commitTime) {
    if (committer == null && commitTime == null) {
      return HtmlChunk.empty();
    }

    String style = "color:#" + ColorUtil.toHex(JBColor.GRAY);
    HtmlChunk.Element graySpan = HtmlChunk.span(style);

    String committed;
    if (committer == null) {
      String date = DateFormatUtil.formatDate(commitTime);
      String time = DateFormatUtil.formatTime(commitTime);
      committed = VcsLogBundle.message("vcs.log.details.committer.info.date.time", date, time);
    }
    else {
      String by = VcsUserUtil.getShortPresentation(committer) +
                  (!committer.getEmail().isEmpty() ? "</span> " + getEmailLink(committer) + "<span style=\"" + style + "\">" : "");
      if (commitTime == null) {
        committed = VcsLogBundle.message("vcs.log.details.committer.info.user", by);
      }
      else {
        String date = DateFormatUtil.formatDate(commitTime);
        String time = DateFormatUtil.formatTime(commitTime);
        committed = VcsLogBundle.message("vcs.log.details.committer.info.user.date.time", by, date, time);
      }
    }
    return new HtmlBuilder().appendRaw(committed).wrapWith(graySpan);
  }
private static @NotNull HtmlChunk getCommitterHtml(@Nullable VcsUser committer, @Nullable Long commitTime)