code: public static MetricInstrumentedIterator of(KeyIterator keyIterator, String... prefix) {
          if (keyIterator == null) {
              return null;
          }
  
          Preconditions.checkNotNull(prefix);
          return new MetricInstrumentedIterator(keyIterator, StringUtils.join(prefix,"."));
      }
docs: If the iterator argument is non-null, then return a new
  {@code MetricInstrumentedIterator} wrapping it. Metrics for method calls
  on the wrapped instance will be prefixed with the string {@code prefix}
  which must be non-null. If the iterator argument is null, then return
  null.
  
  @param keyIterator
  the iterator to wrap with Metrics measurements
  @param prefix
  the Metrics name prefix string
  
  @return a wrapper around {@code keyIterator} or null if
  {@code keyIterator} is null