/// <summary>
        /// Materialize a <see cref="SessionStore{K, AGG}"/> using the provided <see cref="SessionBytesStoreSupplier"/>
        /// Important: Custom subclasses are allowed here, but they should respect the retention contract:
        /// Session stores are required to retain windows at least as long as (session inactivity gap + session grace period).
        /// </summary>
        /// <param name="supplier">the <see cref="SessionBytesStoreSupplier"/> used to materialize the store</param>
        /// <returns>a new <see cref="Materialized{K, V, S}"/> instance with the given supplier</returns>
        public static Materialized <K, V, SessionStore <Bytes, byte[]> > Create(SessionBytesStoreSupplier supplier)
        {
            var m = new Materialized <K, V, SessionStore <Bytes, byte[]> >(supplier);

            return(m);
        }
        /// <summary>
        /// Materialize a <see cref="IKeyValueStore{K, V}"/> using the provided <see cref="KeyValueBytesStoreSupplier"/>
        /// </summary>
        /// <param name="supplier">the <see cref="KeyValueBytesStoreSupplier"/> used to materialize the store</param>
        /// <returns>a new <see cref="Materialized{K, V, S}"/> instance with the given supplier</returns>
        public static Materialized <K, V, IKeyValueStore <Bytes, byte[]> > Create(KeyValueBytesStoreSupplier supplier)
        {
            var m = new Materialized <K, V, IKeyValueStore <Bytes, byte[]> >(supplier);

            return(m);
        }
        /// <summary>
        /// Materialize a <see cref="WindowStore{K, V}"/> using the provided <see cref="WindowBytesStoreSupplier"/>
        /// Important: Custom subclasses are allowed here, but they should respect the retention contract:
        /// Window stores are required to retain windows at least as long as (window size + window grace period).
        /// </summary>
        /// <param name="supplier">the <see cref="WindowBytesStoreSupplier"/> used to materialize the store</param>
        /// <returns>a new <see cref="Materialized{K, V, S}"/> instance with the given supplier</returns>
        public static Materialized <K, V, WindowStore <Bytes, byte[]> > Create(WindowBytesStoreSupplier supplier)
        {
            var m = new Materialized <K, V, WindowStore <Bytes, byte[]> >(supplier);

            return(m);
        }