@SuppressWarnings({"rawtypes", "unchecked"})
    public <T extends Gauge> T gauge(String name) {
        return (T) getOrAdd(name, MetricBuilder.GAUGES);
    }
@Test
    public void accessingAnExistingGaugeReusesIt() {
        final Gauge<String> gauge1 = registry.gauge("thing", () -> () -> "string-gauge");
        final Gauge<String> gauge2 = registry.gauge("thing", () -> new DefaultSettableGauge<>("settable-gauge"));

        assertThat(gauge1).isSameAs(gauge2);
        assertThat(gauge2.getValue()).isEqualTo("string-gauge");

        verify(listener).onGaugeAdded("thing", gauge1);
    }