Don't require the `--structure` argument.
{
        
        code_points.resize(params.order);
        const char * pos = data;
        const char * end = data + size;
        while (true)
        {
            const bool inside = pos < end;
            CodePoint next_code_point {};
            if (inside)
                next_code_point = readCodePoint(pos, end);
            for (size_t context_size = 0; context_size < params.order; ++context_size)
            {
                NGramHash context_hash = hashContext(code_points.data() + code_points.size() - context_size, code_points.data() + code_points.size());
                if (inside)
                    table[context_hash].add(next_code_point);
                else    
                    table[context_hash].addEnd();
            }
            if (inside)
                code_points.push_back(next_code_point);
            else
                break;
        }
    }
    void finalize()