setRange(Phase.START, Phase.ANALYZER).
setRange(Phase.PARSER, Phase.ANALYZER).
    public Tree() {        nodes = (TreeNode[])list.toArray(new TreeNode[list.size()]);        n_Bad.            setDescription("Representation for parser errors").            setRange(Phase.PARSER, Phase.END);        n_Empty.            setDescription("A tree node for the absence of a tree").            setRange(Phase.PARSER, Phase.UNKNOWN).            noFields();        n_DocDef.            setDescription("Documented definition").            setRange(Phase.PARSER, Phase.ANALYZER).            addField(t_String, "comment").            addField(t_Tree, "definition");        n_ClassDef.            setDescription("Class and data declaration").            setRange(Phase.PARSER, Phase.END).            addField(t_int, "mods", SymFlags).            addField(t_TypeName, "name", SymName).            addField(n_AbsTypeDef.getType(1), "tparams").            addField(n_ValDef.getType(2), "vparams").            addField(t_TypeTree, "tpe").            addField(n_Template.getType(0), "impl");        n_PackageDef.            setDescription("Package declaration").            setRange(Phase.PARSER, Phase.UNKNOWN).            addField(t_TermTree, "packaged").            addField(n_Template.getType(0), "impl");        n_ModuleDef.            setDescription("Module declaration").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_int, "mods", SymFlags).            addField(t_TermName, "name", SymName).            addField(t_TypeTree, "tpe").            addField(n_Template.getType(0), "impl");        n_ValDef.            setDescription("Value declaration (var or let)").            setRange(Phase.PARSER, Phase.END).            addField(t_int, "mods", SymFlags).            addField(t_TermName, "name", SymName).            addField(t_TypeTree, "tpe").            addField(t_TermTree, "rhs");        n_PatDef.            setDescription("Value declaration with patterns (val)").            setRange(Phase.PARSER, Phase.DESUGARIZER).            addField(t_int, "mods").            addField(t_TermTree, "pat").            addField(t_TermTree, "rhs");        n_DefDef.            setDescription("Function declaration (def)").            setRange(Phase.PARSER, Phase.END).            addField(t_int, "mods", SymFlags).            addField(t_TermName, "name", SymName).            addField(n_AbsTypeDef.getType(1), "tparams").            addField(n_ValDef.getType(2), "vparams").            addField(t_TypeTree, "tpe").            addField(t_TermTree, "rhs");        n_AbsTypeDef.            setDescription("Type declaration").            setRange(Phase.PARSER, Phase.END). // !!! needed for type params            addField(t_int, "mods", SymFlags).            addField(t_TypeName, "name", SymName).            addField(t_TypeTree, "rhs").	    addField(t_TypeTree, "lobound");        n_AliasTypeDef.            setDescription("Type alias").            setRange(Phase.PARSER, Phase.EXPLICITOUTER).            addField(t_int, "mods", SymFlags).            addField(t_TypeName, "name", SymName).            addField(n_AbsTypeDef.getType(1), "tparams").            addField(t_TypeTree, "rhs");        n_Import.            setDescription("Import declaration").            setRange(Phase.START, Phase.ANALYZER).            addField(t_TermTree, "expr").            addField(t_Names, "selectors");        n_CaseDef.            setDescription("Case declaration").            setRange(Phase.PARSER, Phase.TRANSMATCH).            addField(t_TermTree, "pat").            addField(t_TermTree, "guard").            addField(t_TermTree, "body");        n_Template.            setDescription("Instantiation templates").            setRange(Phase.PARSER, Phase.END).            addField(t_TermTrees, "parents").            addField(t_Trees, "body");        n_LabelDef.            setDescription("Labelled expression - the symbols in the array (must be Idents!) are those the label takes as argument").            setRange(Phase.PARSER, Phase.END).	    addField(t_TermName, "name", SymName).            addField(n_Ident.getType(1), "params").            addField(t_TermTree, "rhs");        n_Block.            setDescription("Block of expressions " +                "(semicolon separated expressions)").            setRange(Phase.PARSER, Phase.END).            addField(t_Trees, "stats").            addField(t_TermTree, "expr");        n_Sequence.            setDescription("Sequence of expressions (comma separated expressions)").            setRange(Phase.PARSER, Phase.LAMBDALIFT).            addField(t_TermTrees, "trees");        n_Alternative.            setDescription("Alternatives of expressions/patterns").            setRange(Phase.PARSER, Phase.TRANSMATCH).            addField(t_TermTrees, "trees");        n_Bind.            setDescription("Bind of a variable to a rhs pattern, possibly recursive").            setRange(Phase.PARSER, Phase.TRANSMATCH).            addField(t_TermName, "name", SymName).            addField(t_TermTree, "rhs");        n_Visitor.            setDescription("Visitor (a sequence of cases)").            setRange(Phase.PARSER, Phase.TRANSMATCH).            addField(n_CaseDef.getType(1), "cases");        n_Function.            setDescription("Anonymous function").            setRange(Phase.PARSER, Phase.ANALYZER).            addField(n_ValDef.getType(1), "vparams").            addField(t_TermTree, "body");        n_Assign.            setDescription("Assignment").            setRange(Phase.PARSER, Phase.END).            addField(t_TermTree, "lhs").            addField(t_TermTree, "rhs");        n_If.            setDescription("Conditional expression").            setRange(Phase.PARSER, Phase.END).            addField(t_TermTree, "cond").            addField(t_TermTree, "thenp").            addField(t_TermTree, "elsep");        n_Switch.            setDescription("Switch").            setRange(Phase.TRANSMATCH, Phase.END).            addField(t_TermTree, "test").            addField(t_ints, "tags").            addField(t_TermTrees, "bodies").            addField(t_TermTree, "otherwise");        n_Return.            setDescription("Return").            setRange(Phase.PARSER, Phase.END).            addField(t_TermTree, "expr");        n_Throw.            setDescription("Throw").            setRange(Phase.PARSER, Phase.ANALYZER).            addField(t_TermTree, "expr");        n_New.            setDescription("Instantiation").            setRange(Phase.PARSER, Phase.END).            addField(n_Template.getType(0), "templ");        n_Typed.            setDescription("Type annotation").            setRange(Phase.PARSER, Phase.EXPLICITOUTER).            addField(t_TermTree, "expr").            addField(t_TypeTree, "tpe");        n_TypeApply.            setDescription("Type application").            setRange(Phase.PARSER, Phase.END).            addField(t_Tree, "fun").            addField(t_TypeTrees, "args");        n_Apply.            setDescription("Value application").            setRange(Phase.PARSER, Phase.END).            addField(t_Tree, "fun"). // !!! should be t_TermTree            addField(t_TermTrees, "args");        n_Super.            setDescription("Super reference").            setRange(Phase.PARSER, Phase.END).            addField(t_TypeName, "qualifier", SymName).            addField(t_TypeName, "mixin");        n_This.            setDescription("Self reference").            setRange(Phase.PARSER, Phase.END).            addField(t_TypeName, "qualifier", SymName);        n_Select.            setDescription("Designator").            setRange(Phase.START, Phase.END).            addField(t_TermTree, "qualifier").            addField(t_TestName, "selector", SymName);        n_Ident.            setDescription("Identifier").            setRange(Phase.START, Phase.END).            addField(t_TestName, "name", SymName);        n_Literal.            setDescription("Literal").            setRange(Phase.PARSER, Phase.END).            addField(t_AConstant, "value");        n_TypeTerm.            setDescription("TypeTerm").            setRange(Phase.PARSER, Phase.END);        n_SingletonType.            setDescription("Singleton type").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_TermTree, "ref");        n_SelectFromType.            setDescription("Type selection").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_TypeTree, "qualifier").            addField(t_TypeName, "selector", SymName);        n_FunType.            setDescription("Function type").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_TypeTrees, "argtpes").            addField(t_TypeTree, "restpe");        n_CompoundType.            setDescription("Object type (~ Template)").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_TypeTrees, "parents").            addField(t_Trees, "refinements");        n_AppliedType.            setDescription("Applied type").            setRange(Phase.PARSER, Phase.REFCHECK).            addField(t_TypeTree, "tpe").            addField(t_TypeTrees, "args");	n_Try.	    setDescription("Try Expression").	    setRange(Phase.PARSER, Phase.END).	    addField(t_TermTree, "block").	    addField(t_TermTree, "catcher").	    addField(t_TermTree, "finalizer");    }