Don't require the `--structure` argument.
{
        markov_model.deserialize(in);
    }
};
class ArrayModel : public IModel
{
private:
    ModelPtr nested_model;
public:
    explicit ArrayModel(ModelPtr nested_model_) : nested_model(std::move(nested_model_)) {}
    void train(const IColumn & column) override
    {
        const ColumnArray & column_array = assert_cast<const ColumnArray &>(column);
        const IColumn & nested_column = column_array.getData();
        nested_model->train(nested_column);
    }
    void finalize() override
    {
        nested_model->finalize();
    }
    ColumnPtr generate(const IColumn & column) override
    {
        const ColumnArray & column_array = assert_cast<const ColumnArray &>(column);
        const IColumn & nested_column = column_array.getData();
        ColumnPtr new_nested_column = nested_model->generate(nested_column);
        return ColumnArray::create(IColumn::mutate(std::move(new_nested_column)), IColumn::mutate(column_array.getOffsetsPtr()));
    }
    void updateSeed() override