code: @Override
    public List<Record> signalEndTrack(int newDepth, long timeOfEnd) {
      //(pop info)
      TrackInfo childInfo = this.info;
      if(childInfo == null){
        throw new IllegalStateException("OutputHandler received endTrack() without matching startTrack() --" +
            "are your handlers mis-configured?");
      }
      if(trackStack.empty()){
        this.info = null;
      } else {
        this.info = this.trackStack.pop();
        this.info.numElementsPrinted += childInfo.numElementsPrinted;
      }
      //(handle track)
      if(this.queuedTracks.isEmpty()){
        StringBuilder b = new StringBuilder();
        if(!this.missingOpenBracket){
          //(write margin)
          for(int i=0; i<this.leftMargin; i++){
            b.append(" ");
          }
          //(null content)
          writeContent(newDepth, "", b);
          //(write bracket)
          b.append("} ");
        }
        this.missingOpenBracket = false;
        //(write matching line)
        if(childInfo != null && childInfo.numElementsPrinted > this.minLineCountForTrackNameReminder){
          b.append("<< ").append(childInfo.name).append(" ");
        }
        //(write time)
        if(childInfo != null && timeOfEnd-childInfo.beginTime > 100){
          b.append("[");
          Redwood.formatTimeDifference(timeOfEnd-childInfo.beginTime,b);
          b.append("]");
        }
        //(print)
        b.append("\n");
        print(this.style(new StringBuilder(), b.toString(), trackColor, trackStyle).toString());
      } else {
        this.queuedTracks.removeLast();
      }
      return EMPTY; //don't send extra records
    }
docs: {@inheritDoc}