@VisibleForTesting
  protected static void applyOverrides(final MutableAccount account, final StateOverride override) {
    LOG.debug("applying overrides to state for account {}", account.getAddress());
    override.getNonce().ifPresent(account::setNonce);
    override.getBalance().ifPresent(account::setBalance);
    override.getCode().ifPresent(code -> account.setCode(Bytes.fromHexString(code)));
    override
        .getState()
        .ifPresent(
            d -> {
              account.clearStorage();
              d.forEach(
                  (key, value) ->
                      account.setStorageValue(
                          UInt256.fromHexString(key), UInt256.fromHexString(value)));
            });
    override
        .getStateDiff()
        .ifPresent(
            d ->
                d.forEach(
                    (key, value) ->
                        account.setStorageValue(
                            UInt256.fromHexString(key), UInt256.fromHexString(value))));
  }
Processes a transaction simulation with the provided parameters and executes pre-worldstate
close actions.

@param callParams The call parameters for the transaction.
@param maybeStateOverrides The map of state overrides to apply to the state for this
    transaction.
@param transactionValidationParams The validation parameters for the transaction.
@param operationTracer The tracer for capturing operations during processing.
@param preWorldStateCloseGuard The pre-worldstate close guard for executing pre-close actions.
@param header The block header.
@return An Optional containing the result of the processing.
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulator.java