public WindowedHistogram(HistogramQueue <T> itemsRemoved, HistogramQueue <T> itemsInserted, HistogramQueue <T> itemsInside, SortedSet <T> optionalItems)
 {
     ItemsRemoved  = itemsRemoved;
     ItemsInserted = itemsInserted;
     ItemsInside   = itemsInside;
     OptionalItems = optionalItems;
 }
        public static WindowedHistogram <T> Init(IEnumerable <T> firstItems, SortedSet <T> optionalItems)
        {
            var itemsRemoved = HistogramQueue <T> .Create(optionalItems);

            var itemsInserted = HistogramQueue <T> .Create(optionalItems);

            var itemsInside = HistogramQueue <T> .Create(optionalItems);

            itemsInside.EnqueueAll(firstItems);

            return(new WindowedHistogram <T>(itemsRemoved, itemsInserted, itemsInside, optionalItems));
        }