docs: public void changeScope(@Nullable final ThreadDelegatedContext context)
      {
          final ThreadDelegatedContext oldContext = threadLocal.get();
          if (oldContext != null) {
              if (oldContext == context) {
                  // If the context gets exchanged with itself, do nothing.
                  return;
              }
              else {
                  // This must not clear the context. It might still be
                  // referenced by another thread.
                  oldContext.event(ScopeEvent.LEAVE);
              }
          }
  
          if (context != null) {
              threadLocal.set(context);
              context.event(ScopeEvent.ENTER);
          }
          else {
              threadLocal.remove();
          }
      }