/// <summary>
        /// Restores a TimeSeriesStreamCollection from a compressed byte array.
        /// </summary>
        public TimeSeriesStreamCollection(byte[] compressedByteArray, int keySize, Func <Stream, TKey> readKeyFunc, TimeSeriesSpan span, int decimalPlaces = 1) : base()
        {
            Metrics = new BinaryStreamMetrics(keySize, span.Count, decimalPlaces);
            _stream = CompressableMemoryStream.FromCompressedByteArray(compressedByteArray);

            int count = 0;

            using (var reader = new BinaryReader(_stream, System.Text.Encoding.UTF8, true))
                count = reader.ReadInt32();

            foreach (var i in Enumerable.Range(0, count))
            {
                _stream.Seek(Metrics.KeyPosition(i), SeekOrigin.Begin);
                var key = readKeyFunc(_stream);

                _dict.Add(key, new TimeSeriesStream <T>(_stream, Metrics.TimeseriesPosition(i), span, decimalPlaces));
            }
        }