+ else if ("literal".equals(head)) { Element ret = string(string(tree.child(0))); dropAll.add(ret); return ret; }
+ else if ("-".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,1).toString().charAt(0));
+ else if ("range".equals(head)) return new Range(walk(tree, 0).toString().charAt(0), walk(tree,0).toString().charAt(0));
+ else if ("[".equals(head)) return ranges(true, (Range[])walk(tree, 0));
+ else if ("[~".equals(head)) return ranges(false, (Range[])walk(tree, 0));