# System.Diagnostics

``` diff
 namespace System.Diagnostics {
     public static class Debug {
-        public static void Assert(bool condition, Debug.AssertInterpolatedStringHandler message);
+        public static void Assert(bool condition, ref Debug.AssertInterpolatedStringHandler message);
-        public static void Assert(bool condition, Debug.AssertInterpolatedStringHandler message, Debug.AssertInterpolatedStringHandler detailMessage);
+        public static void Assert(bool condition, ref Debug.AssertInterpolatedStringHandler message, ref Debug.AssertInterpolatedStringHandler detailMessage);
-        public static void WriteIf(bool condition, Debug.WriteIfInterpolatedStringHandler message);
+        public static void WriteIf(bool condition, ref Debug.WriteIfInterpolatedStringHandler message);
-        public static void WriteIf(bool condition, Debug.WriteIfInterpolatedStringHandler message, string category);
+        public static void WriteIf(bool condition, ref Debug.WriteIfInterpolatedStringHandler message, string category);
-        public static void WriteLineIf(bool condition, Debug.WriteIfInterpolatedStringHandler message);
+        public static void WriteLineIf(bool condition, ref Debug.WriteIfInterpolatedStringHandler message);
-        public static void WriteLineIf(bool condition, Debug.WriteIfInterpolatedStringHandler message, string category);
+        public static void WriteLineIf(bool condition, ref Debug.WriteIfInterpolatedStringHandler message, string category);
     }
+    public struct TagList : ICollection<KeyValuePair<string, object>>, IEnumerable, IEnumerable<KeyValuePair<string, object>>, IList<KeyValuePair<string, object>>, IReadOnlyCollection<KeyValuePair<string, object>>, IReadOnlyList<KeyValuePair<string, object>> {
+        public TagList(ReadOnlySpan<KeyValuePair<string, object>> tagList);
+        public int Count { get; }
+        public bool IsReadOnly { get; }
+        public KeyValuePair<string, object> this[int index] { get; set; }
+        public void Add(KeyValuePair<string, object> tag);
+        public void Add(string key, object value);
+        public void Clear();
+        public bool Contains(KeyValuePair<string, object> item);
+        public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex);
+        public void CopyTo(Span<KeyValuePair<string, object>> tags);
+        public IEnumerator<KeyValuePair<string, object>> GetEnumerator();
+        public int IndexOf(KeyValuePair<string, object> item);
+        public void Insert(int index, KeyValuePair<string, object> item);
+        public bool Remove(KeyValuePair<string, object> item);
+        public void RemoveAt(int index);
+        IEnumerator System.Collections.IEnumerable.GetEnumerator();
+        public struct Enumerator : IDisposable, IEnumerator, IEnumerator<KeyValuePair<string, object>> {
+            public KeyValuePair<string, object> Current { get; }
+            object System.Collections.IEnumerator.Current { get; }
+            public void Dispose();
+            public bool MoveNext();
+            public void Reset();
+        }
+    }
 }
```

