@Override
  public PendingTransaction promoteFor(
      final Address sender, final long nonce, final int[] remainingPromotionsPerType) {
    final var senderTxs = txsBySender.get(sender);
    if (senderTxs != null) {
      long expectedNonce = nonce + 1;
      if (senderTxs.firstKey() == expectedNonce) {
        final var candidateTx = senderTxs.firstEntry().getValue();
        final var txType = candidateTx.getTransaction().getType();

        if (remainingPromotionsPerType[txType.ordinal()] > 0) {
          senderTxs.pollFirstEntry();
          processRemove(
              senderTxs,
              candidateTx.getTransaction(),
              LayeredRemovalReason.LayerMoveReason.PROMOTED);
          metrics.incrementRemoved(candidateTx, "promoted", name());

          if (senderTxs.isEmpty()) {
            txsBySender.remove(sender);
          }
          --remainingPromotionsPerType[txType.ordinal()];
          return candidateTx;
        }
        return null;
      }
    }
    return nextLayer.promoteFor(sender, nonce, remainingPromotionsPerType);
  }
Return the full content of this layer, organized as a list of sender pending txs. For each
sender the collection pending txs is ordered by nonce asc.

@return a list of sender pending txs
ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/layered/AbstractTransactionsLayer.java