public SequentialDataTransform(IHost host, SequentialTransformerBase <TInput, TOutput, TState> parent,
                                IDataView input, IStatefulRowMapper mapper)
     : base(parent.Host, input)
 {
     Metadata   = new MetadataDispatcher(1);
     _parent    = parent;
     _transform = CreateLambdaTransform(_parent.Host, input, _parent.InputColumnName,
                                        _parent.OutputColumnName, InitFunction, _parent.WindowSize > 0, _parent.OutputColumnType);
     _mapper   = mapper;
     _bindings = new ColumnBindings(input.Schema, _mapper.GetOutputColumns());
 }
 private Bindings(OptionalColumnTransform parent, ColumnType[] columnTypes, int[] srcCols,
                  int[] srcColsWithOptionalColumn, Schema input, Schema inputWithOptionalColumn, bool user, string[] names)
     : base(input, user, names)
 {
     Contracts.AssertValue(parent);
     Contracts.Assert(Utils.Size(columnTypes) == InfoCount);
     Contracts.Assert(Utils.Size(srcCols) == InfoCount);
     Contracts.AssertValue(inputWithOptionalColumn);
     ColumnTypes = columnTypes;
     SrcCols     = srcCols;
     _parent     = parent;
     _metadata   = new MetadataDispatcher(InfoCount);
     _inputWithOptionalColumn   = inputWithOptionalColumn;
     _srcColsWithOptionalColumn = srcColsWithOptionalColumn;
     SetMetadata();
 }