public static BlockBody readWrappedBodyFrom(
      final RLPInput input,
      final BlockHeaderFunctions blockHeaderFunctions,
      final boolean allowEmptyBody) {
    input.enterList();
    if (input.isEndOfCurrentList() && allowEmptyBody) {
      // empty block [] -> Return empty body.
      input.leaveList();
      return empty();
    }
    final BlockBody body = readFrom(input, blockHeaderFunctions);
    input.leaveList();
    return body;
  }
Read all fields from the block body expecting a list wrapping them An example of valid body
structure that this method would be able to read is: [[txs],[ommers],[withdrawals]] This is
used for decoding list of bodies

@param input The RLP-encoded input
@param blockHeaderFunctions The block header functions used for parsing block headers
@param allowEmptyBody A flag indicating whether an empty body is allowed
@return the decoded BlockBody from the RLP
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockBody.java