internal List <DimensionSet> GetAllDimensionSets()
        {
            if (!_shouldUseDefaultDimensionSet)
            {
                return(CustomDimensionSets);
            }

            CustomDimensionSets.ForEach(ds => DefaultDimensionSet.AddRange(ds));

            var dimensions = new List <DimensionSet>()
            {
                DefaultDimensionSet
            };

            return(dimensions);
        }
        internal MetricDirective DeepCloneWithNewMetrics(List <MetricDefinition> metrics)
        {
            var clone = new MetricDirective();

            clone.CustomDimensionSets = new List <DimensionSet>();
            foreach (var dimension in CustomDimensionSets)
            {
                clone.CustomDimensionSets.Add(dimension.DeepClone());
            }

            clone.DefaultDimensionSet           = DefaultDimensionSet.DeepClone();
            clone.Namespace                     = Namespace;
            clone._shouldUseDefaultDimensionSet = _shouldUseDefaultDimensionSet;
            foreach (var metric in metrics)
            {
                clone._metrics.Add(metric);
            }

            return(clone);
        }