private static Decoder getDecoder(
      final TransactionType transactionType, final EncodingContext encodingContext) {
    if (encodingContext.equals(EncodingContext.POOLED_TRANSACTION)) {
      if (POOLED_TRANSACTION_DECODERS.containsKey(transactionType)) {
        return POOLED_TRANSACTION_DECODERS.get(transactionType);
      }
    }
    return checkNotNull(
        TYPED_TRANSACTION_DECODERS.get(transactionType),
        "Developer Error. A supported transaction type %s has no associated decoding logic",
        transactionType);
  }
Gets the decoder for a given transaction type and encoding context. If the context is
POOLED_TRANSACTION, it uses the network decoder for the type. Otherwise, it uses the typed
decoder.

@param transactionType the transaction type
@param encodingContext the encoding context
@return the decoder
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/encoding/TransactionDecoder.java