class OpenTelemetryExponentialHistogram {

        final io.opentelemetry.api.metrics.DoubleHistogram histogram;

        public OpenTelemetryExponentialHistogram() {

            SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
                    .registerMetricReader(InMemoryMetricReader.create())
                    .setResource(Resource.getDefault())
                    .registerView(InstrumentSelector.builder()
                                    .setName("test")
                                    .build(),
                            View.builder()
                                    .setAggregation(Aggregation.base2ExponentialBucketHistogram(10_000, 5))
                                    .build()
                    )
                    .build();
            OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
                    .setMeterProvider(sdkMeterProvider)
                    .build();
            Meter meter = openTelemetry
                    .meterBuilder("instrumentation-library-name")
                    .setInstrumentationVersion("1.0.0")
                    .build();
            this.histogram = meter
                    .histogramBuilder("test")
                    .setDescription("test")
                    .build();
        }
    }

    @Benchmark
    @Threads(4)
    public Histogram prometheusClassic(RandomNumbers randomNumbers, PrometheusClassicHistogram histogram) {
        for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
            histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
        }
        return histogram.noLabels;
    }

    @Benchmark
    @Threads(4)
    public Histogram prometheusNative(RandomNumbers randomNumbers, PrometheusNativeHistogram histogram) {
        for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
            histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
        }
        return histogram.noLabels;
    }

    @Benchmark
    @Threads(4)
    public io.prometheus.client.Histogram simpleclient(RandomNumbers randomNumbers, SimpleclientHistogram histogram) {
        for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
            histogram.noLabels.observe(randomNumbers.randomNumbers[i]);
        }
        return histogram.noLabels;
    }

    @Benchmark
    @Threads(4)
    public io.opentelemetry.api.metrics.DoubleHistogram openTelemetryClassic(RandomNumbers randomNumbers, OpenTelemetryClassicHistogram histogram) {
        for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
            histogram.histogram.record(randomNumbers.randomNumbers[i]);
        }
        return histogram.histogram;
    }

    @Benchmark
    @Threads(4)
    public io.opentelemetry.api.metrics.DoubleHistogram openTelemetryExponential(RandomNumbers randomNumbers, OpenTelemetryExponentialHistogram histogram) {<FILL_FUNCTION_BODY>

        for (int i = 0; i < randomNumbers.randomNumbers.length; i++) {
            histogram.histogram.record(randomNumbers.randomNumbers[i]);
        }
        return histogram.histogram;
    
<no_super_class>