private AbstractNode AddParms(AbstractNode invocation, IList <object> parameters) { if (invocation == null) { throw new ArgumentNullException("invocation"); } var m = invocation as Statement; if (m != null) { invocation = m.DeepCopy(); } else { var q = invocation as Expression; if (q != null) { invocation = q.DeepCopy(); } else { throw new Exception("Found a " + invocation.GetType()); } } InvocationExpression ie = FirstInvocationExpression(invocation); foreach (var o in parameters) { ie.AddArg(o); } return(invocation); }