docs: String writeMetric(Meter.Id id, @Nullable String suffix, long wallTime, double value) {
          Meter.Id fullId = id;
          if (suffix != null)
              fullId = idWithSuffix(id, suffix);
  
          Iterable<Tag> tags = getConventionTags(fullId);
  
          String host = config.hostTag() == null ? "" : stream(tags.spliterator(), false)
                  .filter(t -> requireNonNull(config.hostTag()).equals(t.getKey()))
                  .findAny()
                  .map(t -> ",\"host\":\"" + escapeJson(t.getValue()) + "\"")
                  .orElse("");
  
          String tagsArray = tags.iterator().hasNext()
                  ? stream(tags.spliterator(), false)
                  .map(t -> "\"" + escapeJson(t.getKey()) + ":" + escapeJson(t.getValue()) + "\"")
                  .collect(joining(",", ",\"tags\":[", "]"))
                  : "";
  
          return "{\"metric\":\"" + escapeJson(getConventionName(fullId)) + "\"," +
                  "\"points\":[[" + (wallTime / 1000) + ", " + value + "]]" + host + tagsArray + "}";
      }