private BaseQbftBlockHeightManager createFullBlockHeightManager(
      final QbftBlockHeader parentHeader) {

    QbftBlockHeightManager qbftBlockHeightManager;
    RoundChangeManager roundChangeManager;

    if (isEarlyRoundChangeEnabled) {
      roundChangeManager =
          new RoundChangeManager(
              BftHelpers.calculateRequiredValidatorQuorum(finalState.getValidators().size()),
              BftHelpers.calculateRequiredFutureRCQuorum(finalState.getValidators().size()),
              messageValidatorFactory.createRoundChangeMessageValidator(
                  parentHeader.getNumber() + 1L, parentHeader),
              finalState.getLocalAddress());
      qbftBlockHeightManager =
          new QbftBlockHeightManager(
              parentHeader,
              finalState,
              roundChangeManager,
              roundFactory,
              finalState.getClock(),
              messageValidatorFactory,
              messageFactory,
              validatorProvider,
              true);
    } else {
      roundChangeManager =
          new RoundChangeManager(
              BftHelpers.calculateRequiredValidatorQuorum(finalState.getValidators().size()),
              messageValidatorFactory.createRoundChangeMessageValidator(
                  parentHeader.getNumber() + 1L, parentHeader),
              finalState.getLocalAddress());
      qbftBlockHeightManager =
          new QbftBlockHeightManager(
              parentHeader,
              finalState,
              roundChangeManager,
              roundFactory,
              finalState.getClock(),
              messageValidatorFactory,
              messageFactory,
              validatorProvider);
    }

    return qbftBlockHeightManager;
  }
Creates a no-op height manager

@param parentHeader the parent header
@return the no-op height manager
consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManagerFactory.java