Don't require the `--structure` argument.
: params(std::move(params_)), code_points(params.order, BEGIN) {}
    void serialize(WriteBuffer & out) const
    {
        params.serialize(out);
        size_t size = table.size();
        writeBinary(size, out);
        for (const auto & elem : table)
        {
            writeBinary(elem.getKey(), out);
            elem.getMapped().serialize(out);
        }
    }
    void deserialize(ReadBuffer & in)
    {
        params.deserialize(in);
        size_t size = 0;
        readBinary(size, in);
        table.reserve(size);
        for (size_t i = 0; i < size; ++i)
        {
            NGramHash key{};
            readBinary(key, in);
            Histogram & histogram = table[key];
            histogram.deserialize(in);
        }
    }
    void consume(const char * data, size_t size)