code: final public JSVariant Variant(Map refs) throws ParseException {
                                  JSVariant ans = new JSVariant(); JSType mem;
      jj_consume_token(5);
      mem = TypeDecl(refs);
                               ans.addCase(mem);
      label_2:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 6:
          ;
          break;
        default:
          jj_la1[3] = jj_gen;
          break label_2;
        }
        jj_consume_token(6);
        mem = TypeDecl(refs);
                                 ans.addCase(mem);
      }
      jj_consume_token(7);
                                                              {if (true) return ans;}
      throw new Error("Missing return statement in function");
    }
docs: Variant ::= "{" TypeDecl ( "|" TypeDecl )* "}"