private static void LoopPart(SlimChainParser cp, out Element cond, out Element use, out Element by) { Element c = null; Element u = null; Element b = null; cp.Text("loop").Lt() .Opt.Transfer(e => c = e, Expression) .If(icp => icp.Text("use").Lt()) .Then(icp => icp.Transfer(e => u = e, DefaultValueVariantDeclaration)) .If(icp => icp.Text("by").Lt()) .Then(icp => icp.Transfer(e => b = e, Expression)); cond = c; use = u; by = b; }