code: final public AuxiliaryTree TreeRoot(boolean requiresFoot) throws ParseException {
   /*@bgen(jjtree) TreeRoot */
    SimpleNode jjtn000 = new SimpleNode(JJTTREEROOT);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);Tree t;
      try {
        t = TreeNode();
        jjtree.closeNodeScope(jjtn000, true);
        jjtc000 = false;
        {if (true) return new AuxiliaryTree(t,requiresFoot);}
      } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
        jjtc000 = false;
      } else {
        jjtree.popNode();
      }
      if (jjte000 instanceof RuntimeException) {
        {if (true) throw (RuntimeException)jjte000;}
      }
      if (jjte000 instanceof ParseException) {
        {if (true) throw (ParseException)jjte000;}
      }
      {if (true) throw (Error)jjte000;}
      } finally {
      if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
      }
      }
      throw new Error("Missing return statement in function");
    }
docs: the argument says whether there must be a foot node on the aux tree.