/// <summary> /// Clones the instance using special context and returns cloned instance. /// </summary> /// <param name="context">Special context for providing references continuity.</param> /// <returns>Cloned instance.</returns> public BindingVariables Clone(Dictionary <object, object> context) { if (context.ContainsKey(this)) { return((BindingVariables)context[this]); } var result = new BindingVariables(); context[this] = result; result._source = _source.Select(p => p.Clone(context)).ToList(); result._varsDict = _varsDict.ToDictionary(p => p.Key.Clone(context), p => p.Value.Clone(context)); return(result); }
/// <summary> /// Clones the instance using special context and returns cloned instance. /// </summary> /// <param name="context">Special context for providing references continuity.</param> /// <returns>Cloned instance.</returns> public InlineTrigger Clone(Dictionary <object, object> context) { if (context.ContainsKey(this)) { return((InlineTrigger)context[this]); } var result = new InlineTrigger(); context[this] = result; result.Kind = Kind; result.KindOfSystemEvent = KindOfSystemEvent; result.Condition = Condition?.Clone(context); result.BindingVariables = BindingVariables.Clone(context); result.Statements = Statements.Select(p => p.CloneAstStatement(context)).ToList(); result.CodeEntity = CodeEntity.Clone(context); result.CompiledFunctionBody = CompiledFunctionBody.Clone(context); result.AppendAnnotations(this, context); return(result); }