code: @Override
      protected String doForward(final String hierarchical) {
          log.debug("Converting outgoing identifier: {}", hierarchical);
          final List<String> segments = asList(hierarchical.split(separator));
          if (segments.size() <= levels) {
              // must be a root identifier
              return "";
          }
          List<String> firstSegments = emptyList();
          List<String> lastSegment = emptyList();
          if (segments.size() > levels + 1) {
              // we subtract one for the final segment, then levels for the
              // inserted hierarchy segments we want to remove
              firstSegments = segments.subList(0, segments.size() - 1 - levels);
              lastSegment = singletonList(getLast(segments));
          } else {
              // just the trailing non-hierarchical segment
              lastSegment = singletonList(getLast(segments));
          }
          return on(separator).join(concat(firstSegments, lastSegment));
      }
docs: /*
  (non-Javadoc)
  @see com.google.common.base.Converter#doForward(java.lang.Object)