@Override
  public OperationTimer labels(final String... labelValues) {
    AttributesBuilder builder = Attributes.builder();
    for (int i = 0; i < labelNames.length; i++) {
      builder.put(labelNames[i], labelValues[i]);
    }
    final Attributes labels = builder.build();

    return () -> {
      final long startTime = System.nanoTime();
      return () -> {
        long elapsed = System.nanoTime() - startTime;
        meter
            .gaugeBuilder(metricName)
            .setDescription(help)
            .buildWithCallback((measurement) -> measurement.record((double) elapsed, labels));
        return elapsed / 1e9;
      };
    };
  }
Instantiates a new Open telemetry timer.

@param metricName the metric name
@param help the help
@param meter the meter
@param labelNames the label names
metrics/core/src/main/java/org/hyperledger/besu/metrics/opentelemetry/OpenTelemetryTimer.java