code: public <T> void addGauge(final String name, final Supplier<T> gaugeFunc) {
      this.registry.register(name, (Gauge<T>) gaugeFunc::get);
    }
docs: A {@link Gauge} is an instantaneous reading of a particular value. This method leverages
  Supplier, a Functional Interface, to get Generics metrics values. With this support, no matter
  what our interesting metrics is a Double or a Long, we could pass it to Metrics Parser.
  
  E.g., in {@link CommonMetrics#setupAllMetrics()}, we construct a supplier lambda by having a
  AtomicLong object and its get method, in order to collect dbConnection metric.