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;
 }