public IKTable <Windowed <K>, V> Reduce(Reducer <V> reducer, Materialized <K, V, WindowStore <Bytes, byte[]> > materialized, string named = null)
        {
            CheckIfParamNull(reducer, "reducer");

            materialized = materialized ?? Materialized <K, V, WindowStore <Bytes, byte[]> > .Create();

            if (materialized.KeySerdes == null)
            {
                materialized.WithKeySerdes(KeySerdes);
            }

            if (materialized.ValueSerdes == null)
            {
                materialized.WithValueSerdes(ValueSerdes);
            }

            string name = new Named(named).OrElseGenerateWithPrefix(builder, KGroupedStream.REDUCE_NAME);

            materialized.UseProvider(builder, KGroupedStream.REDUCE_NAME);

            var aggSupplier = new KStreamWindowAggregate <K, V, V, W>(
                windowOptions,
                materialized.StoreName,
                () => default,