public void WhenTraceSourceScopeCreatedWithUsableCreate_ThenItIsLazy() { using (var trace = new TraceListenerScope()) { var usable = from outer in Usable.Create(() => new TraceSourceScope("outer"), s => s.Dispose()) from inner in new TraceSourceScope($"{outer.Operation}/inner") select $"{inner.Operation}/value".Trace(); Assert.Equal(new string[] { }, trace.ToLines()); var value = usable.Value(); } Assert.Equal(0, Trace.IndentLevel); }