code: public void truncate(long newTruncationPoint) {
          if (newTruncationPoint < getFirstDrId()) {
              return;
          }
          final Iterator<Range<Long>> iter = m_map.asRanges().iterator();
          while (iter.hasNext()) {
              final Range<Long> next = iter.next();
              if (end(next) < newTruncationPoint) {
                  iter.remove();
              } else if (next.contains(newTruncationPoint)) {
                  iter.remove();
                  m_map.add(range(newTruncationPoint, end(next)));
                  return;
              } else {
                  break;
              }
          }
          m_map.add(range(newTruncationPoint, newTruncationPoint));
      }
docs: Truncate the tracker to the given safe point. After truncation, the new
  safe point will be the first DrId of the tracker. If the new safe point
  is before the first DrId of the tracker, it's a no-op.
  @param newTruncationPoint    New safe point