class SpanShim extends BaseShimObject implements Span {

  @Override
  public SpanContext context() {
    /* Read the value using the read lock first. */
    SpanContextShim contextShim = spanContextTable().get(this);

    /* Switch to the write lock *only* for the relatively exceptional case
     * of no context being created.
     * (as we cannot upgrade read->write lock sadly).*/
    if (contextShim == null) {
      contextShim = spanContextTable().create(this);
    }

    return contextShim;
  }

  public  SpanShim(TelemetryInfo telemetryInfo, io.opentelemetry.trace.Span span);

}