code: final public TsurgeonPattern NodeSelection() throws ParseException {
   /*@bgen(jjtree) NodeSelection */
    SimpleNode jjtn000 = new SimpleNode(JJTNODESELECTION);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);TsurgeonPattern result;
      try {
        result = NodeName();
      jjtree.closeNodeScope(jjtn000, true);
      jjtc000 = false;
      {if (true) return result;}
      } 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: we'll also put in a way to use a SELECTION with a list of nodes.