docs: @Override
     public void start() {
        synchronized (this) {
           try {
              while (state == ComponentStatus.INITIALIZING) {
                 wait();
              }
              if (state != ComponentStatus.INSTANTIATED) {
                 return;
              }
  
              state = ComponentStatus.INITIALIZING;
           } catch (InterruptedException e) {
              throw new CacheException("Interrupted waiting for the component registry to start");
           }
        }
  
        try {
           preStart();
  
           internalStart();
  
           synchronized (this) {
              state = ComponentStatus.RUNNING;
              notifyAll();
           }
  
           postStart();
        } catch (Throwable t) {
           synchronized (this) {
              state = ComponentStatus.FAILED;
              notifyAll();
           }
  
           try {
              stop();
           } catch (Throwable t1) {
              t.addSuppressed(t1);
           }
  
           handleLifecycleTransitionFailure(t);
        }
     }