docs: synchronized void deactivate() throws Exception {
          this.proxyActivator.deactivate();
          this.instrumentation.removeTransformer(this.classAvailableTransformer);
          this.instrumentation.removeTransformer(this.transformer);
          this.shuttingDown = true;
  
          // Save the classes that have listeners so we can retransform
          Collection<Class<?>> probedClasses = processRemovedListeners(allRegisteredListeners);
  
          // Clear all data structures
          listenersLock.writeLock().lock();
          try {
              listenersForMonitor.clear();
              allRegisteredListeners.clear();
          } finally {
              listenersLock.writeLock().unlock();
          }
          activeProbesById.clear();
          listenersByProbe.clear();
          listenersByClass.clear();
          probesByKey.clear();
          probesByListener.clear();
  
          this.proxyActivator = null;
          this.transformer = null;
          this.componentContext = null;
  
          // Retransform the probed classes without our transformers in play
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(this, tc, "deactivate: probedClasses.size() = " + probedClasses.size());
          }
          for (Class<?> clazz : probedClasses) {
              instrumentation.retransformClasses(clazz);
          }
          this.instrumentation = null;
      }