public IDisposable BeginScope <TState>(TState state) { Scopes.Enqueue(state); return(new Disposable(() => { Scopes.TryDequeue(out _); })); }