docs: @Override
      protected final T create(Object... args) {
          if (this.creating.get()) {
              throw new IllegalStateException(
                      "Singleton creator has been called again while creation is in progress, this is indicative of a creation loop in a single thread");
          }
  
          this.creating.set(true);
          try {
              final T instance = this.createSingleton(args);
              this.instance = instance;
              this.created.set(true);
              return instance;
          } finally {
              this.creating.set(false);
          }
      }