internal CausalityThreadContext Clone() { CausalityThreadContext causalityThreadContext = new CausalityThreadContext(ActiveCausality, null); if (ActiveCausality != null) { return(causalityThreadContext); } causalityThreadContext.Stacks = new List <CausalityStack>(); foreach (CausalityStack current in Stacks) { CausalityStack causalityStack = new CausalityStack(); causalityStack.AddRange(current); causalityThreadContext.Stacks.Add(causalityStack); } return(causalityThreadContext); }