# Microsoft.AspNetCore.Components.RenderTree

``` diff
 namespace Microsoft.AspNetCore.Components.RenderTree {
-    public abstract class Renderer : IDisposable {
+    public abstract class Renderer : IAsyncDisposable, IDisposable {
+        public Renderer(IServiceProvider serviceProvider, ILoggerFactory loggerFactory, IComponentActivator componentActivator);
+        protected internal ElementReferenceContext ElementReferenceContext { get; protected set; }
+        public ValueTask DisposeAsync();
     }
-    public readonly struct RenderTreeFrame {
+    public struct RenderTreeFrame {
-        [System.Runtime.InteropServices.FieldOffsetAttribute(4)]
-        public readonly RenderTreeFrameType FrameType;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(24)]
-        public readonly Action<ElementReference> ElementReferenceCaptureAction;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly Action<object> ComponentReferenceCaptureAction;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(12)]
-        public readonly int ComponentId;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
-        public readonly int ComponentReferenceCaptureParentFrameIndex;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
-        public readonly int ComponentSubtreeLength;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
-        public readonly int ElementSubtreeLength;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
-        public readonly int RegionSubtreeLength;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(0)]
-        public readonly int Sequence;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(24)]
-        public readonly object AttributeValue;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(32)]
-        public readonly object ComponentKey;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(24)]
-        public readonly object ElementKey;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(32)]
-        public readonly string AttributeEventUpdatesAttributeName;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly string AttributeName;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly string ElementName;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly string ElementReferenceCaptureId;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly string MarkupContent;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly string TextContent;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
-        public readonly Type ComponentType;

-        [System.Runtime.InteropServices.FieldOffsetAttribute(8)]
-        public readonly ulong AttributeEventHandlerId;

+        public ulong AttributeEventHandlerId { get; }
+        public string AttributeEventUpdatesAttributeName { get; }
+        public string AttributeName { get; }
+        public object AttributeValue { get; }
+        public int ComponentId { get; }
+        public object ComponentKey { get; }
+        public Action<object> ComponentReferenceCaptureAction { get; }
+        public int ComponentReferenceCaptureParentFrameIndex { get; }
+        public int ComponentSubtreeLength { get; }
+        public Type ComponentType { get; }
+        public object ElementKey { get; }
+        public string ElementName { get; }
+        public Action<ElementReference> ElementReferenceCaptureAction { get; }
+        public string ElementReferenceCaptureId { get; }
+        public int ElementSubtreeLength { get; }
+        public RenderTreeFrameType FrameType { get; }
+        public string MarkupContent { get; }
+        public int RegionSubtreeLength { get; }
+        public int Sequence { get; }
+        public string TextContent { get; }
     }
 }
```

