https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
case 19: {
            auto k = provider.ConsumeIntegral<uint8_t>();
            auto n_subs = provider.ConsumeIntegral<uint8_t>();
            if (k == 0 || k > n_subs) return {};
            return {{n_subs, Fragment::THRESH, k}};
        }
        case 20: return {{1, Fragment::WRAP_A}};
        case 21: return {{1, Fragment::WRAP_S}};
        case 22: return {{1, Fragment::WRAP_C}};
        case 23: return {{1, Fragment::WRAP_D}};
        case 24: return {{1, Fragment::WRAP_V}};
        case 25: return {{1, Fragment::WRAP_J}};
        case 26: return {{1, Fragment::WRAP_N}};
        default:
            break;
    }
    return {};
}
/* This structure contains a table which for each "target" Type a list of recipes
 * to construct it, automatically inferred from the behavior of ComputeType.
 * Note that the Types here are not the final types of the constructed Nodes, but
 * just the subset that are required. For example, a recipe for the "Bo" type
 * might construct a "Bondu" sha256() NodeInfo, but cannot construct a "Bz" older().
 * Each recipe is a Fragment together with a list of required types for its subnodes.
 */
struct SmartInfo
{
    using recipe = std::pair<Fragment, std::vector<Type>>;
    std::map<Type, std::vector<recipe>> table;
    void Init()