docs: private Deferred<IncomingDataPoint> resolveNames(final IncomingDataPoint dp) {
      // If the caller gave us a metric and tags, save some time by NOT hitting
      // our UID tables or storage.
      if (metric != null) {
        dp.setMetric(metric);
        dp.setTags((HashMap<String, String>)tags);
        return Deferred.fromResult(dp);
      }
      
      class TagsCB implements Callback<IncomingDataPoint, HashMap<String, String>> {
        public IncomingDataPoint call(final HashMap<String, String> tags) 
          throws Exception {
          dp.setTags(tags);
          return dp;
        }
        @Override
        public String toString() {
          return "Tags resolution CB";
        }
      }
      
      class MetricCB implements Callback<Deferred<IncomingDataPoint>, String> {
        public Deferred<IncomingDataPoint> call(final String name) 
            throws Exception {
          dp.setMetric(name);
          final List<byte[]> tags = UniqueId.getTagPairsFromTSUID(tsuid);
          return Tags.resolveIdsAsync(tsdb, tags).addCallback(new TagsCB());
        }
        @Override
        public String toString() {
          return "Metric resolution CB";
        }
      }
      
      final byte[] metric_uid = Arrays.copyOfRange(tsuid, 0, TSDB.metrics_width());     
      return tsdb.getUidName(UniqueIdType.METRIC, metric_uid)
          .addCallbackDeferring(new MetricCB());
    }