private List<AbstractTransactionSelector> createTransactionSelectors(
      final BlockSelectionContext context, final SelectorsStateManager selectorsStateManager) {
    return List.of(
        new SkipSenderTransactionSelector(context),
        new BlockSizeTransactionSelector(context, selectorsStateManager),
        new BlobSizeTransactionSelector(context, selectorsStateManager),
        new PriceTransactionSelector(context),
        new BlobPriceTransactionSelector(context),
        new MinPriorityFeePerGasTransactionSelector(context),
        new ProcessingResultTransactionSelector(context));
  }
Responsible for extracting transactions from PendingTransactions and determining if the
transaction is suitable for inclusion in the block defined by the provided
ProcessableBlockHeader.

<p>If a transaction is suitable for inclusion, the world state must be updated, and a receipt
generated.

<p>The output from this class's execution will be:

<ul>
  <li>A list of transactions to include in the block being constructed.
  <li>A list of receipts for inclusion in the block.
  <li>The root hash of the world state at the completion of transaction execution.
  <li>The amount of gas consumed when executing all transactions.
  <li>A list of transactions evaluated but not included in the block being constructed.
</ul>

Once "used" this class must be discarded and another created. This class contains state which is
not cleared between executions of buildTransactionListForBlock().
ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/txselection/BlockTransactionSelector.java