namespace XFESystem.Browser; public sealed record BrowserDomLifetime(int Wrappers,int ReverseWrappers,int Identities,int Canvases,int FormSelections,int Ranges, long HandlesCreated,long HandlesDisposed) {public long OutstandingHandles=>HandlesCreated-HandlesDisposed;} public sealed partial class DomBridge { /// Regular owner-loop maintenance, independent of diagnostics. internal void PruneRetainedState() { _=wrappers.Count;_=nodes.Count;_=identities.Count;_=canvases.Count;_=selections.Count;_=ranges.Count; } /// Read and prune only on the page's exclusive engine owner. public BrowserDomLifetime Lifetime { get { int a=wrappers.Count,b=nodes.Count,c=identities.Count,d=canvases.Count,e=selections.Count,f=ranges.Count; return new(a,b,c,d,e,f, wrappers.HandlesCreated+nodes.HandlesCreated+identities.HandlesCreated+canvases.HandlesCreated+selections.HandlesCreated+ranges.HandlesCreated, wrappers.HandlesDisposed+nodes.HandlesDisposed+identities.HandlesDisposed+canvases.HandlesDisposed+selections.HandlesDisposed+ranges.HandlesDisposed); } } /// Explicit native-handle cleanup; no finalization dependency. public void ReleaseRetainedState() { wrappers.Clear();nodes.Clear();identities.Clear();canvases.Clear();selections.Clear();ranges.Clear(); decoders.Clear();constructedSheets.Clear();focused=null;CurrentScript=null; } }