using uCalcSoftware; var uc = new uCalc(); // Define a variable in the original default to distinguish it. // Note: This variable won't exist in the implicit 'uc' instance. uCalc.DefaultInstance.DefineVariable("id='Original'"); Console.WriteLine($"Initial default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucA = new uCalc(); ucA.DefineVariable("id='A'"); ucA.IsDefault = true; // Default stack: [Original, A] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucB = new uCalc(); ucB.DefineVariable("id='B'"); ucB.IsDefault = true; // Default stack: [Original, A, B] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucC = new uCalc(); ucC.DefineVariable("id='C'"); ucC.IsDefault = true; // Default stack: [Original, A, B, C] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); Console.WriteLine("--- Unsetting instances ---"); // Unset B. The default should remain C. ucB.IsDefault = false; Console.WriteLine($"After unsetting B, current default: {uCalc.DefaultInstance.EvalStr("id")}"); // Unset C. The default should revert to A. ucC.IsDefault = false; Console.WriteLine($"After unsetting C, current default: {uCalc.DefaultInstance.EvalStr("id")}"); // Unset A. Reverts to the original default. ucA.IsDefault = false; Console.WriteLine($"After unsetting A, current default: {uCalc.DefaultInstance.EvalStr("id")}");