public <T> T callWithSpan(@NotNull String spanName,
                            @NotNull Consumer<SpanBuilder> configurator,
                            @NotNull Function<Span, T> fn) {
    SpanBuilder spanBuilder = tracer.spanBuilder(spanName);
    configurator.accept(spanBuilder);
    Span span = spanBuilder.startSpan();
    try (Scope ignore = span.makeCurrent()) {
      return fn.apply(span);
    }
    catch (Exception e) {
      span.recordException(e);
      span.setStatus(StatusCode.ERROR);
      throw e;
    }
    finally {
      span.end();
    }
  }
public <T> T callWithSpan(@NotNull String spanName,
                            @NotNull Consumer<SpanBuilder> configurator,
                            @NotNull Function<Span, T> fn)