+ /** create a new forest */
+ public static <NodeType> Forest<NodeType> create(Input.Region loc, NodeType head, Forest<NodeType>[] children) {
+ return Forest.create(loc, head, children, false); }
+
+ // Package-Private //////////////////////////////////////////////////////////////////////////////
+
+ abstract void expand(HashSet<Tree<NodeType>> ht, HashSet<Forest<NodeType>> ignore, Tree<NodeType> bogus);
+ abstract void gather(HashSet<Forest<NodeType>> ignore);
+ abstract void edges(GraphViz.Node n);
+ boolean ambiguous() { return false; }
+
+ abstract Input.Region getRegion();
+
+ // One //////////////////////////////////////////////////////////////////////////////