public static void EnumerateTagValues <T>(this Activity activity, ref T tagEnumerator)
            where T : struct, IActivityTagEnumerator
        {
            Debug.Assert(activity != null, "Activity should not be null");

            ActivityTagObjectsEnumeratorFactory <T> .Enumerate(activity, ref tagEnumerator);
        }
        public static object GetTagValue(this Activity activity, string tagName)
        {
            Debug.Assert(activity != null, "Activity should not be null");

            ActivitySingleTagEnumerator state = new ActivitySingleTagEnumerator(tagName);

            ActivityTagObjectsEnumeratorFactory <ActivitySingleTagEnumerator> .Enumerate(activity, ref state);

            return(state.Value);
        }
        public static Status GetStatus(this Activity activity)
        {
            Debug.Assert(activity != null, "Activity should not be null");

            ActivityStatusTagEnumerator state = default;

            ActivityTagObjectsEnumeratorFactory <ActivityStatusTagEnumerator> .Enumerate(activity, ref state);

            var status = SpanHelper.ResolveCanonicalCodeToStatus(state.StatusCode);

            if (status.IsValid && !string.IsNullOrEmpty(state.StatusDescription))
            {
                return(status.WithDescription(state.StatusDescription));
            }

            return(status);
        }