docs: public void initialize() {
          try {
              writeLock.lock();
              if (!isInitialized()) {
                  super.initialize();
                  setInitialized(true);
                  this.initCalled = true;
              }
          } finally {
              // downgrade to readlock before releasing just in case
              readLock.lock();
              writeLock.unlock();
              readLock.unlock();
          }
      }