private static void ArgumentPart(SlimChainParser cp, out VariantType type, out string name, out TupleLiteral attr, out Element expli)
 {
     var ty = VariantType.Var;
     var n = string.Empty;
     TupleLiteral a = null;
     Element ex = null;
     cp.Transfer(e => a = e, AttributeList)
         .Opt.Any(
             icp => icp.Text("var").Self(() => ty = VariantType.Var),
             icp => icp.Text("let").Self(() => ty = VariantType.Let),
             icp => icp.Text("const").Self(() => ty = VariantType.Const)
         ).Lt()
         .Type(t => n = t.Text, TokenType.LetterStartString).Lt()
         .If(icp => icp.Type(TokenType.Pair).Lt())
         .Then(icp => icp.Transfer(e => ex = e, Prefix));
     type = ty;
     name = n;
     attr = a;
     expli = ex;
 }
 private static void EnumFieldPart(SlimChainParser cp, out string name, out TupleLiteral attr)
 {
     var n = string.Empty;
     TupleLiteral a = null;
     cp.Transfer(e => a = e, AttributeList)
         .Type(t => n = t.Text, TokenType.LetterStartString).Lt();
     name = n;
     attr = a;
 }