/* Generated By:JavaCC: Do not edit this line. Parser.java */
package EDU.neu.ccs.demeter.tools.apstudio.graphedit;
import java.awt.*;
import java.io.*;
import java.util.*;
import EDU.neu.ccs.demeter.*;
import EDU.neu.ccs.demeter.common.tg.*;
import EDU.neu.ccs.demeter.*;
public class Parser implements ParserConstants {
  // oit is uugly.  Why isn't there a Character.valueOf(String)? 
  static char unescapifyChar(String s) {
    char c = s.charAt(0);
    if (c == '\\') {
      switch (s.charAt(1)) {
      case 'n': c = '\n'; break;
      case 't': c = '\t'; break;
      case 'b': c = '\b'; break;
      case 'r': c = '\r'; break;
      case 'f': c = '\f'; break;
      case '\\': c = '\\'; break;
      case '\'': c = '\''; break;
      case '\"': c = '\"'; break;
      default:
       c = (char) Integer.parseInt(s.substring(2, s.length()), 8);
       break;
      }
    }
    return c;
  }
  // Even uglier... 
  static String unescapify(String s) {
    char str[] = new char[s.length()];
    int i = 0, o = 0;
    while (i < s.length()) {
      char c = s.charAt(i++);
      if (c == '\\') {
       int j = i + 1;
       while (j < s.length() &&
              Character.digit(s.charAt(j), 8) != -1) {
         j++;
       }
       c = unescapifyChar(s.substring(i-1, j));
       i = j;
      }
      str[o++] = c;
    }
    return String.valueOf(str, 0, o);
  }

