@NotNull
  public Optional<TransactionSimulatorResult> processWithWorldUpdater(
      final CallParameter callParams,
      final Optional<StateOverrideMap> maybeStateOverrides,
      final TransactionValidationParams transactionValidationParams,
      final OperationTracer operationTracer,
      final ProcessableBlockHeader processableHeader,
      final WorldUpdater updater,
      final Address miningBeneficiary) {

    final long simulationGasCap =
        calculateSimulationGasCap(
            processableHeader, callParams.getGas(), processableHeader.getGasLimit());

    MainnetTransactionProcessor transactionProcessor =
        simulationTransactionProcessorFactory.getTransactionProcessor(
            processableHeader, maybeStateOverrides);

    BiFunction<ProtocolSpec, Optional<BlockHeader>, Wei> blobGasPricePerGasSupplier =
        (protocolSpec, maybeParentHeader) -> {
          if (transactionValidationParams.isAllowExceedingBalance()) {
            return Wei.ZERO;
          }
          return protocolSpec
              .getFeeMarket()
              .blobGasPricePerGas(
                  maybeParentHeader
                      .map(parent -> calculateExcessBlobGasForParent(protocolSpec, parent))
                      .orElse(BlobGas.ZERO));
        };

    final ProtocolSpec protocolSpec = protocolSchedule.getByBlockHeader(processableHeader);
    final BlockHashLookup blockHashLookup =
        protocolSpec.getBlockHashProcessor().createBlockHashLookup(blockchain, processableHeader);
    return processWithWorldUpdater(
        callParams,
        maybeStateOverrides,
        transactionValidationParams,
        operationTracer,
        processableHeader,
        updater,
        miningBeneficiary,
        simulationGasCap,
        transactionProcessor,
        blobGasPricePerGasSupplier,
        blockHashLookup,
        () -> FAKE_SIGNATURE);
  }
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