public GroupNestedStreamable( IStreamable <TOuterKey, TSource> source, Expression <Func <TSource, TInnerKey> > keySelector) : base(source.Properties.GroupNested(keySelector)) { Contract.Requires(source != null); Contract.Requires(keySelector != null); Source = source; KeySelector = keySelector; if (Source.Properties.IsColumnar && !CanGenerateColumnar()) { properties = properties.ToRowBased(); Source = Source.ColumnToRow(); } }