public ThreadSafeMetricsBucket(MetricsBucket metricsBucket = null)
        {
            this.metricsBucket = metricsBucket ?? new MetricsBucket();

            this.metricsBucket.Toggles = new ConcurrentDictionary <string, ToggleCount>();
            this.metricsBucket.Start   = DateTimeOffset.UtcNow;
        }
        /// <summary>
        /// Use withing using-statement. New registrations will not be added.
        /// </summary>
        public IDisposable StopCollectingMetrics(out MetricsBucket bucket)
        {
            @lock.EnterWriteLock();

            bucket      = metricsBucket;
            bucket.Stop = DateTimeOffset.UtcNow;

            return(this);
        }