better support for \\t
[sbp.git] / src / edu / berkeley / sbp / meta / MetaGrammar.java
index d5e3036..e35b389 100644 (file)
@@ -1,22 +1,16 @@
+// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
+
 package edu.berkeley.sbp.meta;
 import edu.berkeley.sbp.util.*;
 import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.chr.*;
 import edu.berkeley.sbp.misc.*;
-import edu.berkeley.sbp.bind.*;
 import java.util.*;
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.io.*;
 
-public class MetaGrammar {
-
-    /** create a grammar corresponding to the SBP metagrammar (<tt>meta.g</tt>) */
-    public static Union newInstance() {
-        return Grammar.create(MetaGrammar.meta,
-                            "s",
-                            new MetaGrammarBindings());
-    }
+class MetaGrammar {
 
     /** Used to rebuild MetaGrammar.java, and not for much else */
     public static void main(String[] args) throws Exception {
@@ -40,10 +34,8 @@ public class MetaGrammar {
 
         out.append("\n        // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED\n");
 
-        Tree t = MetaGrammar.meta;
-        Union u = Grammar.create(t, "s", new MetaGrammarBindings());
-
-        t = new CharParser((Union)u).parse(new FileInputStream(args[0])).expand1();
+        Union u = GrammarAST.buildFromAST(MetaGrammar.meta, "s", null);
+        Tree t = new CharParser((Union)u).parse(new FileInputStream(args[0])).expand1();
 
         t.toJava(out);
         out.append("\n        // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED\n");
@@ -103,27 +95,145 @@ public class MetaGrammar {
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
         // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED
-new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.GrammarNode.class.getConstructor(new Class[] {java.lang.Object[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
+new edu.berkeley.sbp.Tree(null, "Grammar", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plusfollow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "D", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "D", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
@@ -133,10 +243,10 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "D", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "D", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
@@ -146,8 +256,8 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
@@ -157,17 +267,15 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "#", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "#", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
@@ -175,17 +283,16 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("question", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "#", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
@@ -193,44 +300,47 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("arrow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plus", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "C", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "h", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("lf", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "F", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "C", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "h", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("lf", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
@@ -240,81 +350,124 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "D", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "C", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plusfollow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plusfollow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("starfollow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
@@ -324,28 +477,28 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
@@ -355,10 +508,10 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
@@ -368,12 +521,12 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
@@ -383,24 +536,21 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "x", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
@@ -410,84 +560,74 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ":", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
@@ -506,235 +646,224 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "L", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "L", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "{", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "P", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "q", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "}", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("star", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("arrow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("arrow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("arrow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("arrow", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "?", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "?", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("slash", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class,edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("caret", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "N", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "T", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "f", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "`", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "L", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "l", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "H", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "!", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "^", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "W", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plusmax", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class,char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "&~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "++", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "z", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class,char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "A", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "A", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "Z", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class,char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "0", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "0", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "9", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "_", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "_", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ".", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Q", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "u", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "o", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plus", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "+", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "y", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "Colons", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "R", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { })})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "E", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "m", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "-", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "]", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, ">", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "->", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "<", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "y", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "S", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "i", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "g", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\"", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "c", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "a", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { }),
         new edu.berkeley.sbp.Tree(null, "e", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("lf", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("c", new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("lf", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("starmax", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tag", new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "(", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, ")", new edu.berkeley.sbp.Tree[] { })})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("starmax", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("star", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.AnonUnionNode.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("tilde", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.CharClass.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Range[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Range.class.getConstructor(new Class[] {char.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Literal.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("quoted", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("retur", new Class[] {})).createBinding()), new edu.berkeley.sbp.Tree[] { })})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalNode.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
-        new edu.berkeley.sbp.Tree(null, "p", new edu.berkeley.sbp.Tree[] { })})}),
-        new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq2", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode[].class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("plusmax", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.ElementNode.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReferenceNode.class.getConstructor(new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})).createBinding()), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { })})})})})})})})})})})})})
+        new edu.berkeley.sbp.Tree(null, "d", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "::", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\\", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "n", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "t", new edu.berkeley.sbp.Tree[] { })})})})})})})}),
+        new edu.berkeley.sbp.Tree(null, "DropNT", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "RHS", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "|", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Elements", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "**", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, " ", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\r", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\t", new edu.berkeley.sbp.Tree[] { })}),
+        new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "/", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "*", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "~", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "[", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Range", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})})})}),
+        new edu.berkeley.sbp.Tree(null, "Literal", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Quoted", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "\n", new edu.berkeley.sbp.Tree[] { })})}),
+        new edu.berkeley.sbp.Tree(null, "NonTerminalReference", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "Word", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }),
+        new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})})})})})})})
         // DO NOT EDIT STUFF ABOVE: IT IS AUTOMATICALLY GENERATED
                 ;
         } catch (Exception e) {
@@ -785,3 +914,121 @@ new edu.berkeley.sbp.Tree(null, new Tree.BindingFunctor(Bindable.create(edu.berk
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+