  final public UGraph _UGraph() throws ParseException {
  UGraph it;
  Package _pkg;
  Import_SList _imports;
  JavaCode _preamble;
  UVertex_List _vertices;
  Hashtable _idToVertexTable;
  UEdge_List _edges;
  Hashtable _idToEdgeTable;
  Hashtable _nameToIdVertexTable;
  UID _firstuid;
    it=new UGraph();
    jj_consume_token(1);
    jj_consume_token(2);
    jj_consume_token(3);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 36:
      _pkg = _Package();
                                                          it.set_pkg(_pkg);
      break;
    default:
      jj_la1[0] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 32:
      _imports = _Import_SList();
                                it.set_imports(_imports);
      break;
    default:
      jj_la1[1] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TEXT_LITERAL:
      _preamble = _JavaCode();
                             it.set_preamble(_preamble);
      break;
    default:
      jj_la1[2] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 4:
      _vertices = _UVertex_List();
                                 it.set_vertices(_vertices);
      break;
    default:
      jj_la1[3] = jj_gen;
      ;
    }
    _idToVertexTable = _Hashtable();
                                  it.set_idToVertexTable(_idToVertexTable);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 19:
      _edges = _UEdge_List();
                            it.set_edges(_edges);
      break;
    default:
      jj_la1[4] = jj_gen;
      ;
    }
    _idToEdgeTable = _Hashtable();
                                it.set_idToEdgeTable(_idToEdgeTable);
    _nameToIdVertexTable = _Hashtable();
                                      it.set_nameToIdVertexTable(_nameToIdVertexTable);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DECIMAL_LITERAL:
    case HEX_LITERAL:
    case OCTAL_LITERAL:
    case FLOATING_POINT_LITERAL:
      _firstuid = _UID();
                        it.set_firstuid(_firstuid);
      break;
    default:
      jj_la1[5] = jj_gen;
      ;
    }
    jj_consume_token(0);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UVertex_List _UVertex_List() throws ParseException {
  UVertex_List it;
  Nonempty_UVertex_List _first;
    it=new UVertex_List();
    jj_consume_token(4);
    jj_consume_token(5);
    _first = _Nonempty_UVertex_List();
                                                        it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UVertex _UVertex() throws ParseException {
  UVertex it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 10:
    case 13:
      it = _UConstOrAltVertex();
      break;
    case 16:
    case 17:
      it = _UTerm();
      break;
    case 14:
      it = _UInterface();
      break;
    default:
      jj_la1[6] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_UVertex(UVertex it) throws ParseException {
  UID _vid;
  UVertexName _vertexname;
  Coordinates _position;
  IEdge_List _incoming;
  OEdge_List _outgoing;
  Vector _inArcIdList;
  Vector _outArcIdList;
  Decorator _vdeco;
  TGVertex _tgv;
  Perspective _persp;
    _vid = _UID();
                it.set_vid(_vid);
    _vertexname = _UVertexName();
                               it.set_vertexname(_vertexname);
    _position = _Coordinates();
                             it.set_position(_position);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 8:
      _incoming = _IEdge_List();
                               it.set_incoming(_incoming);
      break;
    default:
      jj_la1[7] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 9:
      _outgoing = _OEdge_List();
                               it.set_outgoing(_outgoing);
      break;
    default:
      jj_la1[8] = jj_gen;
      ;
    }
    _inArcIdList = _Vector();
                           it.set_inArcIdList(_inArcIdList);
    _outArcIdList = _Vector();
                            it.set_outArcIdList(_outArcIdList);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 31:
      _vdeco = _Decorator();
                           it.set_vdeco(_vdeco);
      break;
    default:
      jj_la1[9] = jj_gen;
      ;
    }
    _tgv = _TGVertex();
                     it.set_tgv(_tgv);
    _persp = _Perspective();
                          it.set_persp(_persp);

  }

  final public UConstOrAltVertex _UConstOrAltVertex() throws ParseException {
  UConstOrAltVertex it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 10:
      it = _UConstVertex();
      break;
    case 13:
      it = _UAltVertex();
      break;
    default:
      jj_la1[10] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_UConstOrAltVertex(UConstOrAltVertex it) throws ParseException {
  ParseOrNot _parse;
  Vector _outEdgeNameList;
  ScopeIdentifier_List _keywords;
    _parse = _ParseOrNot();
                         it.set_parse(_parse);
    _outEdgeNameList = _Vector();
                               it.set_outEdgeNameList(_outEdgeNameList);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 15:
    case 18:
      _keywords = _ScopeIdentifier_List();
                                         it.set_keywords(_keywords);
      break;
    default:
      jj_la1[11] = jj_gen;
      ;
    }
    common_UVertex(it);

  }

  final public ParseOrNot _ParseOrNot() throws ParseException {
  ParseOrNot it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 6:
      it = _YaParse();
      break;
    case 7:
      it = _NopParse();
      break;
    default:
      jj_la1[12] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ParseOrNot(ParseOrNot it) throws ParseException {

  }

  final public YaParse _YaParse() throws ParseException {
  YaParse it;
    it=new YaParse();
    jj_consume_token(6);
              common_ParseOrNot(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NopParse _NopParse() throws ParseException {
  NopParse it;
    it=new NopParse();
    jj_consume_token(7);
                common_ParseOrNot(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UTerm _UTerm() throws ParseException {
  UTerm it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 16:
      it = _UTermConstVertex();
      break;
    case 17:
      it = _UTermInterface();
      break;
    default:
      jj_la1[13] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_UTerm(UTerm it) throws ParseException {
    common_UVertex(it);

  }

  final public IEdge_List _IEdge_List() throws ParseException {
  IEdge_List it;
  Nonempty_IEdge_List _first;
    it=new IEdge_List();
    jj_consume_token(8);
    _first = _Nonempty_IEdge_List();
                                               it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public OEdge_List _OEdge_List() throws ParseException {
  OEdge_List it;
  Nonempty_OEdge_List _first;
    it=new OEdge_List();
    jj_consume_token(9);
    _first = _Nonempty_OEdge_List();
                                               it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UConstVertex _UConstVertex() throws ParseException {
  UConstVertex it;
  UBefore _beFore;
  UAfter _afTer;
    it=new UConstVertex();
    jj_consume_token(10);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 11:
      _beFore = _UBefore();
                                          it.set_beFore(_beFore);
      break;
    default:
      jj_la1[14] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 12:
      _afTer = _UAfter();
                        it.set_afTer(_afTer);
      break;
    default:
      jj_la1[15] = jj_gen;
      ;
    }
    common_UConstOrAltVertex(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UBefore _UBefore() throws ParseException {
  UBefore it;
  String _syntax;
    it=new UBefore();
    jj_consume_token(11);
    _syntax = _String();
                                 it.set_syntax(_syntax);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UAfter _UAfter() throws ParseException {
  UAfter it;
  String _syntax;
    it=new UAfter();
    jj_consume_token(12);
    _syntax = _String();
                                it.set_syntax(_syntax);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UAltVertex _UAltVertex() throws ParseException {
  UAltVertex it;
    it=new UAltVertex();
    jj_consume_token(13);
                  common_UConstOrAltVertex(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UInterface _UInterface() throws ParseException {
  UInterface it;
  InterfaceModifier_List _keywords;
  JavaCode _javacode;
    it=new UInterface();
    jj_consume_token(14);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 15:
      _keywords = _InterfaceModifier_List();
                                                         it.set_keywords(_keywords);
      break;
    default:
      jj_la1[16] = jj_gen;
      ;
    }
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    common_UVertex(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public InterfaceModifier_List _InterfaceModifier_List() throws ParseException {
  InterfaceModifier_List it;
  Nonempty_InterfaceModifier_List _first;
    it=new InterfaceModifier_List();
    _first = _Nonempty_InterfaceModifier_List();
                                              it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public InterfaceModifier _InterfaceModifier() throws ParseException {
  InterfaceModifier it;
    it = _PublicModifier();
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_InterfaceModifier(InterfaceModifier it) throws ParseException {

  }

  final public PublicModifier _PublicModifier() throws ParseException {
  PublicModifier it;
    it=new PublicModifier();
    jj_consume_token(15);
               common_InterfaceModifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UTermConstVertex _UTermConstVertex() throws ParseException {
  UTermConstVertex it;
    it=new UTermConstVertex();
    jj_consume_token(16);
                        common_UTerm(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UTermInterface _UTermInterface() throws ParseException {
  UTermInterface it;
    it=new UTermInterface();
    jj_consume_token(17);
                      common_UTerm(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ScopeIdentifier_List _ScopeIdentifier_List() throws ParseException {
  ScopeIdentifier_List it;
  Nonempty_ScopeIdentifier_List _first;
    it=new ScopeIdentifier_List();
    _first = _Nonempty_ScopeIdentifier_List();
                                            it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ScopeIdentifier _ScopeIdentifier() throws ParseException {
  ScopeIdentifier it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 15:
      it = _PublicIdentifier();
      break;
    case 18:
      it = _FinalIdentifier();
      break;
    default:
      jj_la1[17] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ScopeIdentifier(ScopeIdentifier it) throws ParseException {

  }

  final public PublicIdentifier _PublicIdentifier() throws ParseException {
  PublicIdentifier it;
    it=new PublicIdentifier();
    jj_consume_token(15);
               common_ScopeIdentifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public FinalIdentifier _FinalIdentifier() throws ParseException {
  FinalIdentifier it;
    it=new FinalIdentifier();
    jj_consume_token(18);
              common_ScopeIdentifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UEdge_List _UEdge_List() throws ParseException {
  UEdge_List it;
  Nonempty_UEdge_List _first;
    it=new UEdge_List();
    jj_consume_token(19);
    jj_consume_token(5);
    _first = _Nonempty_UEdge_List();
                                                    it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UEdge _UEdge() throws ParseException {
  UEdge it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 20:
    case 21:
    case 22:
      it = _USuperEdge();
      break;
    case 23:
      it = _UConstEdge();
      break;
    default:
      jj_la1[18] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_UEdge(UEdge it) throws ParseException {
  UID _eid;
  UID _fromVertex;
  UID _toVertex;
  Decorator _edeco;
  BendPoint _bendpoint;
  ArcPerspective _persp;
    _eid = _UID();
                it.set_eid(_eid);
    _fromVertex = _UID();
                       it.set_fromVertex(_fromVertex);
    _toVertex = _UID();
                     it.set_toVertex(_toVertex);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 31:
      _edeco = _Decorator();
                           it.set_edeco(_edeco);
      break;
    default:
      jj_la1[19] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
      _bendpoint = _BendPoint();
                               it.set_bendpoint(_bendpoint);
      break;
    default:
      jj_la1[20] = jj_gen;
      ;
    }
    _persp = _ArcPerspective();
                             it.set_persp(_persp);

  }

  final public USuperEdge _USuperEdge() throws ParseException {
  USuperEdge it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 20:
      it = _UAltEdge();
      break;
    case 21:
      it = _UExtendEdge();
      break;
    case 22:
      it = _UImplEdge();
      break;
    default:
      jj_la1[21] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_USuperEdge(USuperEdge it) throws ParseException {
    common_UEdge(it);

  }

  final public BendPoint _BendPoint() throws ParseException {
  BendPoint it;
  Coordinates _position;
    it=new BendPoint();
    _position = _Coordinates();
                             it.set_position(_position);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UAltEdge _UAltEdge() throws ParseException {
  UAltEdge it;
  TGAEdge _tge;
    it=new UAltEdge();
    jj_consume_token(20);
    _tge = _TGAEdge();
                                it.set_tge(_tge);
    common_USuperEdge(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UExtendEdge _UExtendEdge() throws ParseException {
  UExtendEdge it;
  TGAEdge _tge;
    it=new UExtendEdge();
    jj_consume_token(21);
    _tge = _TGAEdge();
                                   it.set_tge(_tge);
    common_USuperEdge(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UImplEdge _UImplEdge() throws ParseException {
  UImplEdge it;
  TGIEdge _tge;
    it=new UImplEdge();
    jj_consume_token(22);
    _tge = _TGIEdge();
                                 it.set_tge(_tge);
    common_USuperEdge(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UConstEdge _UConstEdge() throws ParseException {
  UConstEdge it;
  UEdgeName _edgename;
  Cardinality _card;
  UBefore _beFore;
  UAfter _afTer;
  PartModifier_List _keywords;
  TGCEdge _tge;
    it=new UConstEdge();
    jj_consume_token(23);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _edgename = _UEdgeName();
                                            it.set_edgename(_edgename);
      break;
    default:
      jj_la1[22] = jj_gen;
      ;
    }
    _card = _Cardinality();
                         it.set_card(_card);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 11:
      _beFore = _UBefore();
                          it.set_beFore(_beFore);
      break;
    default:
      jj_la1[23] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 12:
      _afTer = _UAfter();
                        it.set_afTer(_afTer);
      break;
    default:
      jj_la1[24] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 18:
    case 24:
    case 25:
    case 26:
      _keywords = _PartModifier_List();
                                      it.set_keywords(_keywords);
      break;
    default:
      jj_la1[25] = jj_gen;
      ;
    }
    _tge = _TGCEdge();
                    it.set_tge(_tge);
    common_UEdge(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartModifier_List _PartModifier_List() throws ParseException {
  PartModifier_List it;
  Nonempty_PartModifier_List _first;
    it=new PartModifier_List();
    _first = _Nonempty_PartModifier_List();
                                         it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartModifier _PartModifier() throws ParseException {
  PartModifier it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 18:
      it = _FinalMod();
      break;
    case 24:
      it = _StaticMod();
      break;
    case 25:
      it = _ReadOnlyMod();
      break;
    case 26:
      it = _PrivateMod();
      break;
    default:
      jj_la1[26] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PartModifier(PartModifier it) throws ParseException {

  }

  final public FinalMod _FinalMod() throws ParseException {
  FinalMod it;
    it=new FinalMod();
    jj_consume_token(18);
              common_PartModifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StaticMod _StaticMod() throws ParseException {
  StaticMod it;
    it=new StaticMod();
    jj_consume_token(24);
               common_PartModifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ReadOnlyMod _ReadOnlyMod() throws ParseException {
  ReadOnlyMod it;
    it=new ReadOnlyMod();
    jj_consume_token(25);
                  common_PartModifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrivateMod _PrivateMod() throws ParseException {
  PrivateMod it;
    it=new PrivateMod();
    jj_consume_token(26);
                common_PartModifier(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Cardinality _Cardinality() throws ParseException {
  Cardinality it;
  Lower _lower;
  Upper _upper;
    it=new Cardinality();
    jj_consume_token(27);
    _lower = _Lower();
                                    it.set_lower(_lower);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 28:
      _upper = _Upper();
                       it.set_upper(_upper);
      break;
    default:
      jj_la1[27] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Lower _Lower() throws ParseException {
  Lower it;
  Integer _l;
    it=new Lower();
    _l = _Integer();
                  it.set_l(_l);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Upper _Upper() throws ParseException {
  Upper it;
  String _u;
    it=new Upper();
    jj_consume_token(28);
    jj_consume_token(28);
    _u = _String();
                           it.set_u(_u);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UID _UID() throws ParseException {
  UID it;
  Integer _id;
    it=new UID();
    _id = _Integer();
                   it.set_id(_id);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UEdgeName _UEdgeName() throws ParseException {
  UEdgeName it;
  Ident _name;
    it=new UEdgeName();
    _name = _Ident();
                   it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UVertexName _UVertexName() throws ParseException {
  UVertexName it;
  Ident _name;
    it=new UVertexName();
    _name = _Ident();
                   it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Coordinates _Coordinates() throws ParseException {
  Coordinates it;
  X _x;
  Y _y;
    it=new Coordinates();
    jj_consume_token(29);
    _x = _X();
                 it.set_x(_x);
    _y = _Y();
            it.set_y(_y);
    jj_consume_token(30);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public X _X() throws ParseException {
  X it;
  Integer _x;
    it=new X();
    _x = _Integer();
                  it.set_x(_x);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Y _Y() throws ParseException {
  Y it;
  Integer _y;
    it=new Y();
    _y = _Integer();
                  it.set_y(_y);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Decorator _Decorator() throws ParseException {
  Decorator it;
  Integer _travtag;
  Vector _travtaglist;
    it=new Decorator();
    jj_consume_token(31);
    _travtag = _Integer();
                                    it.set_travtag(_travtag);
    _travtaglist = _Vector();
                           it.set_travtaglist(_travtaglist);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public UniqueIDGenerator _UniqueIDGenerator() throws ParseException {
  UniqueIDGenerator it;
    it=new UniqueIDGenerator();
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Program _Program() throws ParseException {
  Program it;
  GlobalImports _globalimports;
  ClassGraph _cg;
    it=new Program();
    _globalimports = _GlobalImports();
                                    it.set_globalimports(_globalimports);
    _cg = _ClassGraph();
                      it.set_cg(_cg);
    jj_consume_token(0);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public GlobalImports _GlobalImports() throws ParseException {
  GlobalImports it;
  Import_SList _imports;
    it=new GlobalImports();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 32:
      _imports = _Import_SList();
                                it.set_imports(_imports);
      break;
    default:
      jj_la1[28] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Import _Import() throws ParseException {
  Import it;
  PackageName _packagename;
  ImportAllClasses _importallclasses;
    it=new Import();
    jj_consume_token(32);
    _packagename = _PackageName();
                                          it.set_packagename(_packagename);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 34:
      _importallclasses = _ImportAllClasses();
                                             it.set_importallclasses(_importallclasses);
      break;
    default:
      jj_la1[29] = jj_gen;
      ;
    }
    jj_consume_token(33);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ImportAllClasses _ImportAllClasses() throws ParseException {
  ImportAllClasses it;
    it=new ImportAllClasses();
    jj_consume_token(34);
          {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGraph _ClassGraph() throws ParseException {
  ClassGraph it;
  Hashtable _defdict;
  ClassGraphEntry_DList _classes;
  TraversalGraph _tg;
    it=new ClassGraph();
    _defdict = _Hashtable();
                          it.set_defdict(_defdict);
    _classes = _ClassGraphEntry_DList();
                                      it.set_classes(_classes);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 35:
      jj_consume_token(35);
      _tg = _TraversalGraph();
                                    it.set_tg(_tg);
      break;
    default:
      jj_la1[30] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGraphEntry _ClassGraphEntry() throws ParseException {
  ClassGraphEntry it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 36:
    case 93:
    case 94:
    case 95:
    case 96:
    case 102:
    case 103:
    case 104:
    case 105:
      it = _Directive();
      break;
    case 76:
    case 80:
    case 97:
    case 98:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
    case IDENTIFIER:
      it = _Definition();
      break;
    default:
      jj_la1[31] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ClassGraphEntry(ClassGraphEntry it) throws ParseException {

  }

  final public Directive _Directive() throws ParseException {
  Directive it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 93:
    case 94:
    case 102:
    case 103:
      it = _ParseDirective();
      break;
    case 95:
    case 96:
    case 104:
    case 105:
      it = _VisitorDirective();
      break;
    case 36:
      it = _PackageDirective();
      break;
    default:
      jj_la1[32] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Directive(Directive it) throws ParseException {
    common_ClassGraphEntry(it);

  }

  final public ParseDirective _ParseDirective() throws ParseException {
  ParseDirective it;
  ParseKeyword _parsekeyword;
    it=new ParseDirective();
    _parsekeyword = _ParseKeyword();
                                  it.set_parsekeyword(_parsekeyword);
    common_Directive(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorDirective _VisitorDirective() throws ParseException {
  VisitorDirective it;
  VisitorKeyword _visitorkeyword;
    it=new VisitorDirective();
    _visitorkeyword = _VisitorKeyword();
                                      it.set_visitorkeyword(_visitorkeyword);
    common_Directive(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PackageDirective _PackageDirective() throws ParseException {
  PackageDirective it;
  Package _pkg;
  LocalImports _localimports;
    it=new PackageDirective();
    _pkg = _Package();
                    it.set_pkg(_pkg);
    _localimports = _LocalImports();
                                  it.set_localimports(_localimports);
    common_Directive(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Package _Package() throws ParseException {
  Package it;
  PackageName _packagename;
    it=new Package();
    jj_consume_token(36);
    _packagename = _PackageName();
                                           it.set_packagename(_packagename);
    jj_consume_token(33);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public LocalImports _LocalImports() throws ParseException {
  LocalImports it;
  Import_SList _imports;
    it=new LocalImports();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 32:
      _imports = _Import_SList();
                                it.set_imports(_imports);
      break;
    default:
      jj_la1[33] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Definition _Definition() throws ParseException {
  Definition it;
    it = _ClassDef();
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Definition(Definition it) throws ParseException {
    common_ClassGraphEntry(it);

  }

  final public ClassDef _ClassDef() throws ParseException {
  ClassDef it;
  ClassKeyword_List _keywords;
  ParamClassName _paramclassname;
  ParseDirective _parsedirective;
  ClassParts _classparts;
  ClassMethods _classmethods;
  EOFtoken _eoftoken;
    it=new ClassDef();
    _keywords = _ClassKeyword_List();
                                   it.set_keywords(_keywords);
    _paramclassname = _ParamClassName();
                                      it.set_paramclassname(_paramclassname);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 93:
    case 94:
    case 102:
    case 103:
      _parsedirective = _ParseDirective();
                                         it.set_parsedirective(_parsedirective);
      break;
    default:
      jj_la1[34] = jj_gen;
      ;
    }
    _classparts = _ClassParts();
                              it.set_classparts(_classparts);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
      _classmethods = _ClassMethods();
                                     it.set_classmethods(_classmethods);
      break;
    default:
      jj_la1[35] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 50:
      _eoftoken = _EOFtoken();
                             it.set_eoftoken(_eoftoken);
      break;
    default:
      jj_la1[36] = jj_gen;
      ;
    }
    jj_consume_token(28);
         common_Definition(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ParamClassName _ParamClassName() throws ParseException {
  ParamClassName it;
  ClassName _classname;
  ClassName_Commalist _parameters;
    it=new ParamClassName();
    _classname = _ClassName();
                            it.set_classname(_classname);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 37:
      jj_consume_token(37);
      _parameters = _ClassName_Commalist();
                                               it.set_parameters(_parameters);
      jj_consume_token(38);
      break;
    default:
      jj_la1[37] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassParts _ClassParts() throws ParseException {
  ClassParts it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 43:
    case 44:
      it = _ConstOrAltClass();
      break;
    case 45:
      it = _RepetitionClass();
      break;
    default:
      jj_la1[38] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ClassParts(ClassParts it) throws ParseException {

  }

  final public ConstOrAltClass _ConstOrAltClass() throws ParseException {
  ConstOrAltClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 43:
      it = _ConstructionClass();
      break;
    case 44:
      it = _AlternationClass();
      break;
    default:
      jj_la1[39] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ConstOrAltClass(ConstOrAltClass it) throws ParseException {
  PartOrSyntax_List _parts;
  ClassParents _parents;
    _parts = _PartOrSyntax_List();
                                it.set_parts(_parts);
    _parents = _ClassParents();
                             it.set_parents(_parents);
    common_ClassParts(it);

  }

  final public PartOrSyntax _PartOrSyntax() throws ParseException {
  PartOrSyntax it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 39:
    case 78:
    case 79:
    case 80:
    case 99:
    case 107:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
    case IDENTIFIER:
      it = _Part();
      break;
    case 41:
      it = _OptionalPart();
      break;
    case 46:
    case 47:
    case 48:
    case 49:
    case STRING_LITERAL:
      it = _Syntax();
      break;
    default:
      jj_la1[40] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PartOrSyntax(PartOrSyntax it) throws ParseException {

  }

  final public Part _Part() throws ParseException {
  Part it;
  PartName _partname;
  PartKeyword_List _keywords;
  ClassSpec _classspec;
  PartInit _partinit;
    it=new Part();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 39:
      jj_consume_token(39);
      _partname = _PartName();
                                  it.set_partname(_partname);
      jj_consume_token(40);
      break;
    default:
      jj_la1[41] = jj_gen;
      ;
    }
    _keywords = _PartKeyword_List();
                                  it.set_keywords(_keywords);
    _classspec = _ClassSpec();
                            it.set_classspec(_classspec);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 89:
    case 117:
      _partinit = _PartInit();
                             it.set_partinit(_partinit);
      break;
    default:
      jj_la1[42] = jj_gen;
      ;
    }
    common_PartOrSyntax(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartInit _PartInit() throws ParseException {
  PartInit it;
  PartInitKeyword _partinitkeyword;
  JavaCode _javacode;
    it=new PartInit();
    _partinitkeyword = _PartInitKeyword();
                                        it.set_partinitkeyword(_partinitkeyword);
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public OptionalPart _OptionalPart() throws ParseException {
  OptionalPart it;
  LocalLookahead _locallookahead;
  Part_Sandwich _part;
    it=new OptionalPart();
    jj_consume_token(41);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 101:
    case 123:
      _locallookahead = _LocalLookahead();
                                              it.set_locallookahead(_locallookahead);
      break;
    default:
      jj_la1[43] = jj_gen;
      ;
    }
    _part = _Part_Sandwich();
                           it.set_part(_part);
    jj_consume_token(42);
         common_PartOrSyntax(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassParents _ClassParents() throws ParseException {
  ClassParents it;
  Superclasses _superclasses;
  Interfaces _interfaces;
    it=new ClassParents();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 118:
    case 119:
      _superclasses = _Superclasses();
                                     it.set_superclasses(_superclasses);
      break;
    default:
      jj_la1[44] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 120:
    case 121:
      _interfaces = _Interfaces();
                                 it.set_interfaces(_interfaces);
      break;
    default:
      jj_la1[45] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Superclasses _Superclasses() throws ParseException {
  Superclasses it;
  ExtendsKeyword _extendskeyword;
  Superclass_Commalist _superclasses;
    it=new Superclasses();
    _extendskeyword = _ExtendsKeyword();
                                      it.set_extendskeyword(_extendskeyword);
    _superclasses = _Superclass_Commalist();
                                          it.set_superclasses(_superclasses);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Superclass _Superclass() throws ParseException {
  Superclass it;
  ClassSpec _classspec;
    it=new Superclass();
    _classspec = _ClassSpec();
                            it.set_classspec(_classspec);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Interfaces _Interfaces() throws ParseException {
  Interfaces it;
  ImplementsKeyword _implementskeyword;
  Interface_Commalist _interfaces;
    it=new Interfaces();
    _implementskeyword = _ImplementsKeyword();
                                            it.set_implementskeyword(_implementskeyword);
    _interfaces = _Interface_Commalist();
                                       it.set_interfaces(_interfaces);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Interface _Interface() throws ParseException {
  Interface it;
  ClassSpec _classspec;
    it=new Interface();
    _classspec = _ClassSpec();
                            it.set_classspec(_classspec);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ConstructionClass _ConstructionClass() throws ParseException {
  ConstructionClass it;
    it=new ConstructionClass();
    jj_consume_token(43);
         common_ConstOrAltClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public AlternationClass _AlternationClass() throws ParseException {
  AlternationClass it;
  Subclass_Barlist _subclasses;
  CommonKeyword _commonkeyword;
    it=new AlternationClass();
    jj_consume_token(44);
    if (jj_2_1(2147483647)) {
      _subclasses = _Subclass_Barlist();
                                                                      it.set_subclasses(_subclasses);
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 100:
    case 122:
      _commonkeyword = _CommonKeyword();
                                       it.set_commonkeyword(_commonkeyword);
      break;
    default:
      jj_la1[46] = jj_gen;
      ;
    }
    common_ConstOrAltClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Subclass _Subclass() throws ParseException {
  Subclass it;
  LocalLookahead _locallookahead;
  ClassSpec _classspec;
    it=new Subclass();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 101:
    case 123:
      _locallookahead = _LocalLookahead();
                                         it.set_locallookahead(_locallookahead);
      break;
    default:
      jj_la1[47] = jj_gen;
      ;
    }
    _classspec = _ClassSpec();
                            it.set_classspec(_classspec);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public LocalLookahead _LocalLookahead() throws ParseException {
  LocalLookahead it;
  LookaheadKeyword _lookaheadkeyword;
  JavaCode _javacode;
    it=new LocalLookahead();
    _lookaheadkeyword = _LookaheadKeyword();
                                          it.set_lookaheadkeyword(_lookaheadkeyword);
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public RepetitionClass _RepetitionClass() throws ParseException {
  RepetitionClass it;
  RepeatedPart_Sandwich _sandwiched;
    it=new RepetitionClass();
    jj_consume_token(45);
    _sandwiched = _RepeatedPart_Sandwich();
                                              it.set_sandwiched(_sandwiched);
    common_ClassParts(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public RepeatedPart _RepeatedPart() throws ParseException {
  RepeatedPart it;
  ClassSpec _nonempty;
  LocalLookahead _locallookahead;
  ClassSpec_Sandwich _repeated;
    it=new RepeatedPart();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _nonempty = _ClassSpec();
                              it.set_nonempty(_nonempty);
      break;
    default:
      jj_la1[48] = jj_gen;
      ;
    }
    jj_consume_token(29);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 101:
    case 123:
      _locallookahead = _LocalLookahead();
                                              it.set_locallookahead(_locallookahead);
      break;
    default:
      jj_la1[49] = jj_gen;
      ;
    }
    _repeated = _ClassSpec_Sandwich();
                                    it.set_repeated(_repeated);
    jj_consume_token(30);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassSpec _ClassSpec() throws ParseException {
  ClassSpec it;
  ClassName _classname;
  ClassSpec_Commalist _actual_parameters;
    it=new ClassSpec();
    _classname = _ClassName();
                            it.set_classname(_classname);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 37:
      jj_consume_token(37);
      _actual_parameters = _ClassSpec_Commalist();
                                                      it.set_actual_parameters(_actual_parameters);
      jj_consume_token(38);
      break;
    default:
      jj_la1[50] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Syntax _Syntax() throws ParseException {
  Syntax it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case STRING_LITERAL:
      it = _PlainSyntax();
      break;
    case 46:
    case 47:
    case 48:
    case 49:
      it = _PrintCommand();
      break;
    default:
      jj_la1[51] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Syntax(Syntax it) throws ParseException {
    common_PartOrSyntax(it);

  }

  final public PlainSyntax _PlainSyntax() throws ParseException {
  PlainSyntax it;
  String _string;
    it=new PlainSyntax();
    _string = _String();
                      it.set_string(_string);
    common_Syntax(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrintCommand _PrintCommand() throws ParseException {
  PrintCommand it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 46:
      it = _PrintIndent();
      break;
    case 47:
      it = _PrintUnindent();
      break;
    case 48:
      it = _PrintSkip();
      break;
    case 49:
      it = _PrintSpace();
      break;
    default:
      jj_la1[52] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PrintCommand(PrintCommand it) throws ParseException {
    common_Syntax(it);

  }

  final public PrintIndent _PrintIndent() throws ParseException {
  PrintIndent it;
    it=new PrintIndent();
    jj_consume_token(46);
         common_PrintCommand(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrintUnindent _PrintUnindent() throws ParseException {
  PrintUnindent it;
    it=new PrintUnindent();
    jj_consume_token(47);
         common_PrintCommand(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrintSkip _PrintSkip() throws ParseException {
  PrintSkip it;
    it=new PrintSkip();
    jj_consume_token(48);
          common_PrintCommand(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrintSpace _PrintSpace() throws ParseException {
  PrintSpace it;
    it=new PrintSpace();
    jj_consume_token(49);
          common_PrintCommand(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public EOFtoken _EOFtoken() throws ParseException {
  EOFtoken it;
    it=new EOFtoken();
    jj_consume_token(50);
             {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ProgramBehavior _ProgramBehavior() throws ParseException {
  ProgramBehavior it;
  Behavior_DList _behavior;
    it=new ProgramBehavior();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
    case 51:
    case 70:
    case IDENTIFIER:
      _behavior = _Behavior_DList();
                                   it.set_behavior(_behavior);
      break;
    default:
      jj_la1[53] = jj_gen;
      ;
    }
    jj_consume_token(0);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Behavior _Behavior() throws ParseException {
  Behavior it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 51:
      it = _StrategyDefinition();
      break;
    case 29:
    case 70:
    case IDENTIFIER:
      it = _ClassBehavior();
      break;
    default:
      jj_la1[54] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Behavior(Behavior it) throws ParseException {

  }

  final public StrategyDefinition _StrategyDefinition() throws ParseException {
  StrategyDefinition it;
  StrategyName _strategyname;
  StrategyExpression _exp;
    it=new StrategyDefinition();
    jj_consume_token(51);
    _strategyname = _StrategyName();
                                              it.set_strategyname(_strategyname);
    jj_consume_token(43);
    _exp = _StrategyExpression();
                                    it.set_exp(_exp);
    jj_consume_token(28);
         common_Behavior(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StrategyExpression _StrategyExpression() throws ParseException {
  StrategyExpression it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
      it = _StrategyGraph();
      break;
    case 57:
    case 58:
    case 59:
    case 60:
    case 61:
    case 62:
      it = _PathDirective();
      break;
    case 63:
      it = _StrategyVariable();
      break;
    case 64:
    case 65:
    case 66:
      it = _CompoundStrategy();
      break;
    default:
      jj_la1[55] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_StrategyExpression(StrategyExpression it) throws ParseException {

  }

  final public StrategyGraph _StrategyGraph() throws ParseException {
  StrategyGraph it;
  Vector _edgeVec;
  SGEdge_SList _edges;
  ClassGlobSpec _sources;
  Integer_NList _sourceEdges;
  ClassGlobSpec _targets;
    it=new StrategyGraph();
    jj_consume_token(29);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 52:
      jj_consume_token(52);
      _edgeVec = _Vector();
                                       it.set_edgeVec(_edgeVec);
      break;
    default:
      jj_la1[56] = jj_gen;
      ;
    }
    _edges = _SGEdge_SList();
                           it.set_edges(_edges);
    jj_consume_token(30);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 53:
      jj_consume_token(53);
      _sources = _ClassGlobSpec();
                                                 it.set_sources(_sources);
      break;
    default:
      jj_la1[57] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 54:
      jj_consume_token(54);
      _sourceEdges = _Integer_NList();
                                                     it.set_sourceEdges(_sourceEdges);
      break;
    default:
      jj_la1[58] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 55:
      jj_consume_token(55);
      _targets = _ClassGlobSpec();
                                            it.set_targets(_targets);
      break;
    default:
      jj_la1[59] = jj_gen;
      ;
    }
    common_StrategyExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public SGEdge _SGEdge() throws ParseException {
  SGEdge it;
  ClassGlobSpec _source;
  ClassGlobSpec _dest;
  NegativeConstraint _constraint;
    it=new SGEdge();
    _source = _ClassGlobSpec();
                             it.set_source(_source);
    jj_consume_token(56);
    _dest = _ClassGlobSpec();
                                 it.set_dest(_dest);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 59:
    case 60:
      _constraint = _NegativeConstraint();
                                         it.set_constraint(_constraint);
      break;
    default:
      jj_la1[60] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PathDirective _PathDirective() throws ParseException {
  PathDirective it;
  NegativeConstraint _constraint;
  PathSegment_List _segments;
  TargetDirective _targetdirective;
    it=new PathDirective();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 59:
    case 60:
      _constraint = _NegativeConstraint();
                                         it.set_constraint(_constraint);
      break;
    default:
      jj_la1[61] = jj_gen;
      ;
    }
    _segments = _PathSegment_List();
                                  it.set_segments(_segments);
    _targetdirective = _TargetDirective();
                                        it.set_targetdirective(_targetdirective);
    common_StrategyExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PathSegment _PathSegment() throws ParseException {
  PathSegment it;
  PositiveConstraint _node;
  NegativeConstraint _constraint;
    it=new PathSegment();
    _node = _PositiveConstraint();
                                it.set_node(_node);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 59:
    case 60:
      _constraint = _NegativeConstraint();
                                         it.set_constraint(_constraint);
      break;
    default:
      jj_la1[62] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Constraint _Constraint() throws ParseException {
  Constraint it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 57:
    case 58:
      it = _PositiveConstraint();
      break;
    case 59:
    case 60:
      it = _NegativeConstraint();
      break;
    default:
      jj_la1[63] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Constraint(Constraint it) throws ParseException {
  GlobSpec _glob;
    _glob = _GlobSpec();
                      it.set_glob(_glob);

  }

  final public PositiveConstraint _PositiveConstraint() throws ParseException {
  PositiveConstraint it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 57:
      it = _Through();
      break;
    case 58:
      it = _Via();
      break;
    default:
      jj_la1[64] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PositiveConstraint(PositiveConstraint it) throws ParseException {
    common_Constraint(it);

  }

  final public Through _Through() throws ParseException {
  Through it;
    it=new Through();
    jj_consume_token(57);
               common_PositiveConstraint(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Via _Via() throws ParseException {
  Via it;
    it=new Via();
    jj_consume_token(58);
           common_PositiveConstraint(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NegativeConstraint _NegativeConstraint() throws ParseException {
  NegativeConstraint it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 59:
      it = _Bypassing();
      break;
    case 60:
      it = _OnlyThrough();
      break;
    default:
      jj_la1[65] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_NegativeConstraint(NegativeConstraint it) throws ParseException {
    common_Constraint(it);

  }

  final public Bypassing _Bypassing() throws ParseException {
  Bypassing it;
    it=new Bypassing();
    jj_consume_token(59);
                 common_NegativeConstraint(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public OnlyThrough _OnlyThrough() throws ParseException {
  OnlyThrough it;
    it=new OnlyThrough();
    jj_consume_token(60);
                    common_NegativeConstraint(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public TargetDirective _TargetDirective() throws ParseException {
  TargetDirective it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 61:
      it = _To();
      break;
    case 62:
      it = _ToStop();
      break;
    default:
      jj_la1[66] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_TargetDirective(TargetDirective it) throws ParseException {
  ClassGlobSpec _targets;
    _targets = _ClassGlobSpec();
                              it.set_targets(_targets);

  }

  final public To _To() throws ParseException {
  To it;
    it=new To();
    jj_consume_token(61);
          common_TargetDirective(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ToStop _ToStop() throws ParseException {
  ToStop it;
    it=new ToStop();
    jj_consume_token(62);
               common_TargetDirective(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StrategyVariable _StrategyVariable() throws ParseException {
  StrategyVariable it;
  StrategyName _strategyname;
    it=new StrategyVariable();
    jj_consume_token(63);
    _strategyname = _StrategyName();
                                        it.set_strategyname(_strategyname);
    common_StrategyExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public CompoundStrategy _CompoundStrategy() throws ParseException {
  CompoundStrategy it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 64:
      it = _Join();
      break;
    case 65:
      it = _Merge();
      break;
    case 66:
      it = _Intersect();
      break;
    default:
      jj_la1[67] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_CompoundStrategy(CompoundStrategy it) throws ParseException {
  StrategyExpression_Commalist _args;
    jj_consume_token(37);
    _args = _StrategyExpression_Commalist();
                                               it.set_args(_args);
    jj_consume_token(38);
         common_StrategyExpression(it);

  }

  final public Join _Join() throws ParseException {
  Join it;
    it=new Join();
    jj_consume_token(64);
            common_CompoundStrategy(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Merge _Merge() throws ParseException {
  Merge it;
    it=new Merge();
    jj_consume_token(65);
             common_CompoundStrategy(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Intersect _Intersect() throws ParseException {
  Intersect it;
    it=new Intersect();
    jj_consume_token(66);
                 common_CompoundStrategy(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public GlobSpec _GlobSpec() throws ParseException {
  GlobSpec it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 56:
    case 68:
    case 69:
    case 70:
    case IDENTIFIER:
      it = _OneGlob();
      break;
    case 29:
      it = _GlobSet();
      break;
    default:
      jj_la1[68] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_GlobSpec(GlobSpec it) throws ParseException {
    common_HostSpec(it);

  }

  final public OneGlob _OneGlob() throws ParseException {
  OneGlob it;
  Glob _glob;
    it=new OneGlob();
    _glob = _Glob();
                  it.set_glob(_glob);
    common_GlobSpec(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public GlobSet _GlobSet() throws ParseException {
  GlobSet it;
  Glob_Commalist _globs;
    it=new GlobSet();
    jj_consume_token(29);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 56:
    case 68:
    case 69:
    case 70:
    case IDENTIFIER:
      _globs = _Glob_Commalist();
                                     it.set_globs(_globs);
      break;
    default:
      jj_la1[69] = jj_gen;
      ;
    }
    jj_consume_token(30);
         common_GlobSpec(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Glob _Glob() throws ParseException {
  Glob it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 70:
    case IDENTIFIER:
      it = _ClassGlob();
      break;
    case 56:
    case 68:
    case 69:
      it = _EdgeGlob();
      break;
    default:
      jj_la1[70] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Glob(Glob it) throws ParseException {

  }

  final public EdgeGlob _EdgeGlob() throws ParseException {
  EdgeGlob it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 56:
      it = _PartGlob();
      break;
    case 68:
      it = _SubclassGlob();
      break;
    case 69:
      it = _SuperclassGlob();
      break;
    default:
      jj_la1[71] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_EdgeGlob(EdgeGlob it) throws ParseException {
    common_Glob(it);

  }

  final public ClassGlob _ClassGlob() throws ParseException {
  ClassGlob it;
  ClassNameGlob _name;
    it=new ClassGlob();
    _name = _ClassNameGlob();
                           it.set_name(_name);
    common_Glob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartGlob _PartGlob() throws ParseException {
  PartGlob it;
  SourceGlob _source;
  PartNameGlob _name;
  DestGlob _dest;
    it=new PartGlob();
    jj_consume_token(56);
    _source = _SourceGlob();
                                it.set_source(_source);
    jj_consume_token(67);
    _name = _PartNameGlob();
                               it.set_name(_name);
    jj_consume_token(67);
    _dest = _DestGlob();
                           it.set_dest(_dest);
    common_EdgeGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public SubclassGlob _SubclassGlob() throws ParseException {
  SubclassGlob it;
  SourceGlob _source;
  DestGlob _dest;
    it=new SubclassGlob();
    jj_consume_token(68);
    _source = _SourceGlob();
                                it.set_source(_source);
    jj_consume_token(67);
    _dest = _DestGlob();
                           it.set_dest(_dest);
    common_EdgeGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public SuperclassGlob _SuperclassGlob() throws ParseException {
  SuperclassGlob it;
  SourceGlob _source;
  DestGlob _dest;
    it=new SuperclassGlob();
    jj_consume_token(69);
    _source = _SourceGlob();
                                it.set_source(_source);
    jj_consume_token(67);
    _dest = _DestGlob();
                           it.set_dest(_dest);
    common_EdgeGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public SourceGlob _SourceGlob() throws ParseException {
  SourceGlob it;
  ClassNameGlob _name;
    it=new SourceGlob();
    _name = _ClassNameGlob();
                           it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DestGlob _DestGlob() throws ParseException {
  DestGlob it;
  ClassNameGlob _name;
    it=new DestGlob();
    _name = _ClassNameGlob();
                           it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassNameGlob _ClassNameGlob() throws ParseException {
  ClassNameGlob it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      it = _ClassNameExact();
      break;
    case 70:
      it = _AnyClass();
      break;
    default:
      jj_la1[72] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ClassNameGlob(ClassNameGlob it) throws ParseException {

  }

  final public ClassNameExact _ClassNameExact() throws ParseException {
  ClassNameExact it;
  ClassName _classname;
    it=new ClassNameExact();
    _classname = _ClassName();
                            it.set_classname(_classname);
    common_ClassNameGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public AnyClass _AnyClass() throws ParseException {
  AnyClass it;
    it=new AnyClass();
    jj_consume_token(70);
         common_ClassNameGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartNameGlob _PartNameGlob() throws ParseException {
  PartNameGlob it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 89:
    case 93:
    case 94:
    case 95:
    case 96:
    case 97:
    case 98:
    case 99:
    case 100:
    case 101:
    case IDENTIFIER:
      it = _PartNameExact();
      break;
    case 70:
      it = _AnyPart();
      break;
    default:
      jj_la1[73] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PartNameGlob(PartNameGlob it) throws ParseException {

  }

  final public PartNameExact _PartNameExact() throws ParseException {
  PartNameExact it;
  PartName _partname;
    it=new PartNameExact();
    _partname = _PartName();
                          it.set_partname(_partname);
    common_PartNameGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public AnyPart _AnyPart() throws ParseException {
  AnyPart it;
    it=new AnyPart();
    jj_consume_token(70);
         common_PartNameGlob(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGlobSpec _ClassGlobSpec() throws ParseException {
  ClassGlobSpec it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 70:
    case IDENTIFIER:
      it = _OneClassGlob();
      break;
    case 29:
      it = _ClassGlobSet();
      break;
    default:
      jj_la1[74] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ClassGlobSpec(ClassGlobSpec it) throws ParseException {

  }

  final public OneClassGlob _OneClassGlob() throws ParseException {
  OneClassGlob it;
  ClassGlob _classglob;
    it=new OneClassGlob();
    _classglob = _ClassGlob();
                            it.set_classglob(_classglob);
    common_ClassGlobSpec(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGlobSet _ClassGlobSet() throws ParseException {
  ClassGlobSet it;
  ClassGlob_Commalist _globs;
    it=new ClassGlobSet();
    jj_consume_token(29);
    _globs = _ClassGlob_Commalist();
                                       it.set_globs(_globs);
    jj_consume_token(30);
         common_ClassGlobSpec(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassBehavior _ClassBehavior() throws ParseException {
  ClassBehavior it;
  ClassGlobSpec _classes;
  ClassMethods _methods;
    it=new ClassBehavior();
    _classes = _ClassGlobSpec();
                              it.set_classes(_classes);
    _methods = _ClassMethods();
                             it.set_methods(_methods);
    common_Behavior(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassMethods _ClassMethods() throws ParseException {
  ClassMethods it;
  Method_SList _methods;
  Hashtable _wrapperdict;
    it=new ClassMethods();
    jj_consume_token(29);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 75:
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 84:
    case 85:
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
    case 91:
    case 92:
    case TEXT_LITERAL:
    case IDENTIFIER:
      _methods = _Method_SList();
                                     it.set_methods(_methods);
      break;
    default:
      jj_la1[75] = jj_gen;
      ;
    }
    jj_consume_token(30);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 71:
      jj_consume_token(71);
      _wrapperdict = _Hashtable();
                                                   it.set_wrapperdict(_wrapperdict);
      break;
    default:
      jj_la1[76] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public HostSet _HostSet() throws ParseException {
  HostSet it;
  Hashtable _exactHosts;
  Hashtable _partnames;
  GlobSet _globs;
    it=new HostSet();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 72:
      jj_consume_token(72);
      _exactHosts = _Hashtable();
                                          it.set_exactHosts(_exactHosts);
      break;
    default:
      jj_la1[77] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 73:
      jj_consume_token(73);
      _partnames = _Hashtable();
                                             it.set_partnames(_partnames);
      break;
    default:
      jj_la1[78] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 74:
      jj_consume_token(74);
      _globs = _GlobSet();
                                   it.set_globs(_globs);
      break;
    default:
      jj_la1[79] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Method _Method() throws ParseException {
  Method it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 75:
      it = _TraversalDef();
      break;
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case IDENTIFIER:
      it = _MethodDef();
      break;
    case 84:
    case 85:
    case 86:
      it = _Wrapper();
      break;
    case 87:
    case 88:
      it = _Accessor();
      break;
    case 89:
      it = _Constructor();
      break;
    case 90:
      it = _Start();
      break;
    case 91:
      it = _Finish();
      break;
    case 92:
      it = _ReturnValue();
      break;
    case TEXT_LITERAL:
      it = _Verbatim();
      break;
    default:
      jj_la1[80] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Method(Method it) throws ParseException {

  }

  final public TraversalDef _TraversalDef() throws ParseException {
  TraversalDef it;
  TraversalName _name;
  TraversalParms _parms;
  StrategyExpression _strat;
    it=new TraversalDef();
    jj_consume_token(75);
    _name = _TraversalName();
                                        it.set_name(_name);
    _parms = _TraversalParms();
                             it.set_parms(_parms);
    jj_consume_token(29);
    _strat = _StrategyExpression();
                                      it.set_strat(_strat);
    jj_consume_token(33);
    jj_consume_token(30);
              common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public TraversalParms _TraversalParms() throws ParseException {
  TraversalParms it;
  Visitor_Commalist _visitors;
    it=new TraversalParms();
    jj_consume_token(37);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _visitors = _Visitor_Commalist();
                                           it.set_visitors(_visitors);
      break;
    default:
      jj_la1[81] = jj_gen;
      ;
    }
    jj_consume_token(38);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Visitor _Visitor() throws ParseException {
  Visitor it;
  ClassName _classname;
  VisitorName _visitorname;
    it=new Visitor();
    _classname = _ClassName();
                            it.set_classname(_classname);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _visitorname = _VisitorName();
                                   it.set_visitorname(_visitorname);
      break;
    default:
      jj_la1[82] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodDef _MethodDef() throws ParseException {
  MethodDef it;
  MethodSignature _methodsignature;
  MethodBody _methodbody;
    it=new MethodDef();
    _methodsignature = _MethodSignature();
                                        it.set_methodsignature(_methodsignature);
    _methodbody = _MethodBody();
                              it.set_methodbody(_methodbody);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodSignature _MethodSignature() throws ParseException {
  MethodSignature it;
  MethodKeyword_List _keywords;
  JavaType _returnType;
  MethodName _name;
  MethodParm_Commalist _parms;
  Throws _throwsclause;
    it=new MethodSignature();
    _keywords = _MethodKeyword_List();
                                    it.set_keywords(_keywords);
    _returnType = _JavaType();
                            it.set_returnType(_returnType);
    _name = _MethodName();
                        it.set_name(_name);
    jj_consume_token(37);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _parms = _MethodParm_Commalist();
                                           it.set_parms(_parms);
      break;
    default:
      jj_la1[83] = jj_gen;
      ;
    }
    jj_consume_token(38);
    _throwsclause = _Throws();
                                 it.set_throwsclause(_throwsclause);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodKeyword _MethodKeyword() throws ParseException {
  MethodKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
      it = _PublicMethod();
      break;
    case 77:
      it = _ProtectedMethod();
      break;
    case 78:
      it = _PrivateMethod();
      break;
    case 79:
      it = _StaticMethod();
      break;
    case 80:
      it = _FinalMethod();
      break;
    case 81:
      it = _AbstractMethod();
      break;
    default:
      jj_la1[84] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_MethodKeyword(MethodKeyword it) throws ParseException {

  }

  final public PublicMethod _PublicMethod() throws ParseException {
  PublicMethod it;
    it=new PublicMethod();
    jj_consume_token(76);
              common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ProtectedMethod _ProtectedMethod() throws ParseException {
  ProtectedMethod it;
    it=new ProtectedMethod();
    jj_consume_token(77);
                 common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrivateMethod _PrivateMethod() throws ParseException {
  PrivateMethod it;
    it=new PrivateMethod();
    jj_consume_token(78);
               common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StaticMethod _StaticMethod() throws ParseException {
  StaticMethod it;
    it=new StaticMethod();
    jj_consume_token(79);
              common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public FinalMethod _FinalMethod() throws ParseException {
  FinalMethod it;
    it=new FinalMethod();
    jj_consume_token(80);
             common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public AbstractMethod _AbstractMethod() throws ParseException {
  AbstractMethod it;
    it=new AbstractMethod();
    jj_consume_token(81);
                common_MethodKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodParm _MethodParm() throws ParseException {
  MethodParm it;
  JavaType _type;
  ArraySpec_List _array1;
  ParmName _name;
  ArraySpec_List _array2;
    it=new MethodParm();
    _type = _JavaType();
                      it.set_type(_type);
    _array1 = _ArraySpec_List();
                              it.set_array1(_array1);
    _name = _ParmName();
                      it.set_name(_name);
    _array2 = _ArraySpec_List();
                              it.set_array2(_array2);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ArraySpec _ArraySpec() throws ParseException {
  ArraySpec it;
    it=new ArraySpec();
    jj_consume_token(41);
    jj_consume_token(42);
              {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Throws _Throws() throws ParseException {
  Throws it;
  ClassName_Commalist _exceptions;
    it=new Throws();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 82:
      jj_consume_token(82);
      _exceptions = _ClassName_Commalist();
                                                    it.set_exceptions(_exceptions);
      break;
    default:
      jj_la1[85] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodBody _MethodBody() throws ParseException {
  MethodBody it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TEXT_LITERAL:
      it = _VerbatimMethodBody();
      break;
    case 29:
    case 43:
    case 57:
    case 58:
    case 59:
    case 60:
    case 61:
    case 62:
    case 63:
    case 64:
    case 65:
    case 66:
    case IDENTIFIER:
      it = _AdaptiveMethodBody();
      break;
    case 33:
      it = _NoMethodBody();
      break;
    default:
      jj_la1[86] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_MethodBody(MethodBody it) throws ParseException {

  }

  final public VerbatimMethodBody _VerbatimMethodBody() throws ParseException {
  VerbatimMethodBody it;
  JavaCode _javacode;
    it=new VerbatimMethodBody();
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    common_MethodBody(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public AdaptiveMethodBody _AdaptiveMethodBody() throws ParseException {
  AdaptiveMethodBody it;
  TraversalExpression _trv;
  VisitorExpression _vis;
    it=new AdaptiveMethodBody();
    _trv = _TraversalExpression();
                                it.set_trv(_trv);
    _vis = _VisitorExpression();
                              it.set_vis(_vis);
    common_MethodBody(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NoMethodBody _NoMethodBody() throws ParseException {
  NoMethodBody it;
    it=new NoMethodBody();
    jj_consume_token(33);
         common_MethodBody(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public TraversalExpression _TraversalExpression() throws ParseException {
  TraversalExpression it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 43:
    case IDENTIFIER:
      it = _TraversalRef();
      break;
    case 29:
    case 57:
    case 58:
    case 59:
    case 60:
    case 61:
    case 62:
    case 63:
    case 64:
    case 65:
    case 66:
      it = _TraversalSpec();
      break;
    default:
      jj_la1[87] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_TraversalExpression(TraversalExpression it) throws ParseException {

  }

  final public TraversalRef _TraversalRef() throws ParseException {
  TraversalRef it;
  Equals _equals;
  TraversalName _name;
    it=new TraversalRef();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 43:
      _equals = _Equals();
                         it.set_equals(_equals);
      break;
    default:
      jj_la1[88] = jj_gen;
      ;
    }
    _name = _TraversalName();
                           it.set_name(_name);
    common_TraversalExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Equals _Equals() throws ParseException {
  Equals it;
    it=new Equals();
    jj_consume_token(43);
         {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public TraversalSpec _TraversalSpec() throws ParseException {
  TraversalSpec it;
  StrategyExpression _strat;
    it=new TraversalSpec();
    _strat = _StrategyExpression();
                                 it.set_strat(_strat);
    common_TraversalExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorExpression _VisitorExpression() throws ParseException {
  VisitorExpression it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 37:
    case 83:
      it = _VisitorRef();
      break;
    case 29:
      it = _VisitorSpec();
      break;
    default:
      jj_la1[89] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_VisitorExpression(VisitorExpression it) throws ParseException {

  }

  final public VisitorRef _VisitorRef() throws ParseException {
  VisitorRef it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 83:
      it = _WithVisitorRef();
      break;
    case 37:
      it = _ParenVisitorRef();
      break;
    default:
      jj_la1[90] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_VisitorRef(VisitorRef it) throws ParseException {
    common_VisitorExpression(it);

  }

  final public WithVisitorRef _WithVisitorRef() throws ParseException {
  WithVisitorRef it;
  ClassName_Commalist _visitorClasses;
    it=new WithVisitorRef();
    jj_consume_token(83);
    _visitorClasses = _ClassName_Commalist();
                                                   it.set_visitorClasses(_visitorClasses);
    jj_consume_token(33);
         common_VisitorRef(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ParenVisitorRef _ParenVisitorRef() throws ParseException {
  ParenVisitorRef it;
  ClassName_Commalist _visitorClasses;
    it=new ParenVisitorRef();
    jj_consume_token(37);
    _visitorClasses = _ClassName_Commalist();
                                                it.set_visitorClasses(_visitorClasses);
    jj_consume_token(38);
    jj_consume_token(33);
              common_VisitorRef(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorSpec _VisitorSpec() throws ParseException {
  VisitorSpec it;
  ClassMethods _methods;
    it=new VisitorSpec();
    _methods = _ClassMethods();
                             it.set_methods(_methods);
    common_VisitorExpression(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Wrapper _Wrapper() throws ParseException {
  Wrapper it;
  WrapperKind _kind;
  HostSpec _hosts;
  JavaCode _javacode;
    it=new Wrapper();
    _kind = _WrapperKind();
                         it.set_kind(_kind);
    _hosts = _HostSpec();
                       it.set_hosts(_hosts);
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public WrapperKind _WrapperKind() throws ParseException {
  WrapperKind it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 84:
      it = _Before();
      break;
    case 85:
      it = _Around();
      break;
    case 86:
      it = _After();
      break;
    default:
      jj_la1[91] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_WrapperKind(WrapperKind it) throws ParseException {

  }

  final public Before _Before() throws ParseException {
  Before it;
    it=new Before();
    jj_consume_token(84);
              common_WrapperKind(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Around _Around() throws ParseException {
  Around it;
    it=new Around();
    jj_consume_token(85);
              common_WrapperKind(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public After _After() throws ParseException {
  After it;
    it=new After();
    jj_consume_token(86);
             common_WrapperKind(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public HostSpec _HostSpec() throws ParseException {
  HostSpec it;
    it = _GlobSpec();
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_HostSpec(HostSpec it) throws ParseException {

  }

  final public Accessor _Accessor() throws ParseException {
  Accessor it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 87:
      it = _Getter();
      break;
    case 88:
      it = _Setter();
      break;
    default:
      jj_la1[92] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_Accessor(Accessor it) throws ParseException {
  PartName _partname;
  JavaCode _javacode;
    _partname = _PartName();
                          it.set_partname(_partname);
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    common_Method(it);

  }

  final public Getter _Getter() throws ParseException {
  Getter it;
    it=new Getter();
    jj_consume_token(87);
           common_Accessor(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Setter _Setter() throws ParseException {
  Setter it;
    it=new Setter();
    jj_consume_token(88);
           common_Accessor(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Constructor _Constructor() throws ParseException {
  Constructor it;
  JavaCode _javacode;
    it=new Constructor();
    jj_consume_token(89);
    _javacode = _JavaCode();
                                  it.set_javacode(_javacode);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Start _Start() throws ParseException {
  Start it;
  JavaCode _javacode;
    it=new Start();
    jj_consume_token(90);
    _javacode = _JavaCode();
                                   it.set_javacode(_javacode);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Finish _Finish() throws ParseException {
  Finish it;
  JavaCode _javacode;
    it=new Finish();
    jj_consume_token(91);
    _javacode = _JavaCode();
                                    it.set_javacode(_javacode);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ReturnValue _ReturnValue() throws ParseException {
  ReturnValue it;
  JavaType _type;
  JavaCode _exp;
    it=new ReturnValue();
    jj_consume_token(92);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      _type = _JavaType();
                                   it.set_type(_type);
      break;
    default:
      jj_la1[93] = jj_gen;
      ;
    }
    _exp = _JavaCode();
                     it.set_exp(_exp);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Verbatim _Verbatim() throws ParseException {
  Verbatim it;
  JavaCode _javacode;
    it=new Verbatim();
    _javacode = _JavaCode();
                          it.set_javacode(_javacode);
    common_Method(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PackageName _PackageName() throws ParseException {
  PackageName it;
  Nonempty_PackageName _first;
    it=new PackageName();
    _first = _Nonempty_PackageName();
                                   it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassName _ClassName() throws ParseException {
  ClassName it;
  Name _name;
    it=new ClassName();
    _name = _Name();
                  it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartName _PartName() throws ParseException {
  PartName it;
  IdentOrKeyword _name;
    it=new PartName();
    _name = _IdentOrKeyword();
                            it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public TraversalName _TraversalName() throws ParseException {
  TraversalName it;
  Name _name;
    it=new TraversalName();
    _name = _Name();
                  it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorName _VisitorName() throws ParseException {
  VisitorName it;
  Name _name;
    it=new VisitorName();
    _name = _Name();
                  it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodName _MethodName() throws ParseException {
  MethodName it;
  Ident _name;
    it=new MethodName();
    _name = _Ident();
                   it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ParmName _ParmName() throws ParseException {
  ParmName it;
  Ident _name;
    it=new ParmName();
    _name = _Ident();
                   it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StrategyName _StrategyName() throws ParseException {
  StrategyName it;
  Ident _name;
    it=new StrategyName();
    _name = _Ident();
                   it.set_name(_name);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public JavaType _JavaType() throws ParseException {
  JavaType it;
  Name _type;
    it=new JavaType();
    _type = _Name();
                  it.set_type(_type);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public JavaCode _JavaCode() throws ParseException {
  JavaCode it;
  Text _code;
    it=new JavaCode();
    _code = _Text();
                  it.set_code(_code);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Name _Name() throws ParseException {
  Name it;
  Nonempty_Name _first;
    it=new Name();
    _first = _Nonempty_Name();
                            it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public IdentOrKeyword _IdentOrKeyword() throws ParseException {
  IdentOrKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 93:
      it = _ParseIdent();
      break;
    case 94:
      it = _NoParseIdent();
      break;
    case 95:
      it = _VisitorsIdent();
      break;
    case 96:
      it = _EndVisitorsIdent();
      break;
    case 97:
      it = _VisitorIdent();
      break;
    case 98:
      it = _NotParsedIdent();
      break;
    case 99:
      it = _DerivedIdent();
      break;
    case 89:
      it = _InitIdent();
      break;
    case 100:
      it = _CommonIdent();
      break;
    case 101:
      it = _LookaheadIdent();
      break;
    case IDENTIFIER:
      it = _OtherIdent();
      break;
    default:
      jj_la1[94] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_IdentOrKeyword(IdentOrKeyword it) throws ParseException {

  }

  final public ParseIdent _ParseIdent() throws ParseException {
  ParseIdent it;
    it=new ParseIdent();
    jj_consume_token(93);
             common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NoParseIdent _NoParseIdent() throws ParseException {
  NoParseIdent it;
    it=new NoParseIdent();
    jj_consume_token(94);
               common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorsIdent _VisitorsIdent() throws ParseException {
  VisitorsIdent it;
    it=new VisitorsIdent();
    jj_consume_token(95);
                common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public EndVisitorsIdent _EndVisitorsIdent() throws ParseException {
  EndVisitorsIdent it;
    it=new EndVisitorsIdent();
    jj_consume_token(96);
                   common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorIdent _VisitorIdent() throws ParseException {
  VisitorIdent it;
    it=new VisitorIdent();
    jj_consume_token(97);
               common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NotParsedIdent _NotParsedIdent() throws ParseException {
  NotParsedIdent it;
    it=new NotParsedIdent();
    jj_consume_token(98);
                 common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DerivedIdent _DerivedIdent() throws ParseException {
  DerivedIdent it;
    it=new DerivedIdent();
    jj_consume_token(99);
               common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public InitIdent _InitIdent() throws ParseException {
  InitIdent it;
    it=new InitIdent();
    jj_consume_token(89);
            common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public CommonIdent _CommonIdent() throws ParseException {
  CommonIdent it;
    it=new CommonIdent();
    jj_consume_token(100);
              common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public LookaheadIdent _LookaheadIdent() throws ParseException {
  LookaheadIdent it;
    it=new LookaheadIdent();
    jj_consume_token(101);
                 common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public OtherIdent _OtherIdent() throws ParseException {
  OtherIdent it;
  Ident _id;
    it=new OtherIdent();
    _id = _Ident();
                 it.set_id(_id);
    common_IdentOrKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ParseKeyword _ParseKeyword() throws ParseException {
  ParseKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 93:
    case 102:
      it = _DoParse();
      break;
    case 94:
    case 103:
      it = _DontParse();
      break;
    default:
      jj_la1[95] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ParseKeyword(ParseKeyword it) throws ParseException {

  }

  final public DoParse _DoParse() throws ParseException {
  DoParse it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 93:
      it = _DoParseWithoutStars();
      break;
    case 102:
      it = _DoParseWithStars();
      break;
    default:
      jj_la1[96] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_DoParse(DoParse it) throws ParseException {
    common_ParseKeyword(it);

  }

  final public DoParseWithoutStars _DoParseWithoutStars() throws ParseException {
  DoParseWithoutStars it;
    it=new DoParseWithoutStars();
    jj_consume_token(93);
             common_DoParse(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DoParseWithStars _DoParseWithStars() throws ParseException {
  DoParseWithStars it;
    it=new DoParseWithStars();
    jj_consume_token(102);
               common_DoParse(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DontParse _DontParse() throws ParseException {
  DontParse it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 94:
      it = _DontParseWithoutStars();
      break;
    case 103:
      it = _DontParseWithStars();
      break;
    default:
      jj_la1[97] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_DontParse(DontParse it) throws ParseException {
    common_ParseKeyword(it);

  }

  final public DontParseWithoutStars _DontParseWithoutStars() throws ParseException {
  DontParseWithoutStars it;
    it=new DontParseWithoutStars();
    jj_consume_token(94);
               common_DontParse(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DontParseWithStars _DontParseWithStars() throws ParseException {
  DontParseWithStars it;
    it=new DontParseWithStars();
    jj_consume_token(103);
                 common_DontParse(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorKeyword _VisitorKeyword() throws ParseException {
  VisitorKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 95:
    case 104:
      it = _BeginVisitors();
      break;
    case 96:
    case 105:
      it = _EndVisitors();
      break;
    default:
      jj_la1[98] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_VisitorKeyword(VisitorKeyword it) throws ParseException {

  }

  final public BeginVisitors _BeginVisitors() throws ParseException {
  BeginVisitors it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 95:
      it = _BeginVisitorsWithoutStars();
      break;
    case 104:
      it = _BeginVisitorsWithStars();
      break;
    default:
      jj_la1[99] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_BeginVisitors(BeginVisitors it) throws ParseException {
    common_VisitorKeyword(it);

  }

  final public BeginVisitorsWithoutStars _BeginVisitorsWithoutStars() throws ParseException {
  BeginVisitorsWithoutStars it;
    it=new BeginVisitorsWithoutStars();
    jj_consume_token(95);
                common_BeginVisitors(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public BeginVisitorsWithStars _BeginVisitorsWithStars() throws ParseException {
  BeginVisitorsWithStars it;
    it=new BeginVisitorsWithStars();
    jj_consume_token(104);
                  common_BeginVisitors(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public EndVisitors _EndVisitors() throws ParseException {
  EndVisitors it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 96:
      it = _EndVisitorsWithoutStars();
      break;
    case 105:
      it = _EndVisitorsWithStars();
      break;
    default:
      jj_la1[100] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_EndVisitors(EndVisitors it) throws ParseException {
    common_VisitorKeyword(it);

  }

  final public EndVisitorsWithoutStars _EndVisitorsWithoutStars() throws ParseException {
  EndVisitorsWithoutStars it;
    it=new EndVisitorsWithoutStars();
    jj_consume_token(96);
                   common_EndVisitors(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public EndVisitorsWithStars _EndVisitorsWithStars() throws ParseException {
  EndVisitorsWithStars it;
    it=new EndVisitorsWithStars();
    jj_consume_token(105);
                     common_EndVisitors(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassKeyword _ClassKeyword() throws ParseException {
  ClassKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
    case 106:
      it = _PublicClass();
      break;
    case 80:
    case 107:
      it = _FinalClass();
      break;
    case 108:
    case 109:
      it = _InterfaceClass();
      break;
    case 97:
    case 110:
      it = _VisitorClass();
      break;
    case 98:
    case 111:
      it = _NotParsedClass();
      break;
    default:
      jj_la1[101] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ClassKeyword(ClassKeyword it) throws ParseException {

  }

  final public PublicClass _PublicClass() throws ParseException {
  PublicClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
      it = _PublicClassWithoutStars();
      break;
    case 106:
      it = _PublicClassWithStars();
      break;
    default:
      jj_la1[102] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PublicClass(PublicClass it) throws ParseException {
    common_ClassKeyword(it);

  }

  final public PublicClassWithoutStars _PublicClassWithoutStars() throws ParseException {
  PublicClassWithoutStars it;
    it=new PublicClassWithoutStars();
    jj_consume_token(76);
              common_PublicClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PublicClassWithStars _PublicClassWithStars() throws ParseException {
  PublicClassWithStars it;
    it=new PublicClassWithStars();
    jj_consume_token(106);
                common_PublicClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public FinalClass _FinalClass() throws ParseException {
  FinalClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 80:
      it = _FinalClassWithoutStars();
      break;
    case 107:
      it = _FinalClassWithStars();
      break;
    default:
      jj_la1[103] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_FinalClass(FinalClass it) throws ParseException {
    common_ClassKeyword(it);

  }

  final public FinalClassWithoutStars _FinalClassWithoutStars() throws ParseException {
  FinalClassWithoutStars it;
    it=new FinalClassWithoutStars();
    jj_consume_token(80);
             common_FinalClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public FinalClassWithStars _FinalClassWithStars() throws ParseException {
  FinalClassWithStars it;
    it=new FinalClassWithStars();
    jj_consume_token(107);
               common_FinalClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public InterfaceClass _InterfaceClass() throws ParseException {
  InterfaceClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 108:
      it = _InterfaceClassWithoutStars();
      break;
    case 109:
      it = _InterfaceClassWithStars();
      break;
    default:
      jj_la1[104] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_InterfaceClass(InterfaceClass it) throws ParseException {
    common_ClassKeyword(it);

  }

  final public InterfaceClassWithoutStars _InterfaceClassWithoutStars() throws ParseException {
  InterfaceClassWithoutStars it;
    it=new InterfaceClassWithoutStars();
    jj_consume_token(108);
                 common_InterfaceClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public InterfaceClassWithStars _InterfaceClassWithStars() throws ParseException {
  InterfaceClassWithStars it;
    it=new InterfaceClassWithStars();
    jj_consume_token(109);
                   common_InterfaceClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorClass _VisitorClass() throws ParseException {
  VisitorClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 97:
      it = _VisitorClassWithoutStars();
      break;
    case 110:
      it = _VisitorClassWithStars();
      break;
    default:
      jj_la1[105] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_VisitorClass(VisitorClass it) throws ParseException {
    common_ClassKeyword(it);

  }

  final public VisitorClassWithoutStars _VisitorClassWithoutStars() throws ParseException {
  VisitorClassWithoutStars it;
    it=new VisitorClassWithoutStars();
    jj_consume_token(97);
               common_VisitorClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public VisitorClassWithStars _VisitorClassWithStars() throws ParseException {
  VisitorClassWithStars it;
    it=new VisitorClassWithStars();
    jj_consume_token(110);
                 common_VisitorClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NotParsedClass _NotParsedClass() throws ParseException {
  NotParsedClass it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 98:
      it = _NotParsedClassWithoutStars();
      break;
    case 111:
      it = _NotParsedClassWithStars();
      break;
    default:
      jj_la1[106] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_NotParsedClass(NotParsedClass it) throws ParseException {
    common_ClassKeyword(it);

  }

  final public NotParsedClassWithoutStars _NotParsedClassWithoutStars() throws ParseException {
  NotParsedClassWithoutStars it;
    it=new NotParsedClassWithoutStars();
    jj_consume_token(98);
                 common_NotParsedClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public NotParsedClassWithStars _NotParsedClassWithStars() throws ParseException {
  NotParsedClassWithStars it;
    it=new NotParsedClassWithStars();
    jj_consume_token(111);
                   common_NotParsedClass(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartKeyword _PartKeyword() throws ParseException {
  PartKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 80:
    case 107:
      it = _FinalPart();
      break;
    case 79:
    case 112:
      it = _StaticPart();
      break;
    case 113:
    case 114:
      it = _ReadOnlyPart();
      break;
    case 78:
    case 115:
      it = _PrivatePart();
      break;
    case 99:
    case 116:
      it = _DerivedPart();
      break;
    default:
      jj_la1[107] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PartKeyword(PartKeyword it) throws ParseException {

  }

  final public FinalPart _FinalPart() throws ParseException {
  FinalPart it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 80:
      it = _FinalPartWithoutStars();
      break;
    case 107:
      it = _FinalPartWithStars();
      break;
    default:
      jj_la1[108] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_FinalPart(FinalPart it) throws ParseException {
    common_PartKeyword(it);

  }

  final public FinalPartWithoutStars _FinalPartWithoutStars() throws ParseException {
  FinalPartWithoutStars it;
    it=new FinalPartWithoutStars();
    jj_consume_token(80);
             common_FinalPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public FinalPartWithStars _FinalPartWithStars() throws ParseException {
  FinalPartWithStars it;
    it=new FinalPartWithStars();
    jj_consume_token(107);
               common_FinalPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StaticPart _StaticPart() throws ParseException {
  StaticPart it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 79:
      it = _StaticPartWithoutStars();
      break;
    case 112:
      it = _StaticPartWithStars();
      break;
    default:
      jj_la1[109] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_StaticPart(StaticPart it) throws ParseException {
    common_PartKeyword(it);

  }

  final public StaticPartWithoutStars _StaticPartWithoutStars() throws ParseException {
  StaticPartWithoutStars it;
    it=new StaticPartWithoutStars();
    jj_consume_token(79);
              common_StaticPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StaticPartWithStars _StaticPartWithStars() throws ParseException {
  StaticPartWithStars it;
    it=new StaticPartWithStars();
    jj_consume_token(112);
                common_StaticPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ReadOnlyPart _ReadOnlyPart() throws ParseException {
  ReadOnlyPart it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 113:
      it = _ReadOnlyPartWithoutStars();
      break;
    case 114:
      it = _ReadOnlyPartWithStars();
      break;
    default:
      jj_la1[110] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ReadOnlyPart(ReadOnlyPart it) throws ParseException {
    common_PartKeyword(it);

  }

  final public ReadOnlyPartWithoutStars _ReadOnlyPartWithoutStars() throws ParseException {
  ReadOnlyPartWithoutStars it;
    it=new ReadOnlyPartWithoutStars();
    jj_consume_token(113);
                 common_ReadOnlyPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ReadOnlyPartWithStars _ReadOnlyPartWithStars() throws ParseException {
  ReadOnlyPartWithStars it;
    it=new ReadOnlyPartWithStars();
    jj_consume_token(114);
                   common_ReadOnlyPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrivatePart _PrivatePart() throws ParseException {
  PrivatePart it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 78:
      it = _PrivatePartWithoutStars();
      break;
    case 115:
      it = _PrivatePartWithStars();
      break;
    default:
      jj_la1[111] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PrivatePart(PrivatePart it) throws ParseException {
    common_PartKeyword(it);

  }

  final public PrivatePartWithoutStars _PrivatePartWithoutStars() throws ParseException {
  PrivatePartWithoutStars it;
    it=new PrivatePartWithoutStars();
    jj_consume_token(78);
               common_PrivatePart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PrivatePartWithStars _PrivatePartWithStars() throws ParseException {
  PrivatePartWithStars it;
    it=new PrivatePartWithStars();
    jj_consume_token(115);
                 common_PrivatePart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DerivedPart _DerivedPart() throws ParseException {
  DerivedPart it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 99:
      it = _DerivedPartWithoutStars();
      break;
    case 116:
      it = _DerivedPartWithStars();
      break;
    default:
      jj_la1[112] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_DerivedPart(DerivedPart it) throws ParseException {
    common_PartKeyword(it);

  }

  final public DerivedPartWithoutStars _DerivedPartWithoutStars() throws ParseException {
  DerivedPartWithoutStars it;
    it=new DerivedPartWithoutStars();
    jj_consume_token(99);
               common_DerivedPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public DerivedPartWithStars _DerivedPartWithStars() throws ParseException {
  DerivedPartWithStars it;
    it=new DerivedPartWithStars();
    jj_consume_token(116);
                 common_DerivedPart(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartInitKeyword _PartInitKeyword() throws ParseException {
  PartInitKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 89:
      it = _PartInitKeywordWithoutStars();
      break;
    case 117:
      it = _PartInitKeywordWithStars();
      break;
    default:
      jj_la1[113] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_PartInitKeyword(PartInitKeyword it) throws ParseException {

  }

  final public PartInitKeywordWithoutStars _PartInitKeywordWithoutStars() throws ParseException {
  PartInitKeywordWithoutStars it;
    it=new PartInitKeywordWithoutStars();
    jj_consume_token(89);
            common_PartInitKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartInitKeywordWithStars _PartInitKeywordWithStars() throws ParseException {
  PartInitKeywordWithStars it;
    it=new PartInitKeywordWithStars();
    jj_consume_token(117);
              common_PartInitKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ExtendsKeyword _ExtendsKeyword() throws ParseException {
  ExtendsKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 118:
      it = _ExtendsKeywordWithoutStars();
      break;
    case 119:
      it = _ExtendsKeywordWithStars();
      break;
    default:
      jj_la1[114] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ExtendsKeyword(ExtendsKeyword it) throws ParseException {

  }

  final public ExtendsKeywordWithoutStars _ExtendsKeywordWithoutStars() throws ParseException {
  ExtendsKeywordWithoutStars it;
    it=new ExtendsKeywordWithoutStars();
    jj_consume_token(118);
               common_ExtendsKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ExtendsKeywordWithStars _ExtendsKeywordWithStars() throws ParseException {
  ExtendsKeywordWithStars it;
    it=new ExtendsKeywordWithStars();
    jj_consume_token(119);
                 common_ExtendsKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ImplementsKeyword _ImplementsKeyword() throws ParseException {
  ImplementsKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 120:
      it = _ImplementsKeywordWithoutStars();
      break;
    case 121:
      it = _ImplementsKeywordWithStars();
      break;
    default:
      jj_la1[115] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_ImplementsKeyword(ImplementsKeyword it) throws ParseException {

  }

  final public ImplementsKeywordWithoutStars _ImplementsKeywordWithoutStars() throws ParseException {
  ImplementsKeywordWithoutStars it;
    it=new ImplementsKeywordWithoutStars();
    jj_consume_token(120);
                  common_ImplementsKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ImplementsKeywordWithStars _ImplementsKeywordWithStars() throws ParseException {
  ImplementsKeywordWithStars it;
    it=new ImplementsKeywordWithStars();
    jj_consume_token(121);
                    common_ImplementsKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public CommonKeyword _CommonKeyword() throws ParseException {
  CommonKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 100:
      it = _CommonWithoutStars();
      break;
    case 122:
      it = _CommonWithStars();
      break;
    default:
      jj_la1[116] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_CommonKeyword(CommonKeyword it) throws ParseException {

  }

  final public CommonWithoutStars _CommonWithoutStars() throws ParseException {
  CommonWithoutStars it;
    it=new CommonWithoutStars();
    jj_consume_token(100);
              common_CommonKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public CommonWithStars _CommonWithStars() throws ParseException {
  CommonWithStars it;
    it=new CommonWithStars();
    jj_consume_token(122);
                common_CommonKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public LookaheadKeyword _LookaheadKeyword() throws ParseException {
  LookaheadKeyword it;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 101:
      it = _LookaheadKeywordWithoutStars();
      break;
    case 123:
      it = _LookaheadKeywordWithStars();
      break;
    default:
      jj_la1[117] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public void common_LookaheadKeyword(LookaheadKeyword it) throws ParseException {

  }

  final public LookaheadKeywordWithoutStars _LookaheadKeywordWithoutStars() throws ParseException {
  LookaheadKeywordWithoutStars it;
    it=new LookaheadKeywordWithoutStars();
    jj_consume_token(101);
                 common_LookaheadKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public LookaheadKeywordWithStars _LookaheadKeywordWithStars() throws ParseException {
  LookaheadKeywordWithStars it;
    it=new LookaheadKeywordWithStars();
    jj_consume_token(123);
                   common_LookaheadKeyword(it);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Import_SList _Import_SList() throws ParseException {
  Import_SList it;
  Nonempty_Import_SList _first;
    it=new Import_SList();
    _first = _Nonempty_Import_SList();
                                    it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGraphEntry_DList _ClassGraphEntry_DList() throws ParseException {
  ClassGraphEntry_DList it;
  Nonempty_ClassGraphEntry_DList _first;
    it=new ClassGraphEntry_DList();
    _first = _Nonempty_ClassGraphEntry_DList();
                                             it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassKeyword_List _ClassKeyword_List() throws ParseException {
  ClassKeyword_List it;
  Nonempty_ClassKeyword_List _first;
    it=new ClassKeyword_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
    case 80:
    case 97:
    case 98:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
      _first = _Nonempty_ClassKeyword_List();
                                            it.set_first(_first);
      break;
    default:
      jj_la1[118] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassName_Commalist _ClassName_Commalist() throws ParseException {
  ClassName_Commalist it;
  Nonempty_ClassName_Commalist _first;
    it=new ClassName_Commalist();
    _first = _Nonempty_ClassName_Commalist();
                                           it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartOrSyntax_List _PartOrSyntax_List() throws ParseException {
  PartOrSyntax_List it;
  Nonempty_PartOrSyntax_List _first;
    it=new PartOrSyntax_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 39:
    case 41:
    case 46:
    case 47:
    case 48:
    case 49:
    case 78:
    case 79:
    case 80:
    case 99:
    case 107:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
    case STRING_LITERAL:
    case IDENTIFIER:
      _first = _Nonempty_PartOrSyntax_List();
                                            it.set_first(_first);
      break;
    default:
      jj_la1[119] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PartKeyword_List _PartKeyword_List() throws ParseException {
  PartKeyword_List it;
  Nonempty_PartKeyword_List _first;
    it=new PartKeyword_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 78:
    case 79:
    case 80:
    case 99:
    case 107:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
      _first = _Nonempty_PartKeyword_List();
                                           it.set_first(_first);
      break;
    default:
      jj_la1[120] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Part_Sandwich _Part_Sandwich() throws ParseException {
  Part_Sandwich it;
  Syntax_List _first;
  Part _inner;
  Syntax_List _second;
    it=new Part_Sandwich();
    _first = _Syntax_List();
                          it.set_first(_first);
    _inner = _Part();
                   it.set_inner(_inner);
    _second = _Syntax_List();
                           it.set_second(_second);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Superclass_Commalist _Superclass_Commalist() throws ParseException {
  Superclass_Commalist it;
  Nonempty_Superclass_Commalist _first;
    it=new Superclass_Commalist();
    _first = _Nonempty_Superclass_Commalist();
                                            it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Interface_Commalist _Interface_Commalist() throws ParseException {
  Interface_Commalist it;
  Nonempty_Interface_Commalist _first;
    it=new Interface_Commalist();
    _first = _Nonempty_Interface_Commalist();
                                           it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Subclass_Barlist _Subclass_Barlist() throws ParseException {
  Subclass_Barlist it;
  Nonempty_Subclass_Barlist _first;
    it=new Subclass_Barlist();
    _first = _Nonempty_Subclass_Barlist();
                                        it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public RepeatedPart_Sandwich _RepeatedPart_Sandwich() throws ParseException {
  RepeatedPart_Sandwich it;
  Syntax_List _first;
  RepeatedPart _inner;
  Syntax_List _second;
    it=new RepeatedPart_Sandwich();
    _first = _Syntax_List();
                          it.set_first(_first);
    _inner = _RepeatedPart();
                           it.set_inner(_inner);
    _second = _Syntax_List();
                           it.set_second(_second);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassSpec_Sandwich _ClassSpec_Sandwich() throws ParseException {
  ClassSpec_Sandwich it;
  Syntax_List _first;
  ClassSpec _inner;
  Syntax_List _second;
    it=new ClassSpec_Sandwich();
    _first = _Syntax_List();
                          it.set_first(_first);
    _inner = _ClassSpec();
                        it.set_inner(_inner);
    _second = _Syntax_List();
                           it.set_second(_second);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Syntax_List _Syntax_List() throws ParseException {
  Syntax_List it;
  Nonempty_Syntax_List _first;
    it=new Syntax_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 46:
    case 47:
    case 48:
    case 49:
    case STRING_LITERAL:
      _first = _Nonempty_Syntax_List();
                                      it.set_first(_first);
      break;
    default:
      jj_la1[121] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassSpec_Commalist _ClassSpec_Commalist() throws ParseException {
  ClassSpec_Commalist it;
  Nonempty_ClassSpec_Commalist _first;
    it=new ClassSpec_Commalist();
    _first = _Nonempty_ClassSpec_Commalist();
                                           it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Behavior_DList _Behavior_DList() throws ParseException {
  Behavior_DList it;
  Nonempty_Behavior_DList _first;
    it=new Behavior_DList();
    _first = _Nonempty_Behavior_DList();
                                      it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public SGEdge_SList _SGEdge_SList() throws ParseException {
  SGEdge_SList it;
  Nonempty_SGEdge_SList _first;
    it=new SGEdge_SList();
    _first = _Nonempty_SGEdge_SList();
                                    it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Integer_NList _Integer_NList() throws ParseException {
  Integer_NList it;
  Nonempty_Integer_NList _first;
    it=new Integer_NList();
    _first = _Nonempty_Integer_NList();
                                     it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public PathSegment_List _PathSegment_List() throws ParseException {
  PathSegment_List it;
  Nonempty_PathSegment_List _first;
    it=new PathSegment_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 57:
    case 58:
      _first = _Nonempty_PathSegment_List();
                                           it.set_first(_first);
      break;
    default:
      jj_la1[122] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public StrategyExpression_Commalist _StrategyExpression_Commalist() throws ParseException {
  StrategyExpression_Commalist it;
  Nonempty_StrategyExpression_Commalist _first;
    it=new StrategyExpression_Commalist();
    _first = _Nonempty_StrategyExpression_Commalist();
                                                    it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Glob_Commalist _Glob_Commalist() throws ParseException {
  Glob_Commalist it;
  Nonempty_Glob_Commalist _first;
    it=new Glob_Commalist();
    _first = _Nonempty_Glob_Commalist();
                                      it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ClassGlob_Commalist _ClassGlob_Commalist() throws ParseException {
  ClassGlob_Commalist it;
  Nonempty_ClassGlob_Commalist _first;
    it=new ClassGlob_Commalist();
    _first = _Nonempty_ClassGlob_Commalist();
                                           it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Method_SList _Method_SList() throws ParseException {
  Method_SList it;
  Nonempty_Method_SList _first;
    it=new Method_SList();
    _first = _Nonempty_Method_SList();
                                    it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Visitor_Commalist _Visitor_Commalist() throws ParseException {
  Visitor_Commalist it;
  Nonempty_Visitor_Commalist _first;
    it=new Visitor_Commalist();
    _first = _Nonempty_Visitor_Commalist();
                                         it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodKeyword_List _MethodKeyword_List() throws ParseException {
  MethodKeyword_List it;
  Nonempty_MethodKeyword_List _first;
    it=new MethodKeyword_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
      _first = _Nonempty_MethodKeyword_List();
                                             it.set_first(_first);
      break;
    default:
      jj_la1[123] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public MethodParm_Commalist _MethodParm_Commalist() throws ParseException {
  MethodParm_Commalist it;
  Nonempty_MethodParm_Commalist _first;
    it=new MethodParm_Commalist();
    _first = _Nonempty_MethodParm_Commalist();
                                            it.set_first(_first);
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public ArraySpec_List _ArraySpec_List() throws ParseException {
  ArraySpec_List it;
  Nonempty_ArraySpec_List _first;
    it=new ArraySpec_List();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 41:
      _first = _Nonempty_ArraySpec_List();
                                         it.set_first(_first);
      break;
    default:
      jj_la1[124] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_UVertex_List _Nonempty_UVertex_List() throws ParseException {
  Nonempty_UVertex_List it;
  UVertex _it;
  Nonempty_UVertex_List _next;
    it=new Nonempty_UVertex_List();
    _it = _UVertex();
                   it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 10:
    case 13:
    case 14:
    case 16:
    case 17:
      _next = _Nonempty_UVertex_List();
                                      it.set_next(_next);
      break;
    default:
      jj_la1[125] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_IEdge_List _Nonempty_IEdge_List() throws ParseException {
  Nonempty_IEdge_List it;
  UID _it;
  Nonempty_IEdge_List _next;
    it=new Nonempty_IEdge_List();
    _it = _UID();
               it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_IEdge_List();
                                         it.set_next(_next);
      break;
    default:
      jj_la1[126] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_OEdge_List _Nonempty_OEdge_List() throws ParseException {
  Nonempty_OEdge_List it;
  UID _it;
  Nonempty_OEdge_List _next;
    it=new Nonempty_OEdge_List();
    _it = _UID();
               it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_OEdge_List();
                                         it.set_next(_next);
      break;
    default:
      jj_la1[127] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_InterfaceModifier_List _Nonempty_InterfaceModifier_List() throws ParseException {
  Nonempty_InterfaceModifier_List it;
  InterfaceModifier _it;
  Nonempty_InterfaceModifier_List _next;
    it=new Nonempty_InterfaceModifier_List();
    _it = _InterfaceModifier();
                             it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 15:
      _next = _Nonempty_InterfaceModifier_List();
                                                it.set_next(_next);
      break;
    default:
      jj_la1[128] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ScopeIdentifier_List _Nonempty_ScopeIdentifier_List() throws ParseException {
  Nonempty_ScopeIdentifier_List it;
  ScopeIdentifier _it;
  Nonempty_ScopeIdentifier_List _next;
    it=new Nonempty_ScopeIdentifier_List();
    _it = _ScopeIdentifier();
                           it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 15:
    case 18:
      _next = _Nonempty_ScopeIdentifier_List();
                                              it.set_next(_next);
      break;
    default:
      jj_la1[129] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_UEdge_List _Nonempty_UEdge_List() throws ParseException {
  Nonempty_UEdge_List it;
  UEdge _it;
  Nonempty_UEdge_List _next;
    it=new Nonempty_UEdge_List();
    _it = _UEdge();
                 it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 20:
    case 21:
    case 22:
    case 23:
      _next = _Nonempty_UEdge_List();
                                    it.set_next(_next);
      break;
    default:
      jj_la1[130] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_PartModifier_List _Nonempty_PartModifier_List() throws ParseException {
  Nonempty_PartModifier_List it;
  PartModifier _it;
  Nonempty_PartModifier_List _next;
    it=new Nonempty_PartModifier_List();
    _it = _PartModifier();
                        it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 18:
    case 24:
    case 25:
    case 26:
      _next = _Nonempty_PartModifier_List();
                                           it.set_next(_next);
      break;
    default:
      jj_la1[131] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_PackageName _Nonempty_PackageName() throws ParseException {
  Nonempty_PackageName it;
  IdentOrKeyword _it;
  Nonempty_PackageName _next;
    it=new Nonempty_PackageName();
    _it = _IdentOrKeyword();
                          it.set_it(_it);
    if (jj_2_2(2)) {
      jj_consume_token(28);
      _next = _Nonempty_PackageName();
                                                          it.set_next(_next);
    } else {
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Name _Nonempty_Name() throws ParseException {
  Nonempty_Name it;
  Ident _it;
  Nonempty_Name _next;
    it=new Nonempty_Name();
    _it = _Ident();
                 it.set_it(_it);
    if (jj_2_3(2147483647) && ("=:~(".indexOf(getToken(3).image) == -1)) {
      jj_consume_token(28);
      _next = _Nonempty_Name();
                                                                                                          it.set_next(_next);
    } else {
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Import_SList _Nonempty_Import_SList() throws ParseException {
  Nonempty_Import_SList it;
  Import _it;
  Nonempty_Import_SList _next;
    it=new Nonempty_Import_SList();
    _it = _Import();
                  it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 32:
      _next = _Nonempty_Import_SList();
                                      it.set_next(_next);
      break;
    default:
      jj_la1[132] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ClassGraphEntry_DList _Nonempty_ClassGraphEntry_DList() throws ParseException {
  Nonempty_ClassGraphEntry_DList it;
  ClassGraphEntry _it;
  Nonempty_ClassGraphEntry_DList _next;
    it=new Nonempty_ClassGraphEntry_DList();
    _it = _ClassGraphEntry();
                           it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 36:
    case 76:
    case 80:
    case 93:
    case 94:
    case 95:
    case 96:
    case 97:
    case 98:
    case 102:
    case 103:
    case 104:
    case 105:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
    case IDENTIFIER:
      _next = _Nonempty_ClassGraphEntry_DList();
                                               it.set_next(_next);
      break;
    default:
      jj_la1[133] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ClassKeyword_List _Nonempty_ClassKeyword_List() throws ParseException {
  Nonempty_ClassKeyword_List it;
  ClassKeyword _it;
  Nonempty_ClassKeyword_List _next;
    it=new Nonempty_ClassKeyword_List();
    _it = _ClassKeyword();
                        it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
    case 80:
    case 97:
    case 98:
    case 106:
    case 107:
    case 108:
    case 109:
    case 110:
    case 111:
      _next = _Nonempty_ClassKeyword_List();
                                           it.set_next(_next);
      break;
    default:
      jj_la1[134] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ClassName_Commalist _Nonempty_ClassName_Commalist() throws ParseException {
  Nonempty_ClassName_Commalist it;
  ClassName _it;
  Nonempty_ClassName_Commalist _next;
    it=new Nonempty_ClassName_Commalist();
    _it = _ClassName();
                     it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_ClassName_Commalist();
                                                  it.set_next(_next);
      break;
    default:
      jj_la1[135] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_PartOrSyntax_List _Nonempty_PartOrSyntax_List() throws ParseException {
  Nonempty_PartOrSyntax_List it;
  PartOrSyntax _it;
  Nonempty_PartOrSyntax_List _next;
    it=new Nonempty_PartOrSyntax_List();
    _it = _PartOrSyntax();
                        it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 39:
    case 41:
    case 46:
    case 47:
    case 48:
    case 49:
    case 78:
    case 79:
    case 80:
    case 99:
    case 107:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
    case STRING_LITERAL:
    case IDENTIFIER:
      _next = _Nonempty_PartOrSyntax_List();
                                           it.set_next(_next);
      break;
    default:
      jj_la1[136] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_PartKeyword_List _Nonempty_PartKeyword_List() throws ParseException {
  Nonempty_PartKeyword_List it;
  PartKeyword _it;
  Nonempty_PartKeyword_List _next;
    it=new Nonempty_PartKeyword_List();
    _it = _PartKeyword();
                       it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 78:
    case 79:
    case 80:
    case 99:
    case 107:
    case 112:
    case 113:
    case 114:
    case 115:
    case 116:
      _next = _Nonempty_PartKeyword_List();
                                          it.set_next(_next);
      break;
    default:
      jj_la1[137] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Superclass_Commalist _Nonempty_Superclass_Commalist() throws ParseException {
  Nonempty_Superclass_Commalist it;
  Superclass _it;
  Nonempty_Superclass_Commalist _next;
    it=new Nonempty_Superclass_Commalist();
    _it = _Superclass();
                      it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_Superclass_Commalist();
                                                   it.set_next(_next);
      break;
    default:
      jj_la1[138] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Interface_Commalist _Nonempty_Interface_Commalist() throws ParseException {
  Nonempty_Interface_Commalist it;
  Interface _it;
  Nonempty_Interface_Commalist _next;
    it=new Nonempty_Interface_Commalist();
    _it = _Interface();
                     it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_Interface_Commalist();
                                                  it.set_next(_next);
      break;
    default:
      jj_la1[139] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Subclass_Barlist _Nonempty_Subclass_Barlist() throws ParseException {
  Nonempty_Subclass_Barlist it;
  Subclass _it;
  Nonempty_Subclass_Barlist _next;
    it=new Nonempty_Subclass_Barlist();
    _it = _Subclass();
                    it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 124:
      jj_consume_token(124);
      _next = _Nonempty_Subclass_Barlist();
                                               it.set_next(_next);
      break;
    default:
      jj_la1[140] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Syntax_List _Nonempty_Syntax_List() throws ParseException {
  Nonempty_Syntax_List it;
  Syntax _it;
  Nonempty_Syntax_List _next;
    it=new Nonempty_Syntax_List();
    _it = _Syntax();
                  it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 46:
    case 47:
    case 48:
    case 49:
    case STRING_LITERAL:
      _next = _Nonempty_Syntax_List();
                                     it.set_next(_next);
      break;
    default:
      jj_la1[141] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ClassSpec_Commalist _Nonempty_ClassSpec_Commalist() throws ParseException {
  Nonempty_ClassSpec_Commalist it;
  ClassSpec _it;
  Nonempty_ClassSpec_Commalist _next;
    it=new Nonempty_ClassSpec_Commalist();
    _it = _ClassSpec();
                     it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_ClassSpec_Commalist();
                                                  it.set_next(_next);
      break;
    default:
      jj_la1[142] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Behavior_DList _Nonempty_Behavior_DList() throws ParseException {
  Nonempty_Behavior_DList it;
  Behavior _it;
  Nonempty_Behavior_DList _next;
    it=new Nonempty_Behavior_DList();
    _it = _Behavior();
                    it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
    case 51:
    case 70:
    case IDENTIFIER:
      _next = _Nonempty_Behavior_DList();
                                        it.set_next(_next);
      break;
    default:
      jj_la1[143] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_SGEdge_SList _Nonempty_SGEdge_SList() throws ParseException {
  Nonempty_SGEdge_SList it;
  SGEdge _it;
  Nonempty_SGEdge_SList _next;
    it=new Nonempty_SGEdge_SList();
    _it = _SGEdge();
                  it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 29:
    case 70:
    case IDENTIFIER:
      _next = _Nonempty_SGEdge_SList();
                                      it.set_next(_next);
      break;
    default:
      jj_la1[144] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Integer_NList _Nonempty_Integer_NList() throws ParseException {
  Nonempty_Integer_NList it;
  Integer _it;
  Nonempty_Integer_NList _next;
    it=new Nonempty_Integer_NList();
    _it = _Integer();
                   it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DECIMAL_LITERAL:
    case HEX_LITERAL:
    case OCTAL_LITERAL:
    case FLOATING_POINT_LITERAL:
      _next = _Nonempty_Integer_NList();
                                       it.set_next(_next);
      break;
    default:
      jj_la1[145] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_PathSegment_List _Nonempty_PathSegment_List() throws ParseException {
  Nonempty_PathSegment_List it;
  PathSegment _it;
  Nonempty_PathSegment_List _next;
    it=new Nonempty_PathSegment_List();
    _it = _PathSegment();
                       it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 57:
    case 58:
      _next = _Nonempty_PathSegment_List();
                                          it.set_next(_next);
      break;
    default:
      jj_la1[146] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_StrategyExpression_Commalist _Nonempty_StrategyExpression_Commalist() throws ParseException {
  Nonempty_StrategyExpression_Commalist it;
  StrategyExpression _it;
  Nonempty_StrategyExpression_Commalist _next;
    it=new Nonempty_StrategyExpression_Commalist();
    _it = _StrategyExpression();
                              it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_StrategyExpression_Commalist();
                                                           it.set_next(_next);
      break;
    default:
      jj_la1[147] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Glob_Commalist _Nonempty_Glob_Commalist() throws ParseException {
  Nonempty_Glob_Commalist it;
  Glob _it;
  Nonempty_Glob_Commalist _next;
    it=new Nonempty_Glob_Commalist();
    _it = _Glob();
                it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_Glob_Commalist();
                                             it.set_next(_next);
      break;
    default:
      jj_la1[148] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ClassGlob_Commalist _Nonempty_ClassGlob_Commalist() throws ParseException {
  Nonempty_ClassGlob_Commalist it;
  ClassGlob _it;
  Nonempty_ClassGlob_Commalist _next;
    it=new Nonempty_ClassGlob_Commalist();
    _it = _ClassGlob();
                     it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_ClassGlob_Commalist();
                                                  it.set_next(_next);
      break;
    default:
      jj_la1[149] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Method_SList _Nonempty_Method_SList() throws ParseException {
  Nonempty_Method_SList it;
  Method _it;
  Nonempty_Method_SList _next;
    it=new Nonempty_Method_SList();
    _it = _Method();
                  it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 75:
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
    case 84:
    case 85:
    case 86:
    case 87:
    case 88:
    case 89:
    case 90:
    case 91:
    case 92:
    case TEXT_LITERAL:
    case IDENTIFIER:
      _next = _Nonempty_Method_SList();
                                      it.set_next(_next);
      break;
    default:
      jj_la1[150] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_Visitor_Commalist _Nonempty_Visitor_Commalist() throws ParseException {
  Nonempty_Visitor_Commalist it;
  Visitor _it;
  Nonempty_Visitor_Commalist _next;
    it=new Nonempty_Visitor_Commalist();
    _it = _Visitor();
                   it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_Visitor_Commalist();
                                                it.set_next(_next);
      break;
    default:
      jj_la1[151] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_MethodKeyword_List _Nonempty_MethodKeyword_List() throws ParseException {
  Nonempty_MethodKeyword_List it;
  MethodKeyword _it;
  Nonempty_MethodKeyword_List _next;
    it=new Nonempty_MethodKeyword_List();
    _it = _MethodKeyword();
                         it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 76:
    case 77:
    case 78:
    case 79:
    case 80:
    case 81:
      _next = _Nonempty_MethodKeyword_List();
                                            it.set_next(_next);
      break;
    default:
      jj_la1[152] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_MethodParm_Commalist _Nonempty_MethodParm_Commalist() throws ParseException {
  Nonempty_MethodParm_Commalist it;
  MethodParm _it;
  Nonempty_MethodParm_Commalist _next;
    it=new Nonempty_MethodParm_Commalist();
    _it = _MethodParm();
                      it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 67:
      jj_consume_token(67);
      _next = _Nonempty_MethodParm_Commalist();
                                                   it.set_next(_next);
      break;
    default:
      jj_la1[153] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Nonempty_ArraySpec_List _Nonempty_ArraySpec_List() throws ParseException {
  Nonempty_ArraySpec_List it;
  ArraySpec _it;
  Nonempty_ArraySpec_List _next;
    it=new Nonempty_ArraySpec_List();
    _it = _ArraySpec();
                     it.set_it(_it);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 41:
      _next = _Nonempty_ArraySpec_List();
                                        it.set_next(_next);
      break;
    default:
      jj_la1[154] = jj_gen;
      ;
    }
    {if (true) return it;}
    throw new Error("Missing return statement in function");
  }

  final public Vector _Vector() throws ParseException {
                           {if (true) return new Vector();}
    throw new Error("Missing return statement in function");
  }

  final public TGIEdge _TGIEdge() throws ParseException {
                             {if (true) return new TGIEdge();}
    throw new Error("Missing return statement in function");
  }

  final public ArcPerspective _ArcPerspective() throws ParseException {
                                           {if (true) return new ArcPerspective();}
    throw new Error("Missing return statement in function");
  }

  final public TGCEdge _TGCEdge() throws ParseException {
                             {if (true) return new TGCEdge();}
    throw new Error("Missing return statement in function");
  }

  final public TGAEdge _TGAEdge() throws ParseException {
                             {if (true) return new TGAEdge();}
    throw new Error("Missing return statement in function");
  }

  final public Perspective _Perspective() throws ParseException {
                                     {if (true) return new Perspective();}
    throw new Error("Missing return statement in function");
  }

  final public TGVertex _TGVertex() throws ParseException {
                               {if (true) return new TGVertex();}
    throw new Error("Missing return statement in function");
  }

  final public Hashtable _Hashtable() throws ParseException {
                                 {if (true) return new Hashtable();}
    throw new Error("Missing return statement in function");
  }

  final public TraversalGraph _TraversalGraph() throws ParseException {
                                           {if (true) return new TraversalGraph();}
    throw new Error("Missing return statement in function");
  }

  final public boolean _boolean() throws ParseException {
                       Token t;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TRUE:
      t = jj_consume_token(TRUE);
               {if (true) return true;}
      break;
    case FALSE:
      t = jj_consume_token(FALSE);
                {if (true) return false;}
      break;
    default:
      jj_la1[155] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  final public char _char() throws ParseException {
                 Token t;
    t = jj_consume_token(CHARACTER_LITERAL);
       String s = t.image;
       {if (true) return unescapifyChar(s.substring(1, s.length()-1));}
    throw new Error("Missing return statement in function");
  }

  final public byte _byte() throws ParseException {
                 int i;
    i = _int();
             {if (true) return (byte) i;}
    throw new Error("Missing return statement in function");
  }

  final public short _short() throws ParseException {
                   int i;
    i = _int();
             {if (true) return (short) i;}
    throw new Error("Missing return statement in function");
  }

  final public int _int() throws ParseException {
               Number num;
    num = _Number();
                  {if (true) return num.intValue();}
    throw new Error("Missing return statement in function");
  }

  final public long _long() throws ParseException {
                 Number num;
    num = _Number();
                  {if (true) return num.longValue();}
    throw new Error("Missing return statement in function");
  }

  final public float _float() throws ParseException {
                   Number num;
    num = _Number();
                  {if (true) return num.floatValue();}
    throw new Error("Missing return statement in function");
  }

  final public double _double() throws ParseException {
                     Number num;
    num = _Number();
                  {if (true) return num.doubleValue();}
    throw new Error("Missing return statement in function");
  }

  final public Boolean _Boolean() throws ParseException {
                       Token t;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TRUE:
      t = jj_consume_token(TRUE);
               {if (true) return Boolean.TRUE;}
      break;
    case FALSE:
      t = jj_consume_token(FALSE);
                {if (true) return Boolean.FALSE;}
      break;
    default:
      jj_la1[156] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  final public Character _Character() throws ParseException {
                           char c;
    c = _char();
              {if (true) return new Character(c);}
    throw new Error("Missing return statement in function");
  }

  final public Integer _Integer() throws ParseException {
                       int i;
    i = _int();
               {if (true) return new Integer(i);}
    throw new Error("Missing return statement in function");
  }

  final public Long _Long() throws ParseException {
                 long l;
    l = _long();
              {if (true) return new Long(l);}
    throw new Error("Missing return statement in function");
  }

  final public Float _Float() throws ParseException {
                   float f;
    f = _float();
               {if (true) return new Float(f);}
    throw new Error("Missing return statement in function");
  }

  final public Double _Double() throws ParseException {
                     double d;
    d = _double();
                {if (true) return new Double(d);}
    throw new Error("Missing return statement in function");
  }

  final public Number _Number() throws ParseException {
    Token t;
    String s;
    int radix;
    Number num;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DECIMAL_LITERAL:
    case HEX_LITERAL:
    case OCTAL_LITERAL:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DECIMAL_LITERAL:
        t = jj_consume_token(DECIMAL_LITERAL);
       s = t.image;
       radix = 10;
        break;
      case HEX_LITERAL:
        t = jj_consume_token(HEX_LITERAL);
       // Strip off the "0x". 
       s = t.image.substring(2, t.image.length());
       radix = 16;
        break;
      case OCTAL_LITERAL:
        t = jj_consume_token(OCTAL_LITERAL);
       s = t.image;
       radix = 8;
        break;
      default:
        jj_la1[157] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
       switch (s.charAt(s.length()-1)) {
       case 'l': case 'L':
           num = Long.valueOf(s.substring(0, s.length()-1), radix);
           break;
       default:
           num = Integer.valueOf(s, radix);
           break;
       }
      break;
    case FLOATING_POINT_LITERAL:
      t = jj_consume_token(FLOATING_POINT_LITERAL);
       s = t.image;
       switch (s.charAt(s.length()-1)) {
       case 'd': case 'D':
           num = Double.valueOf(s.substring(0, s.length()-1));
           break;
       case 'f': case 'F':
           num = Float.valueOf(s.substring(0, s.length()-1));
           break;
       default:
           num = Float.valueOf(s);
           break;
       }
      break;
    default:
      jj_la1[158] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
      {if (true) return num;}
    throw new Error("Missing return statement in function");
  }

  final public String _String() throws ParseException {
                     Token t;
    t = jj_consume_token(STRING_LITERAL);
       String s = t.image;
       {if (true) return unescapify(s.substring(1, s.length()-1));}
    throw new Error("Missing return statement in function");
  }

  final public StringBuffer _StringBuffer() throws ParseException {
                                 String s;
    s = _String();
                {if (true) return new StringBuffer(s);}
    throw new Error("Missing return statement in function");
  }

  final public Ident _Ident() throws ParseException {
                   Token t;
    t = jj_consume_token(IDENTIFIER);
       {if (true) return new Ident(t.image);}
    throw new Error("Missing return statement in function");
  }

  final public Text _Text() throws ParseException {
                 Token t;
    t = jj_consume_token(TEXT_LITERAL);
       String s = t.image;
       {if (true) return new Text(s.substring(2, s.length()-2));}
    throw new Error("Missing return statement in function");
  }

  final public Line _Line() throws ParseException {
                 Token t;
      token_source.SwitchTo(1);
    t = jj_consume_token(LINE);
       {if (true) return new Line(t.image);}
    throw new Error("Missing return statement in function");
  }

  final public Word _Word() throws ParseException {
                 Token t;
      token_source.SwitchTo(2);
    t = jj_consume_token(WORD);
       {if (true) return new Word(t.image);}
    throw new Error("Missing return statement in function");
  }

  final private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_1();
    jj_save(0, xla);
    return retval;
  }

  final private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_2();
    jj_save(1, xla);
    return retval;
  }

  final private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_3();
    jj_save(2, xla);
    return retval;
  }

  final private boolean jj_3R_15() {
    if (jj_3R_30()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_3() {
    if (jj_scan_token(IDENTIFIER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_10() {
    if (jj_3R_25()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_37() {
    if (jj_3R_42()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_6() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_10()) {
    jj_scanpos = xsp;
    if (jj_3R_11()) {
    jj_scanpos = xsp;
    if (jj_3R_12()) {
    jj_scanpos = xsp;
    if (jj_3R_13()) {
    jj_scanpos = xsp;
    if (jj_3R_14()) {
    jj_scanpos = xsp;
    if (jj_3R_15()) {
    jj_scanpos = xsp;
    if (jj_3R_16()) {
    jj_scanpos = xsp;
    if (jj_3R_17()) {
    jj_scanpos = xsp;
    if (jj_3R_18()) {
    jj_scanpos = xsp;
    if (jj_3R_19()) {
    jj_scanpos = xsp;
    if (jj_3R_20()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_35() {
    if (jj_3R_3()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_23() {
    if (jj_3R_39()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_19() {
    if (jj_3R_34()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_14() {
    if (jj_3R_29()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_34() {
    if (jj_scan_token(101)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_22() {
    if (jj_3R_38()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_42() {
    if (jj_scan_token(123)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_9() {
    if (jj_scan_token(37)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_24()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(38)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_33() {
    if (jj_scan_token(100)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_41() {
    if (jj_scan_token(101)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_5() {
    if (jj_3R_8()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_9()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_18() {
    if (jj_3R_33()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_32() {
    if (jj_scan_token(89)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_36() {
    if (jj_3R_41()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_13() {
    if (jj_3R_28()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_21() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_36()) {
    jj_scanpos = xsp;
    if (jj_3R_37()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_31() {
    if (jj_scan_token(99)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_17() {
    if (jj_3R_32()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_30() {
    if (jj_scan_token(98)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_44() {
    if (jj_scan_token(67)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_29() {
    if (jj_scan_token(97)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_40() {
    if (jj_3R_5()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_44()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_12() {
    if (jj_3R_27()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_7() {
    if (jj_3R_21()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_22()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3_3() {
    if (jj_scan_token(28)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_3()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_28() {
    if (jj_scan_token(96)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3_1() {
    if (jj_3R_1()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_16() {
    if (jj_3R_31()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_4() {
    if (jj_3R_7()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_27() {
    if (jj_scan_token(95)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_1() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_4()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_5()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_43() {
    if (jj_scan_token(28)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_39()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_39() {
    if (jj_3R_3()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_43()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_11() {
    if (jj_3R_26()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_26() {
    if (jj_scan_token(94)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_24() {
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3_2() {
    if (jj_scan_token(28)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_2()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_20() {
    if (jj_3R_35()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_38() {
    if (jj_scan_token(TEXT_LITERAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_25() {
    if (jj_scan_token(93)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_8() {
    if (jj_3R_23()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  final private boolean jj_3R_2() {
    if (jj_3R_6()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  public ParserTokenManager token_source;
  ASCII_UCodeESC_CharStream jj_input_stream;
  public Token token, jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  public boolean lookingAhead = false;
  private boolean jj_semLA;
  private int jj_gen;
  final private int[] jj_la1 = new int[159];
  final private int[] jj_la1_0 = {0x0,0x0,0x0,0x10,0x80000,0x0,0x36400,0x100,0x200,0x80000000,0x2400,0x48000,0xc0,0x30000,0x800,0x1000,0x8000,0x48000,0xf00000,0x80000000,0x20000000,0x700000,0x0,0x800,0x1000,0x7040000,0x7040000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x36400,0x0,0x0,0x8000,0x48000,0xf00000,0x7040000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
  final private int[] jj_la1_1 = {0x10,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x4,0x8,0x10,0x10,0x1,0x0,0x0,0x40000,0x20,0x3800,0x1800,0x3c280,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x3c000,0x3c000,0x80000,0x80000,0xfe000000,0x100000,0x200000,0x400000,0x800000,0x18000000,0x18000000,0x18000000,0x1e000000,0x6000000,0x18000000,0x60000000,0x0,0x1000000,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe000802,0xfe000800,0x800,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c280,0x0,0x3c000,0x6000000,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x10,0x0,0x0,0x3c280,0x0,0x0,0x0,0x0,0x3c000,0x0,0x80000,0x0,0x0,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,};
  final private int[] jj_la1_2 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0011000,0xe0000000,0x0,0x60000000,0x0,0x0,0x0,0x0,0x0,0x1c000,0x0,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x70,0x70,0x70,0x30,0x40,0xe2000040,0x40,0x1ff3f800,0x80,0x100,0x200,0x400,0x1ff3f800,0x0,0x0,0x0,0x3f000,0x40000,0x7,0x7,0x0,0x80000,0x80000,0x700000,0x1800000,0x0,0xe2000000,0x60000000,0x20000000,0x40000000,0x80000000,0x80000000,0x0,0x11000,0x1000,0x10000,0x0,0x0,0x0,0x1c000,0x10000,0x8000,0x0,0x4000,0x0,0x2000000,0x0,0x0,0x0,0x0,0x11000,0x1c000,0x1c000,0x0,0x0,0x3f000,0x0,0x0,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0xe0011000,0x11000,0x8,0x1c000,0x1c000,0x8,0x8,0x0,0x0,0x8,0x40,0x40,0x0,0x0,0x8,0x8,0x8,0x1ff3f800,0x8,0x3f000,0x8,0x0,0x0,0x0,0x0,0x0,};
  final private int[] jj_la1_3 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc7,0x3c1,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x1f0808,0x0,0x200000,0x8000020,0xc00000,0x3000000,0x4000010,0x8000020,0x0,0x8000020,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0xc0,0x40,0x80,0x301,0x100,0x201,0xfc06,0x400,0x800,0x3000,0x4002,0x8004,0x1f0808,0x800,0x10000,0x60000,0x80000,0x100008,0x200000,0xc00000,0x3000000,0x4000010,0x8000020,0xfc06,0x1f0808,0x1f0808,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc7,0xfc06,0x0,0x1f0808,0x1f0808,0x0,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
  final private int[] jj_la1_4 = {0x0,0x0,0x400,0x0,0x0,0x78,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x200,0x0,0x2000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x2000,0x2000,0x0,0x2000,0x2000,0x2000,0x2400,0x0,0x0,0x0,0x0,0x2400,0x2000,0x2000,0x2000,0x0,0x0,0x2400,0x2000,0x0,0x0,0x0,0x0,0x0,0x2000,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2200,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x2200,0x0,0x0,0x0,0x0,0x200,0x0,0x2000,0x2000,0x78,0x0,0x0,0x0,0x0,0x2400,0x0,0x0,0x0,0x0,0x1800,0x1800,0x38,0x78,};
  final private JJParserCalls[] jj_2_rtns = new JJParserCalls[3];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  public Parser(java.io.InputStream stream) {
    jj_input_stream = new ASCII_UCodeESC_CharStream(stream, 1, 1);
    token_source = new ParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 159; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJParserCalls();
  }

  public void ReInit(java.io.InputStream stream) {
    jj_input_stream.ReInit(stream, 1, 1);
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 159; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJParserCalls();
  }

  public Parser(ParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 159; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJParserCalls();
  }

  public void ReInit(ParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 159; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJParserCalls();
  }

  final private Token jj_consume_token(int kind) throws ParseException {
    Token oldToken;
    if ((oldToken = token).next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    if (token.kind == kind) {
      jj_gen++;
      if (++jj_gc > 100) {
        jj_gc = 0;
        for (int i = 0; i < jj_2_rtns.length; i++) {
          JJParserCalls c = jj_2_rtns[i];
          while (c != null) {
            if (c.gen < jj_gen) c.first = null;
            c = c.next;
          }
        }
      }
      return token;
    }
    token = oldToken;
    jj_kind = kind;
    throw generateParseException();
  }

  final private boolean jj_scan_token(int kind) {
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos.next == null) {
        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
      } else {
        jj_lastpos = jj_scanpos = jj_scanpos.next;
      }
    } else {
      jj_scanpos = jj_scanpos.next;
    }
    if (jj_rescan) {
      int i = 0; Token tok = token;
      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
      if (tok != null) jj_add_error_token(kind, i);
    }
    return (jj_scanpos.kind != kind);
  }

  final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

  final public Token getToken(int index) {
    Token t = lookingAhead ? jj_scanpos : token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  final private int jj_ntk() {
    if ((jj_nt=token.next) == null)
      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
    else
      return (jj_ntk = jj_nt.kind);
  }

  private java.util.Vector jj_expentries = new java.util.Vector();
  private int[] jj_expentry;
  private int jj_kind = -1;
  private int[] jj_lasttokens = new int[100];
  private int jj_endpos;

  private void jj_add_error_token(int kind, int pos) {
    if (pos >= 100) return;
    if (pos == jj_endpos + 1) {
      jj_lasttokens[jj_endpos++] = kind;
    } else if (jj_endpos != 0) {
      jj_expentry = new int[jj_endpos];
      for (int i = 0; i < jj_endpos; i++) {
        jj_expentry[i] = jj_lasttokens[i];
      }
      boolean exists = false;
      for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
        int[] oldentry = (int[])(enum.nextElement());
        if (oldentry.length == jj_expentry.length) {
          exists = true;
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              exists = false;
              break;
            }
          }
          if (exists) break;
        }
      }
      if (!exists) jj_expentries.addElement(jj_expentry);
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  final public ParseException generateParseException() {
    jj_expentries.removeAllElements();
    boolean[] la1tokens = new boolean[150];
    for (int i = 0; i < 150; i++) {
      la1tokens[i] = false;
    }
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 159; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1<<j)) != 0) {
            la1tokens[j] = true;
          }
          if ((jj_la1_1[i] & (1<<j)) != 0) {
            la1tokens[32+j] = true;
          }
          if ((jj_la1_2[i] & (1<<j)) != 0) {
            la1tokens[64+j] = true;
          }
          if ((jj_la1_3[i] & (1<<j)) != 0) {
            la1tokens[96+j] = true;
          }
          if ((jj_la1_4[i] & (1<<j)) != 0) {
            la1tokens[128+j] = true;
          }
        }
      }
    }
    for (int i = 0; i < 150; i++) {
      if (la1tokens[i]) {
        jj_expentry = new int[1];
        jj_expentry[0] = i;
        jj_expentries.addElement(jj_expentry);
      }
    }
    jj_endpos = 0;
    jj_rescan_token();
    jj_add_error_token(0, 0);
    int[][] exptokseq = new int[jj_expentries.size()][];
    for (int i = 0; i < jj_expentries.size(); i++) {
      exptokseq[i] = (int[])jj_expentries.elementAt(i);
    }
    return new ParseException(token, exptokseq, tokenImage);
  }

  final public void enable_tracing() {
  }

  final public void disable_tracing() {
  }

  final private void jj_rescan_token() {
    jj_rescan = true;
    for (int i = 0; i < 3; i++) {
      JJParserCalls p = jj_2_rtns[i];
      do {
        if (p.gen > jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
          }
        }
        p = p.next;
      } while (p != null);
    }
    jj_rescan = false;
  }

  final private void jj_save(int index, int xla) {
    JJParserCalls p = jj_2_rtns[index];
    while (p.gen > jj_gen) {
      if (p.next == null) { p = p.next = new JJParserCalls(); break; }
      p = p.next;
    }
    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  }

}

final class JJParserCalls {
  int gen;
  Token first;
  int arg;
  JJParserCalls next;
}

