code: public void printMessage(StringBuilder buf) {
      if (enabled) {
        done();
        writeNanos(buf, lastCheckpointNanos - startNanos);
        if (!checkpoints.isEmpty()) {
          buf.append("(");
          boolean first = true;
          for (Checkpoint checkpoint : checkpoints) {
            if (first) {
              first = false;
            } else {
              buf.append(',');
            }
            buf.append(checkpoint.description);
            if (checkpoint.args != null && checkpoint.args.length > 0) {
              buf.append('[');
              boolean firstArg = true;
              for (Object o : checkpoint.args) {
                if (firstArg) {
                  firstArg = false;
                } else {
                  buf.append(',');
                }
                buf.append(sanitizeArg(String.valueOf(o)));
              }
              buf.append(']');
            }
            buf.append('=');
            writeNanos(buf, checkpoint.durationNanos);
          }
          buf.append(')');
        }
      } else {
        buf.append("metricsDisabled");
      }
    }
docs: Construct and print a message based on the timing and checkpoints. This
  will look like "123.456ms(checkpoint1=100.228ms,checkpoint2=23.228ms)"
  without the quotes. There will be no spaces or tabs in the output. A
  value of {@code "metricsDisabled"} will be printed if {@code false} was
  passed in the constructor.
  
  <p>This will automatically call the done() method to stop the timer if
  you haven't already done so.</p>
  
  @param buf the message will be printed to this builder
  @see #getMessage()