Don't require the `--structure` argument.
{
        nested_model->finalize();
    }
    ColumnPtr generate(const IColumn & column) override
    {
        const ColumnNullable & column_nullable = assert_cast<const ColumnNullable &>(column);
        const IColumn & nested_column = column_nullable.getNestedColumn();
        ColumnPtr new_nested_column = nested_model->generate(nested_column);
        return ColumnNullable::create(IColumn::mutate(std::move(new_nested_column)), IColumn::mutate(column_nullable.getNullMapColumnPtr()));
    }
    void updateSeed() override
    {
        nested_model->updateSeed();
    }
    void serialize(WriteBuffer & out) const override
    {
        nested_model->serialize(out);
    }
    void deserialize(ReadBuffer & in) override
    {
        nested_model->deserialize(in);
    }
};
class ModelFactory
{
public:
    ModelPtr get(const IDataType & data_type, UInt64 seed, MarkovModelParameters markov_model_params) const