@Override
  public MiningConfiguration toDomainObject() {
    checkNotNull(
        transactionSelectionService,
        "transactionSelectionService must be set before using this object");

    final var updatableInitValuesBuilder =
        MutableInitValues.builder()
            .isMiningEnabled(isMiningEnabled)
            .extraData(extraData)
            .minTransactionGasPrice(minTransactionGasPrice)
            .minPriorityFeePerGas(minPriorityFeePerGas)
            .minBlockOccupancyRatio(minBlockOccupancyRatio);

    if (targetGasLimit != null) {
      updatableInitValuesBuilder.targetGasLimit(targetGasLimit);
    }
    if (coinbase != null) {
      updatableInitValuesBuilder.coinbase(coinbase);
    }

    return ImmutableMiningConfiguration.builder()
        .transactionSelectionService(transactionSelectionService)
        .mutableInitValues(updatableInitValuesBuilder.build())
        .nonPoaBlockTxsSelectionMaxTime(nonPoaBlockTxsSelectionMaxTime)
        .poaBlockTxsSelectionMaxTime(poaBlockTxsSelectionMaxTime)
        .unstable(
            ImmutableMiningConfiguration.Unstable.builder()
                .remoteSealersLimit(unstableOptions.remoteSealersLimit)
                .remoteSealersTimeToLive(unstableOptions.remoteSealersTimeToLive)
                .powJobTimeToLive(unstableOptions.powJobTimeToLive)
                .maxOmmerDepth(unstableOptions.maxOmmersDepth)
                .posBlockCreationMaxTime(unstableOptions.posBlockCreationMaxTime)
                .posBlockCreationRepetitionMinDuration(
                    unstableOptions.posBlockCreationRepetitionMinDuration)
                .build())
        .build();
  }
Validate that there are no inconsistencies in the specified options. For example that the
options are valid for the selected implementation.

@param commandLine the full commandLine to check all the options specified by the user
@param genesisConfigOptions is EthHash?
@param isMergeEnabled is the Merge enabled?
@param logger the logger
app/src/main/java/org/hyperledger/besu/cli/options/MiningOptions.java