static MiningOptions fromConfig(final MiningConfiguration miningConfiguration) {
    final MiningOptions miningOptions = MiningOptions.create();
    miningOptions.setTransactionSelectionService(
        miningConfiguration.getTransactionSelectionService());
    miningOptions.isMiningEnabled = miningConfiguration.isMiningEnabled();
    miningOptions.extraData = miningConfiguration.getExtraData();
    miningOptions.minTransactionGasPrice = miningConfiguration.getMinTransactionGasPrice();
    miningOptions.minPriorityFeePerGas = miningConfiguration.getMinPriorityFeePerGas();
    miningOptions.minBlockOccupancyRatio = miningConfiguration.getMinBlockOccupancyRatio();
    miningOptions.nonPoaBlockTxsSelectionMaxTime =
        miningConfiguration.getNonPoaBlockTxsSelectionMaxTime();
    miningOptions.poaBlockTxsSelectionMaxTime =
        miningConfiguration.getPoaBlockTxsSelectionMaxTime();

    miningOptions.unstableOptions.remoteSealersLimit =
        miningConfiguration.getUnstable().getRemoteSealersLimit();
    miningOptions.unstableOptions.remoteSealersTimeToLive =
        miningConfiguration.getUnstable().getRemoteSealersTimeToLive();
    miningOptions.unstableOptions.powJobTimeToLive =
        miningConfiguration.getUnstable().getPowJobTimeToLive();
    miningOptions.unstableOptions.maxOmmersDepth =
        miningConfiguration.getUnstable().getMaxOmmerDepth();
    miningOptions.unstableOptions.posBlockCreationMaxTime =
        miningConfiguration.getUnstable().getPosBlockCreationMaxTime();
    miningOptions.unstableOptions.posBlockCreationRepetitionMinDuration =
        miningConfiguration.getUnstable().getPosBlockCreationRepetitionMinDuration();

    miningConfiguration.getCoinbase().ifPresent(coinbase -> miningOptions.coinbase = coinbase);
    miningConfiguration.getTargetGasLimit().ifPresent(tgl -> miningOptions.targetGasLimit = tgl);
    return miningOptions;
  }
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