/* FullGrammar.java */
/* Generated By:JavaCC: Do not edit this line. FullGrammar.java */
package grammars.b;

import grammars.b.visitor.*;
import java.util.ArrayList;
import java.util.List;
import grammars.b.syntaxtree.*;


public class FullGrammar implements FullGrammarConstants {


  /** Return variable for the {@link #jcp_ui$} JavaCodeProduction) */
  int jtbrt_jcp_ui$;

  /** Return variable for the {@link #jcp_s$} JavaCodeProduction) */
  String jtbrt_jcp_s$;

  /** Return variable for the {@link #jcp_ubar$} JavaCodeProduction) */
  boolean[] jtbrt_jcp_ubar$;

  /** Return variable for the {@link #bp_i} BNFProduction) */
  int jtbrt_bp_i;

  /** Return variable for the {@link #bp_ui} BNFProduction) */
  int jtbrt_bp_ui;

  /** Return variable for the {@link #bp_s} BNFProduction) */
  String jtbrt_bp_s;

  /** Return variable for the {@link #bp_tcf_ie_w} BNFProduction) */
  String jtbrt_bp_tcf_ie_w;

  /** Return variable for the {@link #bp_sa} BNFProduction) */
  String[] jtbrt_bp_sa;

  /** Return variable for the {@link #bp_s1} BNFProduction) */
  String jtbrt_bp_s1;

  /** Return variable for the {@link #bp_s2} BNFProduction) */
  String jtbrt_bp_s2;

  /** Return variable for the {@link #bp_s3} BNFProduction) */
  String jtbrt_bp_s3;

  /** Return variable for the {@link #bp_c} BNFProduction) */
  char jtbrt_bp_c;

  /** Return variable for the {@link #bp_ca} BNFProduction) */
  char[] jtbrt_bp_ca;

  /** Return variable for the {@link #bp_h} BNFProduction) */
  short jtbrt_bp_h;

  /** Return variable for the {@link #bp_haa} BNFProduction) */
  short[][] jtbrt_bp_haa;

  /** Return variable for the {@link #bp_l} BNFProduction) */
  long jtbrt_bp_l;

  /** Return variable for the {@link #bp_d} BNFProduction) */
  double jtbrt_bp_d;

  /** Return variable for the {@link #bp_da} BNFProduction) */
  double[] jtbrt_bp_da;

  /** Return variable for the {@link #bp_f} BNFProduction) */
  float jtbrt_bp_f;

  /** Return variable for the {@link #bp_jual} BNFProduction) */
  java.util.ArrayList<Float> jtbrt_bp_jual;

  /** Return variable for the {@link #bp_hm} BNFProduction) */
  java.util.HashMap<String, Float> jtbrt_bp_hm;

  /** Return variable for the {@link #bp_tu_a} BNFProduction) */
  Tuple<? extends java.lang.CharSequence, ? super CharSequence, ?> jtbrt_bp_tu_a;

  /** Return variable for the {@link #bp_class1} BNFProduction) */
  FGclass1 jtbrt_bp_class1;

  /** Return variable for the {@link #check_proper_formatting} BNFProduction) */
  int jtbrt_check_proper_formatting;

  /** Return variable for the {@link #f0_eu1_b2} BNFProduction) */
  String jtbrt_f0_eu1_b2;

  /** Return variable for the {@link #f0_eu1_peias2} BNFProduction) */
  String jtbrt_f0_eu1_peias2;

  /** Return variable for the {@link #f0_eu1_pejc2} BNFProduction) */
  String jtbrt_f0_eu1_pejc2;

  public static void main(String args[]) {
    System.err.println("FullGrammar Reading...");
    FullGrammar fg = new FullGrammar(System.in);
    try {
      System.err.println("... Parsing...");
      Start st = fg.Start();
      DepthFirstVoidVisitor v = new DepthFirstVoidVisitor();
      System.err.println("... Visiting...");
      st.accept(v);
      System.err.println("... FullGrammar ended.");
      System.exit(0);
    }
    catch (final Exception e) {
      System.err.println("Oops!");
      System.err.println(e.getMessage());
      e.printStackTrace();
      System.exit(-1);
    }
  }

  private void info(final String aMsg) {
    String tk0 = getToken(0).toString();
    String tk1 = getToken(1).toString();
    String ct0 = tk0 == null ? "!null!" : tk0.length() == 0 ? "!empty!" : tk0;
    String ct1 = tk1 == null ? "!null!" : tk1.length() == 0 ? "!empty!" : tk1;
    System.err.println(aMsg + ", current token = " + ct0 + ", next token = " + ct1);
  }

  int global_i, global_j;

  boolean some_lookahead() {
    return true;
  }

  void some_lexical_action() {
    return;
  }

  void jcp_v() throws ParseException {
  }

  jcp_v$ jcp_v$() throws ParseException {/* return; statement commented out by JTB */
  return new jcp_v$();
  }

  private void jcp_iv(int[] i) throws ParseException, IllegalStateException {throw new IllegalStateException("dummy ise");
  }

  private jcp_iv$ jcp_iv$(final int i) throws ParseException, IllegalStateException {if (i == 0) {
    throw new IllegalStateException("dummy ise");
  }
  return new jcp_iv$();
  }

  public int jcp_ui(final int i, boolean b) throws ParseException, IllegalStateException, NullPointerException {if (i == 0) {
    if (b)
      throw new IllegalStateException((String)null);
    else
      throw new NullPointerException();
  }
  return i - 1;
  }

  public jcp_ui$ jcp_ui$(final int i, boolean b) throws ParseException, IllegalStateException, NullPointerException {if (i == 0) {
    if (b)
      throw new IllegalStateException("with parameter");
    else
      throw new NullPointerException();
  }jtbrt_jcp_ui$ = i;
  return new jcp_ui$();
  }

  protected String jcp_s(String s) throws ParseException {return s;
  }

  protected String[] jcp_sa(String[] sa) throws ParseException {return sa;
  }

  protected jcp_s$ jcp_s$(String s) throws ParseException {jtbrt_jcp_s$ = s + "added for expression";
  return new jcp_s$();
  }

  public boolean[] jcp_ubar() throws ParseException {return new boolean[1];
  }

  public jcp_ubar$ jcp_ubar$() throws ParseException {jtbrt_jcp_ubar$ = new boolean[1];
  return new jcp_ubar$();
  }

  void jcp_sts() throws ParseException, Exception {int k = 0;
  try {
    if (k == 1)
      throw new Exception();
  }
  catch (Exception ex) {
    k = 1;
  }
  try {
    if (k != 1)
      throw new Exception();
  }
  finally {
    k = 2;
  }
  try {
    k = 3;
    if (k == 0)
      return;
  }
  catch (Exception ex) {
    k = 4;
  }
  finally {
    k = 5;
  }
  return;
  }

  final public Start Start() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  NodeSequence n2 = null;
  bp_v n3 = null;
  bp_v_ n4 = null;
  bp_w n5 = null;
  bp_w_ n6 = null;
  bp_x n7 = null;
  bp_x_ n8 = null;
  bp_x__ n9 = null;
  bp_y n10 = null;
  bp_y_ n11 = null;
  bp_z_ n12 = null;
  bp_z__ n13 = null;
  bp_v_o n14 = null;
  bp_v_o n15 = null;
  bp_ui n16 = null;
  bp_s n17 = null;
  bp_sa n18 = null;
  bp_v1 n19 = null;
  bp_v2 n20 = null;
  bp_v3 n21 = null;
  bp_s1 n22 = null;
  bp_s2 n23 = null;
  bp_s3 n24 = null;
  bp_c n25 = null;
  bp_ca n26 = null;
  bp_h n27 = null;
  bp_haa n28 = null;
  bp_l n29 = null;
  bp_d n30 = null;
  bp_da n31 = null;
  bp_f n32 = null;
  bp_jual n33 = null;
  bp_hm n34 = null;
  Token n35 = null;
  NodeSequence n36 = null;
  Token n37 = null;
  bp_tu_a n38 = null;
  bp_acc n39 = null;
  bp_DoubleThrows n40 = null;
  bp_DoubleThrows n41 = null;
  jcp_DoubleThrows n42 = null;
  jcp_DoubleThrows n43 = null;
  skipButBuild n44 = null;
  Token n45 = null;
  NodeSequence n46 = null;
  Token n47 = null;
  expch_a n48 = null;
  expch_b n49 = null;
  expch_c n50 = null;
  expch_c n51 = null;
  expch_c n52 = null;
  expch_c n53 = null;
  expch_c n54 = null;
  expch_c n55 = null;
  NodeSequence n56 = null;
  Token n57 = null;
  expch_em_lxac n58 = null;
  expch_em_lxac n59 = null;
  expch_em_lxac n60 = null;
  expch_em_lxac n61 = null;
  expch_wnsn n62 = null;
  expch_wnsn n63 = null;
  expch_2ch n64 = null;
  Start jtbNode = null;
  java.util.ArrayList<Float> jual = new java.util.ArrayList<Float>();
  for (int i = 0; i < 10; i++)
    jual.add(Float.valueOf(i));
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{
info("before 1st choice");
      n1 = jj_consume_token(0);
n1.beginColumn++;
n1.endColumn++;
n0 = new NodeChoice(n1, 0, 5);
info("after 1st EOF");
      break;
      }
    case ID:{
info("before 2nd choice");
n2 = new NodeSequence(33);
      n3 = bp_v();
n2.addNode(n3);
info("passed bp_v()");
      bp_v$();
info("passed bp_v$()");
      n4 = bp_v_();
n2.addNode(n4);
info("passed bp_v_()");
      n5 = bp_w();
n2.addNode(n5);
info("passed bp_w()");
      n6 = bp_w_();
n2.addNode(n6);
info("passed bp_w_()");
      n7 = bp_x();
n2.addNode(n7);
info("passed bp_x()");
      n8 = bp_x_();
n2.addNode(n8);
info("passed bp_x_()");
      n9 = bp_x__();
n2.addNode(n9);
info("passed bp_x__()");
      n10 = bp_y();
n2.addNode(n10);
info("passed bp_y()");
      n11 = bp_y_();
n2.addNode(n11);
info("passed bp_y_()");
      n12 = bp_z_();
n2.addNode(n12);
info("passed bp_z_()");
      n13 = bp_z__();
n2.addNode(n13);
info("passed bp_z__()");
      n14 = bp_v_o();
n2.addNode(n14);
info("passed bp_v_o() 1");
      n15 = bp_v_o();
n2.addNode(n15);
info("passed bp_v_o() 2");
      n16 = bp_ui(21, true);
n2.addNode(n16);
info("bp_ui(21, true)");
      bp_ui$(22, false);
info("passed bp_ui$(22, false)");
      n17 = bp_s();
n2.addNode(n17);
info("passed bp_s()");
      bp_s$();
info("passed bp_s$()");
      n18 = bp_sa();
n2.addNode(n18);
info("passed bp_s()");
      n19 = bp_v1();
n2.addNode(n19);
info("passed bp_v1()");
      n20 = bp_v2();
n2.addNode(n20);
info("passed bp_v2()");
      n21 = bp_v3();
n2.addNode(n21);
info("passed bp_v3()");
      n22 = bp_s1();
n2.addNode(n22);
info("passed bp_s1()");
      n23 = bp_s2();
n2.addNode(n23);
info("passed bp_s2()");
      n24 = bp_s3();
n2.addNode(n24);
info("passed bp_s3()");
      n25 = bp_c();
n2.addNode(n25);
info("passed bp_c()");
      n26 = bp_ca();
n2.addNode(n26);
info("passed bp_ca()");
      n27 = bp_h();
n2.addNode(n27);
info("passed bp_h()");
      n28 = bp_haa();
n2.addNode(n28);
info("passed bp_haa()");
      n29 = bp_l();
n2.addNode(n29);
info("passed bp_l()");
      bp_laa$();
info("passed bp_laa$()");
      n30 = bp_d();
n2.addNode(n30);
info("passed bp_d()");
      n31 = bp_da();
n2.addNode(n31);
info("passed bp_da()");
      n32 = bp_f();
n2.addNode(n32);
info("passed bp_s()");
      bp_fa$();
info("passed bp_fa$()");
      bp_al$();
info("passed bp_al$()");
      n33 = bp_jual();
n2.addNode(n33);
info("passed bp_jual()");
      n34 = bp_hm(jual);
n2.addNode(n34);
info("passed bp_hm(jual)");
      n35 = jj_consume_token(0);
n35.beginColumn++;
n35.endColumn++;
n2.addNode(n35);
n0 = new NodeChoice(n2, 1, 5);
info("after 2nd EOF");
      break;
      }
    case 19:{
info("before 3rd choice");
n36 = new NodeSequence(9);
      n37 = jj_consume_token(19);
n36.addNode(n37);
info("passed ;");
      n38 = bp_tu_a();
n36.addNode(n38);
info("passed bp_tu_a()");
      n39 = bp_acc();
n36.addNode(n39);
info("passed bp_acc()");
      n40 = bp_DoubleThrows(1);
n36.addNode(n40);
info("passed bp_DoubleThrows(1)");
      try {
        n41 = bp_DoubleThrows(0);
info("passed bp_DoubleThrows(0)");
      } catch (IllegalStateException ise) {
{
        info("caught IDE in bp_DoubleThrows(0)");
      }
      }
n36.addNode(n41);
      n42 = jcp_DoubleThrows(1);
n36.addNode(n42);
info("passed jcp_DoubleThrows(1)");
      try {
        n43 = jcp_DoubleThrows(0);
info("passed jcp_DoubleThrows(0)");
      } catch (IllegalStateException ise) {
{
        info("caught IDE in jcp_DoubleThrows(0)");
      }
      }
n36.addNode(n43);
      n44 = skipButBuild();
n36.addNode(n44);
info("passed skipButBuild()");
      eatNextToken();
info("passed eatNextToken()");
      n45 = jj_consume_token(0);
n45.beginColumn++;
n45.endColumn++;
n36.addNode(n45);
n0 = new NodeChoice(n36, 2, 5);
info("after 3rd EOF");
      break;
      }
    case 20:{
info("before 4th choice");
n46 = new NodeSequence(9);
      n47 = jj_consume_token(20);
n46.addNode(n47);
info("passed ,");
      n48 = expch_a();
n46.addNode(n48);
info("passed expch_a()");
      n49 = expch_b();
n46.addNode(n49);
info("passed expch_b()");
      n50 = expch_c(-1, 9);
n46.addNode(n50);
info("passed expch_c(-1, 9)");
      n51 = expch_c(0, 9);
n46.addNode(n51);
info("passed expch_c(0, 9)");
      n52 = expch_c(1, 8);
n46.addNode(n52);
info("passed expch_c(1, 8)");
      n53 = expch_c(1, 2);
n46.addNode(n53);
info("passed expch_c(1, 2)");
      n54 = expch_c(1, 3);
n46.addNode(n54);
info("passed expch_c(1, 3)");
      n55 = expch_c(-2, 9);
n46.addNode(n55);
info("passed expch_c(-2, 9)");
n0 = new NodeChoice(n46, 3, 5);
info("after 4th choice");
      break;
      }
    case 21:{
info("before 5th choice");
n56 = new NodeSequence(8);
      n57 = jj_consume_token(21);
n56.addNode(n57);
info("passed .");
      n58 = expch_em_lxac();
n56.addNode(n58);
info("passed expch_em_lxac(1)");
      n59 = expch_em_lxac();
n56.addNode(n59);
info("passed expch_em_lxac(2)");
      n60 = expch_em_lxac();
n56.addNode(n60);
info("passed expch_em_lxac(3)");
      n61 = expch_em_lxac();
n56.addNode(n61);
info("passed expch_em_lxac(4)");
      expch_wosn_a();
info("passed expch_wosn_a(1)");
      expch_wosn_a();
info("passed expch_wosn_a(2)");
      expch_wosn_b();
info("passed expch_wosn_b(1)");
      expch_wosn_b();
info("passed expch_wosn_b(2)");
      n62 = expch_wnsn();
n56.addNode(n62);
info("passed expch_wnsn(1)");
      n63 = expch_wnsn();
n56.addNode(n63);
info("passed expch_wnsn(2)");
      n64 = expch_2ch();
n56.addNode(n64);
info("passed expch_2ch()");
n0 = new NodeChoice(n56, 4, 5);
info("after 5th choice");
      break;
      }
    default:
      jj_la1[0] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
jtbNode = new Start(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_v bp_v() throws ParseException {Token n0 = null;
  bp_v jtbNode = null;
    n0 = jj_consume_token(ID);
jtbNode = new bp_v(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public void bp_v$() throws ParseException {
    jj_consume_token(ID);
}

  final public bp_v_ bp_v_() throws ParseException {bp_v_ jtbNode = null;
    jj_consume_token(ID);
jtbNode = new bp_v_();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_w bp_w() throws ParseException {bp_w jtbNode = null;
    jj_consume_token(NUM_2$);
jtbNode = new bp_w();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_w_ bp_w_() throws ParseException {bp_w_ jtbNode = null;
    jj_consume_token(NUM_2$);
jtbNode = new bp_w_();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_x bp_x() throws ParseException {bp_v n0 = null;
  bp_x jtbNode = null;
    n0 = bp_v();
jtbNode = new bp_x(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_x_ bp_x_() throws ParseException {bp_x_ jtbNode = null;
    bp_v();
jtbNode = new bp_x_();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_x__ bp_x__() throws ParseException {bp_x__ jtbNode = null;
    bp_v$();
    bp_v$();
    bp_v$();
jtbNode = new bp_x__();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_y bp_y() throws ParseException {Token n0 = null;
  Token n1 = null;
  bp_y jtbNode = null;
    n0 = jj_consume_token(Y);
    n1 = jj_consume_token(23);
jtbNode = new bp_y(n0, n1);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_y_ bp_y_() throws ParseException {Token n0 = null;
  bp_y_ jtbNode = null;
    n0 = jj_consume_token(24);
    jj_consume_token(25);
jtbNode = new bp_y_(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_z_ bp_z_() throws ParseException {bp_z_ jtbNode = null;
    bp_y();
jtbNode = new bp_z_();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_z__ bp_z__() throws ParseException {bp_y_ n0 = null;
  bp_z__ jtbNode = null;
    n0 = bp_y_();
jtbNode = new bp_z__(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_v_o bp_v_o() throws ParseException {NodeChoice n0 = null;
  NodeSequence n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Token n4 = null;
  Token n5 = null;
  NodeSequence n6 = null;
  Token n7 = null;
  Token n8 = null;
  NodeChoice n9 = null;
  NodeSequence n10 = null;
  NodeChoice n11 = null;
  Token n12 = null;
  Token n13 = null;
  Token n14 = null;
  NodeSequence n15 = null;
  Token n16 = null;
  Token n17 = null;
  bp_v_o jtbNode = null;
    if (jj_2_1(2)) {
n1 = new NodeSequence(3);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 26:{
        n3 = jj_consume_token(26);
n2 = new NodeChoice(n3, 0, 2);
        break;
        }
      default:
        jj_la1[1] = jj_gen;

n2 = new NodeChoice(null, 1, 2);
      }
n1.addNode(n2);
      n4 = jj_consume_token(27);
n1.addNode(n4);
      n5 = jj_consume_token(ID);
n1.addNode(n5);
info("- A1");
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 27:{
n6 = new NodeSequence(2);
        n7 = jj_consume_token(27);
n6.addNode(n7);
        n8 = jj_consume_token(27);
n6.addNode(n8);
info("- A2");
n0 = new NodeChoice(n6, 1, 2);
        break;
        }
      default:
        jj_la1[2] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    if (jj_2_2(2)) {
n10 = new NodeSequence(3);

n11 = new NodeChoice(null, 0, 2);
n10.addNode(n11);
      n13 = jj_consume_token(27);
n10.addNode(n13);
      n14 = jj_consume_token(ID);
n10.addNode(n14);
info("- B1");
n9 = new NodeChoice(n10, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 27:{
n15 = new NodeSequence(2);
        n16 = jj_consume_token(27);
n15.addNode(n16);
        n17 = jj_consume_token(27);
n15.addNode(n17);
info("- B2");
n9 = new NodeChoice(n15, 1, 2);
        break;
        }
      default:
        jj_la1[3] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
info("- C");
jtbNode = new bp_v_o(n0, n9);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_i bp_i() throws ParseException {Token n0 = null;
  bp_i jtbNode = null;
  Token tk = null;
    n0 = jj_consume_token(ID);
tk = n0;
jtbrt_bp_i = tk.image.length();
jtbNode = new bp_i(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_i2 bp_i2() throws ParseException {bp_i n0 = null;
  bp_i2 jtbNode = null;
  int i = 0;
int oldJtbrt_bp_i_1 = jtbrt_bp_i;
    n0 = bp_i();
i = jtbrt_bp_i;
jtbrt_bp_i = oldJtbrt_bp_i_1;
jtbNode = new bp_i2(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_ui bp_ui(final int i, boolean b) throws ParseException, IllegalStateException, NullPointerException {Token n0 = null;
  bp_ui jtbNode = null;
  int j;
    n0 = jj_consume_token(ID);
j = n0.kind;
if (i == 0) {
      if (b)
        {if (true) throw new IllegalStateException("with parameter");}
      else
        {if (true) throw new NullPointerException();}
    }
    jtbrt_bp_ui = i;
jtbNode = new bp_ui(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public int bp_ui$(final int i, boolean b) throws ParseException, IllegalStateException, NullPointerException {
    jj_consume_token(ID);
if (i == 0) {
      if (b)
        {if (true) throw new IllegalStateException((String)null);}
      else
        {if (true) throw new NullPointerException();}
    }
    {if ("" != null) return i - 1;}
    throw new Error("Missing return statement in function");
}

  final protected bp_s bp_s() throws ParseException {Token n0 = null;
  bp_s jtbNode = null;
  Token tk;
    n0 = jj_consume_token(ID);
tk = n0;
jtbNode = new bp_s(n0);
jtbrt_bp_s = tk.image;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final protected bp_tcf_ie_w bp_tcf_ie_w() throws ParseException {Token n0 = null;
  bp_tcf_ie_w jtbNode = null;
  Token tk;
    n0 = jj_consume_token(ID);
tk = n0;
jtbNode = new bp_tcf_ie_w(n0);
int k = 0;
    try {
      if (k == 1)
        {if (true) throw new Exception();}
      if (k == 1) {
        {if (true) throw new Exception();}
      }
      while (k > 9) {
        k--;
      }
    }
    catch (Exception ex) {
      k = 1;
    }
    try {
      if (k != 1)
        k = 1;
    }
    finally {
      k = 2;
    }
    try {
      k = 3;
      if (k == 0)
        jtbrt_bp_tcf_ie_w = tk.image;
      else
        if (k == 1) {
          jtbrt_bp_tcf_ie_w = tk.image;
        } else {
          jtbrt_bp_tcf_ie_w = null;
        }
    }
    catch (Exception ex) {
      k = 4;
    }
    finally {
      k = 5;
    }
    jtbrt_bp_tcf_ie_w = tk.image;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final protected java.lang.String bp_s$() throws ParseException {Token tk;
    tk = jj_consume_token(ID);
{if ("" != null) return tk.image;}
    throw new Error("Missing return statement in function");
}

  final protected bp_sa bp_sa() throws ParseException {Token n0 = null;
  bp_sa jtbNode = null;
  Token tk;
    n0 = jj_consume_token(ID);
tk = n0;
jtbNode = new bp_sa(n0);
jtbrt_bp_sa = new String[]{ tk.image,null };
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_v1 bp_v1() throws ParseException {bp_v n0 = null;
  bp_v1 jtbNode = null;
  Token t = null;
    n0 = bp_v();

jtbNode = new bp_v1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_v2 bp_v2() throws ParseException {bp_v2 jtbNode = null;
  Token t = null;
    bp_v$();

jtbNode = new bp_v2();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_v3 bp_v3() throws ParseException {bp_v n0 = null;
  bp_v3 jtbNode = null;
  Token t1 = null, t2 = null;
    n0 = bp_v();
    bp_v$();

jtbNode = new bp_v3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_s1 bp_s1() throws ParseException {bp_s n0 = null;
  bp_s1 jtbNode = null;
  String s = null;
String oldJtbrt_bp_s_1 = jtbrt_bp_s;
    n0 = bp_s();
s = jtbrt_bp_s;
jtbrt_bp_s = oldJtbrt_bp_s_1;
jtbNode = new bp_s1(n0);
jtbrt_bp_s1 = s;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_s2 bp_s2() throws ParseException {bp_s2 jtbNode = null;
  java.lang.String s = null;
    s = bp_s$();
jtbNode = new bp_s2();
jtbrt_bp_s2 = s;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_s3 bp_s3() throws ParseException {bp_s n0 = null;
  bp_s3 jtbNode = null;
  String s1 = null, s2 = null;
String oldJtbrt_bp_s_1 = jtbrt_bp_s;
    n0 = bp_s();
s1 = jtbrt_bp_s;
jtbrt_bp_s = oldJtbrt_bp_s_1;
    s2 = bp_s$();
jtbNode = new bp_s3(n0);
jtbrt_bp_s3 = s1 + s2;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_c bp_c() throws ParseException {bp_c jtbNode = null;
    jj_consume_token(cdID$);
jtbrt_bp_c = '0';
jtbNode = new bp_c();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_ca bp_ca() throws ParseException {bp_ca jtbNode = null;
    jj_consume_token(cdID$);
jtbNode = new bp_ca();
jtbrt_bp_ca = new char[]{ '0','1' };
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_h bp_h() throws ParseException {NodeSequence n0 = null;
  Token n1 = null;
  bp_h jtbNode = null;
n0 = new NodeSequence(1);
    n1 = jj_consume_token(ID);
n0.addNode(n1);
jtbrt_bp_h = 0;
jtbNode = new bp_h(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_haa bp_haa() throws ParseException {Token n0 = null;
  bp_haa jtbNode = null;
    n0 = jj_consume_token(ID);
jtbNode = new bp_haa(n0);
jtbrt_bp_haa = new short[][]{ { 0,1 },{ -2,+3 } };
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_l bp_l() throws ParseException {Token n0 = null;
  bp_l jtbNode = null;
    n0 = jj_consume_token(ID);
jtbrt_bp_l = 0L;
jtbNode = new bp_l(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public long[][] bp_laa$() throws ParseException {
    jj_consume_token(ID);
{if ("" != null) return new long[2][];}
    throw new Error("Missing return statement in function");
}

  final public bp_d bp_d() throws ParseException {bp_d jtbNode = null;
    jj_consume_token(cdID$);
jtbrt_bp_d = 0.0;
jtbNode = new bp_d();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_da bp_da() throws ParseException {bp_da jtbNode = null;
    jj_consume_token(cdID$);
jtbNode = new bp_da();
jtbrt_bp_da = new double[]{ 0.1e-234,-2.E+303,Double.NaN,Double.NEGATIVE_INFINITY,Double.MIN_NORMAL };
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_f bp_f() throws ParseException {Token n0 = null;
  bp_f jtbNode = null;
    n0 = jj_consume_token(efID);
jtbrt_bp_f = -123465789.98764321F;
jtbNode = new bp_f(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public float[] bp_fa$() throws ParseException {
    jj_consume_token(efID);
{if ("" != null) return new float[]{ -23.E-40F,.12e+30F,Float.MAX_VALUE,Float.POSITIVE_INFINITY };}
    throw new Error("Missing return statement in function");
}

  final public ArrayList<Float> bp_al$() throws ParseException {ArrayList<Float> al = new ArrayList<>();
  java.util.ArrayList<Float> jual;
    jj_consume_token(abID);
al.add(-23.E-40F);
    jual = new java.util.ArrayList<>(al);
    jual.add(.12e+30F);
    {if ("" != null) return jual;}
    throw new Error("Missing return statement in function");
}

  final public bp_jual bp_jual() throws ParseException {Token n0 = null;
  bp_jual jtbNode = null;
  ArrayList<Float> al = new ArrayList<>();
  java.util.ArrayList<Float> jual;
    n0 = jj_consume_token(ID);
jtbNode = new bp_jual(n0);
al.add(-23.E-40F);
    jual = new java.util.ArrayList<>(al);
    jual.add(.12e+30F);
    jtbrt_bp_jual = jual;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_hm bp_hm(final java.util.ArrayList<Float> jual) throws ParseException {Token n0 = null;
  bp_hm jtbNode = null;
  java.util.HashMap<String , Float> hm = new java.util.HashMap<>();
    n0 = jj_consume_token(ID);
jtbNode = new bp_hm(n0);
hm.put("nine", jual == null ? 9.9F : jual.get(9));
    jtbrt_bp_hm = hm;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_tu_a bp_tu_a() throws ParseException {Token n0 = null;
  NodeSequence n1 = null;
  skipButBuild n2 = null;
  jcp_ubar$ n3 = null;
  bp_v n4 = null;
  bp_tu_a jtbNode = null;
  Tuple tu;
    n0 = jj_consume_token(ID);
n1 = new NodeSequence(2);
    n2 = skipButBuild();
n1.addNode(n2);
    skipButBuild();
    eatNextToken();
    eatNextToken();
    jcp_ubar();
    jcp_ubar();
    n3 = jcp_ubar$();
n1.addNode(n3);
    jcp_ubar$();
    n4 = bp_v();
    bp_v();
    bp_v$();
    bp_v$();
final Tuple<? super java.lang.CharSequence , ?, Object[]> tv = new Tuple('c', 1, new Object[1]);
    tu = new Tuple("a", 'c', true);
    jtbrt_bp_tu_a = tu;
jtbNode = new bp_tu_a(n0, n1, n4);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_acc bp_acc() throws ParseException {Token n0 = null;
  NodeOptional n1 = new NodeOptional();
  Token n2 = null;
  NodeListOptional n3 = new NodeListOptional();
  bp_i n4 = null;
  NodeChoice n5 = null;
  bp_v n6 = null;
  NodeSequence n7 = null;
  bp_w n8 = null;
  bp_x n9 = null;
  bp_acc jtbNode = null;
    n0 = jj_consume_token(ID);
info("- bp_acc after ID");
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 28:{
      n2 = jj_consume_token(28);
info("- bp_acc after xyz");
n1.addNode(n2);
      break;
      }
    default:
      jj_la1[4] = jj_gen;
      ;
    }
    label_1:
    while (true) {
      if (jj_2_3(2)) {
        ;
      } else {
        break label_1;
      }
      n4 = bp_i();
info("- bp_acc after bp_i");
n3.addNode(n4);
    }
n3.nodes.trimToSize();
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case ID:{
      n6 = bp_v();
info("- bp_acc after bp_v");
n5 = new NodeChoice(n6, 0, 2);
      break;
      }
    case NUM_2$:{
n7 = new NodeSequence(2);
      n8 = bp_w();
n7.addNode(n8);
info("- bp_acc after bp_w");
      n9 = bp_x();
n7.addNode(n9);
info("- bp_acc after bp_x");
n5 = new NodeChoice(n7, 1, 2);
      break;
      }
    default:
      jj_la1[5] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
jtbNode = new bp_acc(n0, n1, n3, n5);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_DoubleThrows bp_DoubleThrows(final int i) throws ParseException, IllegalStateException, NullPointerException {bp_DoubleThrows jtbNode = null;
  Token tk = null;
    jj_consume_token(cdID$);
if (tk != null)
        {if (true) throw new NullPointerException();}
      else
        if (i == 0)
          {if (true) throw new IllegalStateException();}
jtbNode = new bp_DoubleThrows();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public bp_class1 bp_class1() throws ParseException {Token n0 = null;
  bp_class1 jtbNode = null;
    n0 = jj_consume_token(ID);
jtbNode = new bp_class1(n0);
jtbrt_bp_class1 = new FGclass1();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public FGclass2 bp_class2$() throws ParseException {
    jj_consume_token(ID);
{if ("" != null) return new FGclass2();}
    throw new Error("Missing return statement in function");
}

  jcp_DoubleThrows jcp_DoubleThrows(final int i) throws ParseException, IllegalStateException, NullPointerException {Token tk = getNextToken();{
    if (tk == null)
      throw new NullPointerException();
    else
      if (i == 0)
        throw new IllegalStateException();
  }
  return new jcp_DoubleThrows();
  }

  skipButBuild skipButBuild() throws ParseException, ParseException {Token tk = getNextToken();{
    int[] ai = { 0,0 };
    for (final int i : ai) {
      switch (i) {
      }
      switch (i) {
        default : break;
      }
      switch (i) {
        case 0 :
          {}
          {
            break;
          }
        case 1 :
      }
    }
    label:
    {
      for (; ; )
        break label;

    }
    /* return; statement commented out by JTB */
    class dummyClass {

      int dummyMethod() throws ParseException{
        throw new ParseException();
      }
    }

    try {
      new dummyClass().dummyMethod();
    }
    catch (Exception e) {
      synchronized ("x")
        {
          int j = 0;
        }
    }
    finally {
      label:
      do {
        char c = 'c';
      } while (false);
    }
  }
  return new skipButBuild();
  }

  void eatNextToken() throws ParseException {Token tk = getNextToken();
  }

  Token eatAndReturnNextToken() throws ParseException {return getNextToken();
  }

  final public expch_a expch_a() throws ParseException {NodeChoice n0 = null;
  NodeSequence n1 = null;
  Token n2 = null;
  Token n3 = null;
  Token n4 = null;
  expch_a jtbNode = null;
    if (jj_2_4(2)) {
n1 = new NodeSequence(2);
      n2 = jj_consume_token(24);
n1.addNode(n2);
      n3 = jj_consume_token(ID);
n1.addNode(n3);
n0 = new NodeChoice(n1, 0, 2);
info("- passed ! ID");
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 29:{
        n4 = jj_consume_token(29);
n0 = new NodeChoice(n4, 1, 2);
info("- passed ! abc");
        break;
        }
      default:
        jj_la1[6] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expch_a(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_b expch_b() throws ParseException {NodeChoice n0 = null;
  NodeSequence n1 = null;
  Token n2 = null;
  Token n3 = null;
  Token n4 = null;
  expch_b jtbNode = null;
    if (jj_2_5(2)) {
n1 = new NodeSequence(2);
      n2 = jj_consume_token(30);
n1.addNode(n2);
      n3 = jj_consume_token(abID);
n1.addNode(n3);
info("- passed ? abID");
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 31:{
        n4 = jj_consume_token(31);
info("- passed ? abc");
n0 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[7] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expch_b(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_c expch_c(final int i, final int j) throws ParseException {NodeChoice n0 = null;
  NodeChoice n1 = null;
  NodeSequence n2 = null;
  Token n3 = null;
  Token n4 = null;
  NodeSequence n5 = null;
  Token n6 = null;
  Token n7 = null;
  NodeSequence n8 = null;
  Token n9 = null;
  Token n10 = null;
  NodeSequence n11 = null;
  NodeOptional n12 = new NodeOptional();
  NodeSequence n13 = null;
  Token n14 = null;
  Token n15 = null;
  NodeListOptional n16 = new NodeListOptional();
  NodeSequence n17 = null;
  Token n18 = null;
  Token n19 = null;
  NodeList n20 = new NodeList();
  NodeSequence n21 = null;
  Token n22 = null;
  Token n23 = null;
  Token n24 = null;
  NodeSequence n25 = null;
  Token n26 = null;
  Token n27 = null;
  expch_c jtbNode = null;
  global_i = i;
  global_j = j;
    if (jj_2_11(2)) {
      if (jj_2_9(2147483647)) {
n2 = new NodeSequence(2);
        n3 = jj_consume_token(NUM_3_9);
n2.addNode(n3);
        n4 = jj_consume_token(32);
n2.addNode(n4);
info("- passed expch_c NUM_3_9 !NUM_3_9!");
n1 = new NodeChoice(n2, 0, 4);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case NUM_3_9:{
n5 = new NodeSequence(2);
          n6 = jj_consume_token(NUM_3_9);
n5.addNode(n6);
          n7 = jj_consume_token(ID);
n5.addNode(n7);
info("- passed expch_c NUM_3_9 ID");
n1 = new NodeChoice(n5, 1, 4);
          break;
          }
        default:
          jj_la1[8] = jj_gen;
          if (global_i == 0) {
n8 = new NodeSequence(2);
            n9 = jj_consume_token(ID);
n8.addNode(n9);
            n10 = jj_consume_token(33);
n8.addNode(n10);
info("- passed expch_c ID 0");
n1 = new NodeChoice(n8, 2, 4);
          } else if (jj_2_10(2147483647) && (global_i == 1)) {
n11 = new NodeSequence(3);
            if (jj_2_6(2)) {
n13 = new NodeSequence(2);
              n14 = jj_consume_token(ID);
n13.addNode(n14);
              n15 = jj_consume_token(34);
n13.addNode(n15);
info("- passed expch_c ID 1");
n12.addNode(n13);
            } else {
              ;
            }
n11.addNode(n12);
            label_2:
            while (true) {
              if (jj_2_7(2) && (global_j == 2)) {
                ;
              } else {
                break label_2;
              }
n17 = new NodeSequence(2);
              n18 = jj_consume_token(ID);
n17.addNode(n18);
              n19 = jj_consume_token(35);
n17.addNode(n19);
info("- passed expch_c ID 2");
n16.addNode(n17);
            }
n16.nodes.trimToSize();
n11.addNode(n16);
            label_3:
            while (true) {
n21 = new NodeSequence(2);
              n22 = jj_consume_token(ID);
n21.addNode(n22);
              n23 = jj_consume_token(36);
n21.addNode(n23);
info("- passed expch_c ID 3");
n20.addNode(n21);
              if (jj_2_8(2) && (global_j == 3)) {
                ;
              } else {
                break label_3;
              }
            }
n20.nodes.trimToSize();
n11.addNode(n20);
n1 = new NodeChoice(n11, 3, 4);
          } else {
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
n0 = new NodeChoice(n1, 0, 3);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ES:{
        n24 = jj_consume_token(ES);
info("- passed expch_c ES");
n0 = new NodeChoice(n24, 1, 3);
        break;
        }
      case NUM_3_9:{
n25 = new NodeSequence(2);
        n26 = jj_consume_token(NUM_3_9);
n25.addNode(n26);
        n27 = jj_consume_token(37);
n25.addNode(n27);
info("- passed expch_c NUM_3_9 *39*");
n0 = new NodeChoice(n25, 2, 3);
        break;
        }
      default:
        jj_la1[9] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expch_c(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_em_lxac expch_em_lxac() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Token n2 = null;
  Token n3 = null;
  Token n4 = null;
  expch_em_lxac jtbNode = null;
    if (jj_2_12(2147483647)) {
      n1 = jj_consume_token(38);
n0 = new NodeChoice(n1, 0, 4);
    } else if (jj_2_13(2147483647)) {

      n2 = jj_consume_token(39);
n0 = new NodeChoice(n2, 1, 4);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 40:{
        n3 = jj_consume_token(40);

n0 = new NodeChoice(n3, 2, 4);
        break;
        }
      default:
        jj_la1[10] = jj_gen;

n0 = new NodeChoice(null, 3, 4);
      }
    }
    n4 = jj_consume_token(41);
jtbNode = new expch_em_lxac(n0, n4);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public void expch_wosn_a() throws ParseException {
    if (jj_2_14(2)) {
      jj_consume_token(42);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ID:{
        jj_consume_token(ID);
        break;
        }
      default:
        jj_la1[11] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
}

  final public void expch_wosn_b() throws ParseException {
    if (jj_2_15(2)) {
      jj_consume_token(43);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case efID:{
        jj_consume_token(efID);
        break;
        }
      default:
        jj_la1[12] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
}

  final public expch_wnsn expch_wnsn() throws ParseException {expch_wnsn jtbNode = null;
    if (jj_2_20(2) && (1 == 1)) {
      jj_consume_token(44);
      jj_consume_token(45);
    } else if (jj_2_21(2)) {
      jj_consume_token(46);
      jj_consume_token(45);
    } else if (jj_2_22(2) && (2 == 2)) {
      jj_consume_token(47);
      jj_consume_token(45);
    } else if (jj_2_23(2147483647) && (3 == 3)) {
      jj_consume_token(48);
      jj_consume_token(45);
    } else if (jj_2_24(2147483647)) {
      jj_consume_token(49);
      jj_consume_token(45);
    } else if (jj_2_25(2)) {
      jj_consume_token(50);
      jj_consume_token(45);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ID:{
        jj_consume_token(ID);
        jj_consume_token(45);
        break;
        }
      case 45:
      case 51:
      case 52:{
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 45:{
          jj_consume_token(45);
          break;
          }
        case 51:{
          jj_consume_token(51);
          break;
          }
        case 52:{
          jj_consume_token(52);
          break;
          }
        default:
          jj_la1[13] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
        }
      case SC1:{
        jj_consume_token(SC1);
        break;
        }
      case SC2:{
        label_4:
        while (true) {
          jj_consume_token(SC2);
          if (jj_2_16(2)) {
            ;
          } else {
            break label_4;
          }
        }
        break;
        }
      default:
        jj_la1[14] = jj_gen;
        label_5:
        while (true) {
          if (jj_2_17(2)) {
            ;
          } else {
            break label_5;
          }
          jj_consume_token(55);
        }
      }
    }
jtbNode = new expch_wnsn();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_2ch expch_2ch() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  expch_2ch jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 58:{
      n1 = jj_consume_token(58);
n0 = new NodeChoice(n1, 0, 2);
      break;
      }
    case 59:{
      jj_consume_token(59);
n0 = new NodeChoice(null, 1, 2);
      break;
      }
    default:
      jj_la1[15] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 60:{
      jj_consume_token(60);
n2 = new NodeChoice(null, 0, 2);
      break;
      }
    case 61:{
      n3 = jj_consume_token(61);
n2 = new NodeChoice(n3, 1, 2);
      break;
      }
    default:
      jj_la1[16] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
jtbNode = new expch_2ch(n0, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_a expch_bl_a() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  expch_bl_a jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case NUM_3_9:{
      n1 = jj_consume_token(NUM_3_9);
n0 = new NodeChoice(n1, 0, 2);
      break;
      }
    default:
      jj_la1[17] = jj_gen;
n0 = new NodeChoice(null, 1, 2);
some_lexical_action();
    }
jtbNode = new expch_bl_a(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_a$ expch_bl_a$() throws ParseException {expch_bl_a$ jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case NUM_2$:{
      jj_consume_token(NUM_2$);
      break;
      }
    default:
      jj_la1[18] = jj_gen;
some_lexical_action();
    }
jtbNode = new expch_bl_a$();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_b expch_bl_b() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  expch_bl_b jtbNode = null;
n0 = new NodeChoice(null, 0, 2);
some_lexical_action();
jtbNode = new expch_bl_b(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_b$ expch_bl_b$() throws ParseException {expch_bl_b$ jtbNode = null;
some_lexical_action();
jtbNode = new expch_bl_b$();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_c expch_bl_c() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  expch_bl_c jtbNode = null;
    if (some_lookahead()) {
n0 = new NodeChoice(null, 0, 2);
some_lexical_action();
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NUM_3_9:{
        n1 = jj_consume_token(NUM_3_9);
n0 = new NodeChoice(n1, 1, 2);
        break;
        }
      default:
        jj_la1[19] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expch_bl_c(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_c$ expch_bl_c$() throws ParseException {expch_bl_c$ jtbNode = null;
    if (some_lookahead()) {
some_lexical_action();
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NUM_2$:{
        jj_consume_token(NUM_2$);
        break;
        }
      default:
        jj_la1[20] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expch_bl_c$();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_bl_d expch_bl_d() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Token n2 = null;
  Token n3 = null;
  expch_bl_d jtbNode = null;
    if (jj_2_26(2)) {
      n1 = jj_consume_token(A_BS_B);
n0 = new NodeChoice(n1, 0, 8);
some_lexical_action();
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NUM_3_9:{
some_lexical_action();
        n2 = jj_consume_token(NUM_3_9);
n0 = new NodeChoice(n2, 1, 8);
        break;
        }
      case NUM_2$:{
        jj_consume_token(NUM_2$);
n0 = new NodeChoice(null, 2, 8);
some_lexical_action();
        break;
        }
      case A_BS_B:{
some_lexical_action();
        jj_consume_token(A_BS_B);
n0 = new NodeChoice(null, 3, 8);
        break;
        }
      default:
        jj_la1[21] = jj_gen;
n0 = new NodeChoice(null, 4, 8);
boolean a = true;
      }
    }
jtbNode = new expch_bl_d(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expch_eu_a expch_eu_a() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Token n2 = null;
  NodeSequence n3 = null;
  Token n4 = null;
  NodeChoice n5 = null;
  Token n6 = null;
  Token n7 = null;
  NodeOptional n8 = new NodeOptional();
  NodeOptional n9 = null;
  NodeChoice n10 = null;
  Token n11 = null;
  Token n12 = null;
  NodeOptional n13 = new NodeOptional();
  NodeOptional n14 = null;
  NodeChoice n15 = null;
  Token n16 = null;
  Token n17 = null;
  NodeListOptional n18 = new NodeListOptional();
  NodeSequence n19 = null;
  Token n20 = null;
  NodeListOptional n21 = null;
  NodeChoice n22 = null;
  Token n23 = null;
  NodeList n24 = new NodeList();
  NodeSequence n25 = null;
  NodeOptional n26 = null;
  Token n27 = null;
  NodeList n28 = null;
  NodeChoice n29 = null;
  Token n30 = null;
  Token n31 = null;
  expch_eu_a jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case abID:{
      n1 = jj_consume_token(abID);
n0 = new NodeChoice(n1, 0, 4);
      break;
      }
    case 63:{
      jj_consume_token(63);
n0 = new NodeChoice(null, 1, 4);
      break;
      }
    case OP:{
      n2 = jj_consume_token(OP);
n0 = new NodeChoice(n2, 2, 4);
      break;
      }
    case 65:{
n3 = new NodeSequence(6);
      n4 = jj_consume_token(65);
n3.addNode(n4);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case SC1:{
        n6 = jj_consume_token(SC1);
n5 = new NodeChoice(n6, 0, 3);
        break;
        }
      case cdID$:{
        jj_consume_token(cdID$);
n5 = new NodeChoice(null, 1, 3);
        break;
        }
      case efID:{
        n7 = jj_consume_token(efID);
n5 = new NodeChoice(n7, 2, 3);
        break;
        }
      default:
        jj_la1[22] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
n3.addNode(n5);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case SC2:{
n9 = new NodeOptional();
        jj_consume_token(SC2);
        if (jj_2_27(2)) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case abID:{
            n11 = jj_consume_token(abID);
n10 = new NodeChoice(n11, 0, 3);
            break;
            }
          case 66:{
            n12 = jj_consume_token(66);
n10 = new NodeChoice(n12, 1, 3);
            break;
            }
          case 67:{
            jj_consume_token(67);
n10 = new NodeChoice(null, 2, 3);
            break;
            }
          default:
            jj_la1[23] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
n9.addNode(n10);
        } else {
          ;
        }
n8.addNode(n9);
        break;
        }
      default:
        jj_la1[24] = jj_gen;
        ;
      }
n3.addNode(n8);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case SC3:{
n14 = new NodeOptional();
        jj_consume_token(SC3);
        if (jj_2_28(2)) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case abID:{
            n16 = jj_consume_token(abID);
n15 = new NodeChoice(n16, 0, 3);
            break;
            }
          case 66:{
            n17 = jj_consume_token(66);
n15 = new NodeChoice(n17, 1, 3);
            break;
            }
          case 67:{
            jj_consume_token(67);
n15 = new NodeChoice(null, 2, 3);
            break;
            }
          default:
            jj_la1[25] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
n14.addNode(n15);
        } else {
          ;
        }
n13.addNode(n14);
        break;
        }
      default:
        jj_la1[26] = jj_gen;
        ;
      }
n3.addNode(n13);
      label_6:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 69:{
          ;
          break;
          }
        default:
          jj_la1[27] = jj_gen;
          break label_6;
        }
n21 = new NodeListOptional();
n19 = new NodeSequence(2);
        n20 = jj_consume_token(69);
n19.addNode(n20);
        label_7:
        while (true) {
          if (jj_2_29(2)) {
            ;
          } else {
            break label_7;
          }
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case abID:{
            jj_consume_token(abID);
n22 = new NodeChoice(n20, 0, 3);
            break;
            }
          case cdID$:{
            jj_consume_token(cdID$);
n22 = new NodeChoice(null, 1, 3);
            break;
            }
          case efID:{
            n23 = jj_consume_token(efID);
n22 = new NodeChoice(n23, 2, 3);
            break;
            }
          default:
            jj_la1[28] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
n21.addNode(n22);
        }
n21.nodes.trimToSize();
n19.addNode(n21);
n18.addNode(n19);
      }
n18.nodes.trimToSize();
n3.addNode(n18);
      label_8:
      while (true) {
n26 = new NodeOptional();
n28 = new NodeList();
n25 = new NodeSequence(2);
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 70:{
          n27 = jj_consume_token(70);
n26.addNode(n27);
          break;
          }
        default:
          jj_la1[29] = jj_gen;
          ;
        }
n25.addNode(n26);
        label_9:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case abID:{
            n30 = jj_consume_token(abID);
n29 = new NodeChoice(n30, 0, 5);
            break;
            }
          case 71:{
            jj_consume_token(71);
n29 = new NodeChoice(null, 1, 5);
            break;
            }
          case SC4:{
            n31 = jj_consume_token(SC4);
n29 = new NodeChoice(n31, 2, 5);
            break;
            }
          case SC5:{
            jj_consume_token(SC5);
n29 = new NodeChoice(null, 3, 5);
            break;
            }
          case SC6:{
            jj_consume_token(SC6);
n29 = new NodeChoice(null, 4, 5);
            break;
            }
          default:
            jj_la1[30] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
n28.addNode(n29);
          if (jj_2_30(2)) {
            ;
          } else {
            break label_9;
          }
        }
n28.nodes.trimToSize();
n25.addNode(n28);
n24.addNode(n25);
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case abID:
        case 70:
        case 71:
        case SC4:
        case SC5:
        case SC6:{
          ;
          break;
          }
        default:
          jj_la1[31] = jj_gen;
          break label_8;
        }
      }
n24.nodes.trimToSize();
n3.addNode(n24);
n0 = new NodeChoice(n3, 3, 4);
      break;
      }
    default:
      jj_la1[32] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
jtbNode = new expch_eu_a(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_a1 expun_a1() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  NodeChoice n5 = null;
  Token n6 = null;
  Identifier n7 = null;
  expun_a1 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[33] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    if (jj_2_31(2147483647)) {
      n6 = jj_consume_token(ID);
n5 = new NodeChoice(n6, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n7 = Identifier();
n5 = new NodeChoice(n7, 1, 2);
        break;
        }
      default:
        jj_la1[34] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_a1(n0, n1, n2, n5);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_b1 expun_b1() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  eu_id_or_ident n5 = null;
  expun_b1 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[35] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    n5 = eu_id_or_ident();
jtbNode = new expun_b1(n0, n1, n2, n5);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_c1 expun_c1() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  expun_c1 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[36] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    eu_id_or_ident$();
jtbNode = new expun_c1(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_d1 expun_d1() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  expun_d1 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[37] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    eu_id_or_ident();
jtbNode = new expun_d1(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_a2 expun_a2() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  NodeSequence n4 = null;
  Identifier n5 = null;
  NodeChoice n6 = null;
  Token n7 = null;
  Identifier n8 = null;
  expun_a2 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
n4 = new NodeSequence(2);
        n5 = Identifier();
n4.addNode(n5);
        if (jj_2_32(2147483647)) {
          n7 = jj_consume_token(ID);
n6 = new NodeChoice(n7, 0, 2);
        } else {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case A_BS_B:
          case ID:{
            n8 = Identifier();
n6 = new NodeChoice(n8, 1, 2);
            break;
            }
          default:
            jj_la1[38] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
n4.addNode(n6);
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[39] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_a2(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_b2 expun_b2() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  NodeSequence n4 = null;
  Identifier n5 = null;
  eu_id_or_ident n6 = null;
  expun_b2 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
n4 = new NodeSequence(2);
        n5 = Identifier();
n4.addNode(n5);
        n6 = eu_id_or_ident();
n4.addNode(n6);
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[40] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_b2(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_c2 expun_c2() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  expun_c2 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
        eu_id_or_ident$();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[41] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_c2(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_d2 expun_d2() throws ParseException {Token n0 = null;
  Identifier n1 = null;
  NodeChoice n2 = null;
  Token n3 = null;
  Identifier n4 = null;
  expun_d2 jtbNode = null;
    n0 = jj_consume_token(ID);
    n1 = Identifier();
    if (true) {
      n3 = jj_consume_token(ID);
n2 = new NodeChoice(n3, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n4 = Identifier();
        eu_id_or_ident();
n2 = new NodeChoice(n4, 1, 2);
        break;
        }
      default:
        jj_la1[42] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_d2(n0, n1, n2);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_a3 expun_a3() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  NodeSequence n2 = null;
  Identifier n3 = null;
  eu_id_or_ident n4 = null;
  expun_a3 jtbNode = null;
    jj_consume_token(ID);
    Identifier();
    if (true) {
      n1 = jj_consume_token(ID);
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
n2 = new NodeSequence(2);
        n3 = Identifier();
n2.addNode(n3);
        n4 = eu_id_or_ident();
n2.addNode(n4);
n0 = new NodeChoice(n2, 1, 2);
        break;
        }
      default:
        jj_la1[43] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_a3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_b3 expun_b3() throws ParseException {NodeChoice n0 = null;
  NodeSequence n1 = null;
  Identifier n2 = null;
  eu_id_or_ident n3 = null;
  expun_b3 jtbNode = null;
    jj_consume_token(ID);
    Identifier();
    if (true) {
      jj_consume_token(ID);
n0 = new NodeChoice(null, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
n1 = new NodeSequence(2);
        n2 = Identifier();
n1.addNode(n2);
        n3 = eu_id_or_ident();
n1.addNode(n3);
n0 = new NodeChoice(n1, 1, 2);
        break;
        }
      default:
        jj_la1[44] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_b3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_c3 expun_c3() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  expun_c3 jtbNode = null;
    jj_consume_token(ID);
    Identifier();
    if (true) {
      n1 = jj_consume_token(ID);
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        Identifier();
        eu_id_or_ident();
n0 = new NodeChoice(null, 1, 2);
        break;
        }
      default:
        jj_la1[45] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_c3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public expun_d3 expun_d3() throws ParseException {expun_d3 jtbNode = null;
    jj_consume_token(ID);
    Identifier();
    if (true) {
      jj_consume_token(ID);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        Identifier();
        eu_id_or_ident();
        break;
        }
      default:
        jj_la1[46] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new expun_d3();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public eu_id_or_ident eu_id_or_ident() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Identifier n2 = null;
  eu_id_or_ident jtbNode = null;
    if (jj_2_33(2147483647)) {
      n1 = jj_consume_token(ID);
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        n2 = Identifier();
n0 = new NodeChoice(n2, 1, 2);
        break;
        }
      default:
        jj_la1[47] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new eu_id_or_ident(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public void eu_id_or_ident$() throws ParseException {
    if (true) {
      jj_consume_token(ID);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case A_BS_B:
      case ID:{
        Identifier();
        break;
        }
      default:
        jj_la1[48] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
}

  final public Identifier Identifier() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Token n2 = null;
  Identifier jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case A_BS_B:{
      n1 = jj_consume_token(A_BS_B);
n0 = new NodeChoice(n1, 0, 2);
      break;
      }
    case ID:{
      n2 = jj_consume_token(ID);
n0 = new NodeChoice(n2, 1, 2);
      break;
      }
    default:
      jj_la1[49] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
jtbNode = new Identifier(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public check_proper_formatting check_proper_formatting() throws ParseException {NodeChoice n0 = null;
  Token n1 = null;
  Token n2 = null;
  check_proper_formatting jtbNode = null;
  int count = 0;
    if (jj_2_34(2147483647)) {
      n1 = jj_consume_token(ID);
n0 = new NodeChoice(n1, 0, 2);
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ES:{
        n2 = jj_consume_token(ES);
n0 = new NodeChoice(n2, 1, 2);
@SuppressWarnings("unused") boolean b = false;
      jtbrt_check_proper_formatting = ++count;
        break;
        }
      default:
        jj_la1[50] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
jtbNode = new check_proper_formatting(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_be f0_eu1_be() throws ParseException {f0_eu1_be jtbNode = null;

jtbNode = new f0_eu1_be();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_b1 f0_eu1_b1() throws ParseException {f0_eu1_b1 jtbNode = null;
String s = "f0_eu1_b1";
jtbNode = new f0_eu1_b1();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_b2 f0_eu1_b2() throws ParseException {f0_eu1_b2 jtbNode = null;
jtbNode = new f0_eu1_b2();
jtbrt_f0_eu1_b2 = "f0_eu1_b2";
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_ias1 f0_eu1_ias1() throws ParseException {f0_eu1_be n0 = null;
  f0_eu1_ias1 jtbNode = null;
    n0 = f0_eu1_be();
jtbNode = new f0_eu1_ias1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_ias2 f0_eu1_ias2() throws ParseException {f0_eu1_b1 n0 = null;
  f0_eu1_ias2 jtbNode = null;
    try {
      n0 = f0_eu1_b1();
    } finally {

    }
jtbNode = new f0_eu1_ias2(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu2_all1 f0_eu2_all1() throws ParseException {NodeOptional n1 = new NodeOptional();
  Token n2 = null;
  f0_eu1_b1 n3 = null;
  NodeSequence n4 = null;
  Token n5 = null;
  NodeSequence n6 = null;
  Token n7 = null;
  Token n8 = null;
  NodeListOptional n10 = new NodeListOptional();
  Token n11 = null;
  NodeOptional n12 = new NodeOptional();
  NodeChoice n13 = null;
  Token n14 = null;
  Token n15 = null;
  Token n16 = null;
  f0_eu1_peias2 n17 = null;
  NodeChoice n18 = null;
  expch_a n19 = null;
  expch_b n20 = null;
  NodeChoice n21 = null;
  expch_2ch n22 = null;
  expch_bl_a n23 = null;
  f0_eu2_all1 jtbNode = null;
  int k;
  String im;

    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[51] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    if (jj_2_35(2)) {
      k = jj_consume_token(21).kind;
    } else {
      ;
    }
    if (jj_2_36(2)) {
      n2 = jj_consume_token(19);
im = n2.image;
n1.addNode(n2);
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[52] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    n3 = f0_eu1_b1();
n4 = new NodeSequence(2);
    n5 = jj_consume_token(75);
n4.addNode(n5);
n6 = new NodeSequence(2);
    n7 = jj_consume_token(76);
n6.addNode(n7);
    n8 = jj_consume_token(77);
n6.addNode(n8);
    jj_consume_token(78);
    jj_consume_token(79);
    jj_consume_token(80);
    label_10:
    while (true) {
      jj_consume_token(81);
      im = jj_consume_token(A_BS_B).image;
      if (jj_2_37(2147483647)) {
        ;
      } else {
        break label_10;
      }
    }
    label_11:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 13:{
        ;
        break;
        }
      default:
        jj_la1[53] = jj_gen;
        break label_11;
      }
      jj_consume_token(13);
      n11 = jj_consume_token(NUM_3_9);
n10.addNode(n11);
    }
n10.nodes.trimToSize();
    if (jj_2_40(2147483647)) {
      if (jj_2_38(2147483647)) {
        n14 = jj_consume_token(23);
        jj_consume_token(ES);
n13 = new NodeChoice(n14, 0, 3);
      } else if (jj_2_39(2147483647)) {
        jj_consume_token(23);
        n15 = jj_consume_token(NUM_3_9);
n13 = new NodeChoice(n15, 1, 3);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 23:{
          n16 = jj_consume_token(23);
          jj_consume_token(NOT_BUILT);
n13 = new NodeChoice(n16, 2, 3);
          break;
          }
        default:
          jj_la1[54] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
n12.addNode(n13);
    } else {
      ;
    }
    try {
      n17 = f0_eu1_peias2();
      try {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 24:
        case 29:{
          n19 = expch_a();
n18 = new NodeChoice(n19, 0, 2);
          break;
          }
        case 30:
        case 31:{
          n20 = expch_b();
n18 = new NodeChoice(n20, 1, 2);
          break;
          }
        default:
          jj_la1[55] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      } finally {

      }
      try {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 58:
        case 59:{
          n22 = expch_2ch();
n21 = new NodeChoice(n22, 0, 2);
          break;
          }
        default:
          jj_la1[56] = jj_gen;
          n23 = expch_bl_a();
n21 = new NodeChoice(n23, 1, 2);
        }
      } catch (/* final */ Exception e) {

      }
    } catch (ParseException pe) {
pe = null;
    } catch (/* final */ Exception e) {

    }
jtbNode = new f0_eu2_all1(n1, n3, n4, n10, n12, n17, n18, n21);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public void f0_eu2_all1$() throws ParseException {int k;
  String im;

    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[57] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    if (jj_2_41(2)) {
      k = jj_consume_token(21).kind;
    } else {
      ;
    }
    if (jj_2_42(2)) {
      im = jj_consume_token(19).image;
    } else {
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[58] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    f0_eu1_b1();
    jj_consume_token(75);
    jj_consume_token(76);
    jj_consume_token(77);
    jj_consume_token(78);
    jj_consume_token(79);
    jj_consume_token(80);
    label_12:
    while (true) {
      jj_consume_token(81);
      /*!*/  im = jj_consume_token(A_BS_B).image;
      if (jj_2_43(2147483647)) {
        ;
      } else {
        break label_12;
      }
    }
    label_13:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case 13:{
        ;
        break;
        }
      default:
        jj_la1[59] = jj_gen;
        break label_13;
      }
      jj_consume_token(13);
      jj_consume_token(NUM_3_9);
    }
    if (jj_2_46(2147483647)) {
      if (jj_2_44(2147483647)) {
        jj_consume_token(23);
        jj_consume_token(ES);
      } else if (jj_2_45(2147483647)) {
        jj_consume_token(23);
        jj_consume_token(NUM_3_9);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 23:{
          jj_consume_token(23);
          jj_consume_token(NOT_BUILT);
          break;
          }
        default:
          jj_la1[60] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    } else {
      ;
    }
    try {
      f0_eu1_peias2();
      try {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 24:
        case 29:{
          expch_a();
          break;
          }
        case 30:
        case 31:{
          expch_b();
          break;
          }
        default:
          jj_la1[61] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      } finally {

      }
      try {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case 58:
        case 59:{
          expch_2ch();
          break;
          }
        default:
          jj_la1[62] = jj_gen;
          expch_bl_a();
        }
      } catch (/* final */ Exception e) {

      }
    } catch (ParseException pe) {
pe = null;
    } catch (/* final */ Exception e) {

    }
}

  final public f0_eu1_jc f0_eu1_jc() throws ParseException {f0_eu1_jc jtbNode = null;
    eatNextToken();
jtbNode = new f0_eu1_jc();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_peias1 f0_eu1_peias1() throws ParseException {f0_eu1_b2 n0 = null;
  f0_eu1_peias1 jtbNode = null;
  String s;
String oldJtbrt_f0_eu1_b2_1 = jtbrt_f0_eu1_b2;
    n0 = f0_eu1_b2();
s = jtbrt_f0_eu1_b2;
jtbrt_f0_eu1_b2 = oldJtbrt_f0_eu1_b2_1;
jtbNode = new f0_eu1_peias1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_peias2 f0_eu1_peias2() throws ParseException {f0_eu1_b2 n0 = null;
  f0_eu1_peias2 jtbNode = null;
  String s;
String oldJtbrt_f0_eu1_b2_1 = jtbrt_f0_eu1_b2;
    n0 = f0_eu1_b2();
s = jtbrt_f0_eu1_b2;
jtbrt_f0_eu1_b2 = oldJtbrt_f0_eu1_b2_1;
jtbNode = new f0_eu1_peias2(n0);
jtbrt_f0_eu1_peias2 = "f0_eu1_peias / " + s;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_pejc1 f0_eu1_pejc1() throws ParseException {f0_eu1_pejc1 jtbNode = null;
  Token tk = null;
    tk = eatAndReturnNextToken();
jtbNode = new f0_eu1_pejc1();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_pejc2 f0_eu1_pejc2() throws ParseException {f0_eu1_pejc2 jtbNode = null;
  Token tk = null;
    tk = eatAndReturnNextToken();
jtbNode = new f0_eu1_pejc2();
jtbrt_f0_eu1_pejc2 = "f0_eu1_pejc / " + tk.image;
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_resl1 f0_eu1_resl1() throws ParseException {Token n0 = null;
  f0_eu1_resl1 jtbNode = null;
    n0 = jj_consume_token(24);
jtbNode = new f0_eu1_resl1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_resl2 f0_eu1_resl2() throws ParseException {Token n0 = null;
  f0_eu1_resl2 jtbNode = null;
    n0 = jj_consume_token(resl2);
jtbNode = new f0_eu1_resl2(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_resl3 f0_eu1_resl3() throws ParseException {Token n0 = null;
  f0_eu1_resl3 jtbNode = null;
    n0 = jj_consume_token(resl3);
jtbNode = new f0_eu1_resl3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_recrec1 f0_eu1_recrec1() throws ParseException {Token n0 = null;
  f0_eu1_recrec1 jtbNode = null;
    n0 = jj_consume_token(recrec1);
jtbNode = new f0_eu1_recrec1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_recrec2 f0_eu1_recrec2() throws ParseException {Token n0 = null;
  f0_eu1_recrec2 jtbNode = null;
    n0 = jj_consume_token(recrec2);
jtbNode = new f0_eu1_recrec2(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_recrec3 f0_eu1_recrec3() throws ParseException {Token n0 = null;
  f0_eu1_recrec3 jtbNode = null;
    n0 = jj_consume_token(recrec3);
jtbNode = new f0_eu1_recrec3(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_retk f0_eu1_retk() throws ParseException {f0_eu1_retk jtbNode = null;
    jj_consume_token(cdID$);
jtbNode = new f0_eu1_retk();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_eu1_reeof f0_eu1_reeof() throws ParseException {Token n0 = null;
  f0_eu1_reeof jtbNode = null;
    n0 = jj_consume_token(0);
n0.beginColumn++;
n0.endColumn++;
jtbNode = new f0_eu1_reeof(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_laeu2_be f0_laeu2_be() throws ParseException {f0_laeu2_be jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[63] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }

jtbNode = new f0_laeu2_be();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_laeu2_b1 f0_laeu2_b1() throws ParseException {f0_laeu2_b1 jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[64] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
String s = "f0_eu1_b1";
jtbNode = new f0_laeu2_b1();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_laeu2_ias1 f0_laeu2_ias1() throws ParseException {f0_eu1_be n0 = null;
  f0_laeu2_ias1 jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[65] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    n0 = f0_eu1_be();
jtbNode = new f0_laeu2_ias1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_laeu2_ias2 f0_laeu2_ias2() throws ParseException {f0_eu1_b1 n0 = null;
  f0_laeu2_ias2 jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[66] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    n0 = f0_eu1_b1();
jtbNode = new f0_laeu2_ias2(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public f0_laeu2_jc f0_laeu2_jc() throws ParseException {f0_laeu2_jc jtbNode = null;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case 0:{

      break;
      }
    default:
      jj_la1[67] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    eatNextToken();
jtbNode = new f0_laeu2_jc();
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public gt_1 gt_1() throws ParseException {Token n0 = null;
  gt_1 jtbNode = null;
List<Token> l1 = new ArrayList<>();
    List<List<Token>> l2 = new ArrayList<List<Token>>();
    List<List<List<Token>>> l3 = new ArrayList<List<List<Token>>>();
    List<List<List<List<Token>>>> l4 = new ArrayList<List<List<List<Token>>>>();
    boolean b = 1 > 2;
    b = 3 >= 4;
    int i = 5 >> 6;
    i = 7 >>> 8;
    i >>= 9;
    i >>>= 10;
    n0 = jj_consume_token(87);
jtbNode = new gt_1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  final public lt_1 lt_1() throws ParseException {Token n0 = null;
  lt_1 jtbNode = null;
boolean b = 1 < 2;
    b = 3 <= 4;
    int i = 5 << 6;
    i = 7 << 8;
    i <<= 9;
    n0 = jj_consume_token(88);
jtbNode = new lt_1(n0);
{if ("" != null) return jtbNode;}
    throw new Error("Missing return statement in function");
}

  private boolean jj_2_1(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_1()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(0, xla); }
  }

  private boolean jj_2_2(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_2()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(1, xla); }
  }

  private boolean jj_2_3(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_3()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(2, xla); }
  }

  private boolean jj_2_4(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_4()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(3, xla); }
  }

  private boolean jj_2_5(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_5()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(4, xla); }
  }

  private boolean jj_2_6(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_6()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(5, xla); }
  }

  private boolean jj_2_7(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_7()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(6, xla); }
  }

  private boolean jj_2_8(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_8()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(7, xla); }
  }

  private boolean jj_2_9(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_9()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(8, xla); }
  }

  private boolean jj_2_10(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_10()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(9, xla); }
  }

  private boolean jj_2_11(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_11()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(10, xla); }
  }

  private boolean jj_2_12(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_12()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(11, xla); }
  }

  private boolean jj_2_13(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_13()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(12, xla); }
  }

  private boolean jj_2_14(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_14()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(13, xla); }
  }

  private boolean jj_2_15(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_15()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(14, xla); }
  }

  private boolean jj_2_16(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_16()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(15, xla); }
  }

  private boolean jj_2_17(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_17()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(16, xla); }
  }

  private boolean jj_2_18(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_18()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(17, xla); }
  }

  private boolean jj_2_19(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_19()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(18, xla); }
  }

  private boolean jj_2_20(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_20()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(19, xla); }
  }

  private boolean jj_2_21(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_21()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(20, xla); }
  }

  private boolean jj_2_22(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_22()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(21, xla); }
  }

  private boolean jj_2_23(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_23()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(22, xla); }
  }

  private boolean jj_2_24(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_24()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(23, xla); }
  }

  private boolean jj_2_25(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_25()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(24, xla); }
  }

  private boolean jj_2_26(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_26()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(25, xla); }
  }

  private boolean jj_2_27(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_27()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(26, xla); }
  }

  private boolean jj_2_28(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_28()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(27, xla); }
  }

  private boolean jj_2_29(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_29()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(28, xla); }
  }

  private boolean jj_2_30(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_30()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(29, xla); }
  }

  private boolean jj_2_31(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_31()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(30, xla); }
  }

  private boolean jj_2_32(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_32()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(31, xla); }
  }

  private boolean jj_2_33(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_33()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(32, xla); }
  }

  private boolean jj_2_34(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_34()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(33, xla); }
  }

  private boolean jj_2_35(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_35()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(34, xla); }
  }

  private boolean jj_2_36(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_36()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(35, xla); }
  }

  private boolean jj_2_37(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_37()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(36, xla); }
  }

  private boolean jj_2_38(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_38()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(37, xla); }
  }

  private boolean jj_2_39(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_39()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(38, xla); }
  }

  private boolean jj_2_40(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_40()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(39, xla); }
  }

  private boolean jj_2_41(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_41()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(40, xla); }
  }

  private boolean jj_2_42(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_42()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(41, xla); }
  }

  private boolean jj_2_43(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_43()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(42, xla); }
  }

  private boolean jj_2_44(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_44()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(43, xla); }
  }

  private boolean jj_2_45(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_45()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(44, xla); }
  }

  private boolean jj_2_46(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_46()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(45, xla); }
  }

  private boolean jj_3R_expch_eu_a_2456_13_23()
 {
    if (jj_scan_token(abID)) return true;
    return false;
  }

  private boolean jj_3_33()
 {
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_1981_11_22()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_c_1984_13_37()) jj_scanpos = xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_7()) { jj_scanpos = xsp; break; }
    }
    if (jj_3R_expch_c_2011_13_38()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_expch_c_2011_13_38()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_13()
 {
    if (jj_scan_token(39)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2545_13_36()
 {
    if (jj_scan_token(SC6)) return true;
    return false;
  }

  private boolean jj_3_27()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_eu_a_2456_13_23()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2459_13_24()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2462_13_25()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_expch_eu_a_2542_13_35()
 {
    if (jj_scan_token(SC5)) return true;
    return false;
  }

  private boolean jj_3_12()
 {
    if (jj_scan_token(38)) return true;
    return false;
  }

  private boolean jj_3_19()
 {
    if (jj_scan_token(57)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2539_13_34()
 {
    if (jj_scan_token(SC4)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_1970_11_21()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(33)) return true;
    return false;
  }

  private boolean jj_3_3()
 {
    if (jj_3R_bp_i_1181_3_18()) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2536_13_33()
 {
    if (jj_scan_token(71)) return true;
    return false;
  }

  private boolean jj_3_18()
 {
    if (jj_scan_token(56)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2533_13_32()
 {
    if (jj_scan_token(abID)) return true;
    return false;
  }

  private boolean jj_3R_bp_v_o_1108_11_15()
 {
    return false;
  }

  private boolean jj_3_32()
 {
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_1960_11_20()
 {
    if (jj_scan_token(NUM_3_9)) return true;
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3R_bp_v_o_1105_11_14()
 {
    if (jj_scan_token(26)) return true;
    return false;
  }

  private boolean jj_3_42()
 {
    if (jj_scan_token(19)) return true;
    return false;
  }

  private boolean jj_3_9()
 {
    if (jj_scan_token(NUM_3_9)) return true;
    if (jj_scan_token(32)) return true;
    return false;
  }

  private boolean jj_3_17()
 {
    if (jj_scan_token(55)) return true;
    return false;
  }

  private boolean jj_3_30()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_eu_a_2533_13_32()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2536_13_33()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2539_13_34()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2542_13_35()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2545_13_36()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_41()
 {
    if (jj_scan_token(21)) return true;
    return false;
  }

  private boolean jj_3_16()
 {
    if (jj_scan_token(SC2)) return true;
    return false;
  }

  private boolean jj_3_1()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_bp_v_o_1105_11_14()) {
    jj_scanpos = xsp;
    if (jj_3R_bp_v_o_1108_11_15()) return true;
    }
    if (jj_scan_token(27)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_1949_11_19()
 {
    if (jj_scan_token(NUM_3_9)) return true;
    if (jj_scan_token(32)) return true;
    return false;
  }

  private boolean jj_3_36()
 {
    if (jj_scan_token(19)) return true;
    return false;
  }

  private boolean jj_3_26()
 {
    if (jj_scan_token(A_BS_B)) return true;
    return false;
  }

  private boolean jj_3_4()
 {
    if (jj_scan_token(24)) return true;
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3_11()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_c_1949_11_19()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_c_1960_11_20()) {
    jj_scanpos = xsp;
    jj_lookingAhead = true;
    jj_semLA = global_i == 0;
    jj_lookingAhead = false;
    if (!jj_semLA || jj_3R_expch_c_1970_11_21()) {
    jj_scanpos = xsp;
    jj_lookingAhead = true;
    jj_semLA = global_i == 1;
    jj_lookingAhead = false;
    if (!jj_semLA || jj_3R_expch_c_1981_11_22()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3_35()
 {
    if (jj_scan_token(21)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2508_13_31()
 {
    if (jj_scan_token(efID)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2505_13_30()
 {
    if (jj_scan_token(cdID$)) return true;
    return false;
  }

  private boolean jj_3_24()
 {
    if (jj_scan_token(49)) return true;
    return false;
  }

  private boolean jj_3_34()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(8)) {
    jj_scanpos = xsp;
    if (jj_scan_token(2)) return true;
    }
    return false;
  }

  private boolean jj_3R_expch_eu_a_2502_13_29()
 {
    if (jj_scan_token(abID)) return true;
    return false;
  }

  private boolean jj_3R_bp_i_1181_3_18()
 {
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3_23()
 {
    if (jj_scan_token(48)) return true;
    return false;
  }

  private boolean jj_3_8()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(36)) return true;
    return false;
  }

  private boolean jj_3_31()
 {
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3_25()
 {
    if (jj_scan_token(50)) return true;
    if (jj_scan_token(45)) return true;
    return false;
  }

  private boolean jj_3_21()
 {
    if (jj_scan_token(46)) return true;
    return false;
  }

  private boolean jj_3_29()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_eu_a_2502_13_29()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2505_13_30()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2508_13_31()) return true;
    }
    }
    return false;
  }

  private boolean jj_3_20()
 {
    if (jj_scan_token(44)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_2011_13_38()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(36)) return true;
    return false;
  }

  private boolean jj_3_22()
 {
    if (jj_scan_token(47)) return true;
    if (jj_scan_token(45)) return true;
    return false;
  }

  private boolean jj_3_39()
 {
    if (jj_scan_token(23)) return true;
    if (jj_scan_token(NUM_3_9)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2484_13_28()
 {
    if (jj_scan_token(67)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2481_13_27()
 {
    if (jj_scan_token(66)) return true;
    return false;
  }

  private boolean jj_3_45()
 {
    if (jj_scan_token(23)) return true;
    if (jj_scan_token(NUM_3_9)) return true;
    return false;
  }

  private boolean jj_3_38()
 {
    if (jj_scan_token(23)) return true;
    if (jj_scan_token(ES)) return true;
    return false;
  }

  private boolean jj_3_15()
 {
    if (jj_scan_token(43)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2478_13_26()
 {
    if (jj_scan_token(abID)) return true;
    return false;
  }

  private boolean jj_3_40()
 {
    if (jj_scan_token(23)) return true;
    return false;
  }

  private boolean jj_3_6()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(34)) return true;
    return false;
  }

  private boolean jj_3_7()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(35)) return true;
    return false;
  }

  private boolean jj_3_28()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_expch_eu_a_2478_13_26()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2481_13_27()) {
    jj_scanpos = xsp;
    if (jj_3R_expch_eu_a_2484_13_28()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_bp_v_o_1142_11_17()
 {
    if (jj_scan_token(26)) return true;
    return false;
  }

  private boolean jj_3_44()
 {
    if (jj_scan_token(23)) return true;
    if (jj_scan_token(ES)) return true;
    return false;
  }

  private boolean jj_3R_bp_v_o_1139_11_16()
 {
    return false;
  }

  private boolean jj_3_5()
 {
    if (jj_scan_token(30)) return true;
    if (jj_scan_token(abID)) return true;
    return false;
  }

  private boolean jj_3_10()
 {
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3_46()
 {
    if (jj_scan_token(23)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2462_13_25()
 {
    if (jj_scan_token(67)) return true;
    return false;
  }

  private boolean jj_3R_expch_c_1984_13_37()
 {
    if (jj_scan_token(ID)) return true;
    if (jj_scan_token(34)) return true;
    return false;
  }

  private boolean jj_3R_expch_eu_a_2459_13_24()
 {
    if (jj_scan_token(66)) return true;
    return false;
  }

  private boolean jj_3_37()
 {
    if (jj_scan_token(81)) return true;
    return false;
  }

  private boolean jj_3_2()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_bp_v_o_1139_11_16()) {
    jj_scanpos = xsp;
    if (jj_3R_bp_v_o_1142_11_17()) return true;
    }
    if (jj_scan_token(27)) return true;
    if (jj_scan_token(ID)) return true;
    return false;
  }

  private boolean jj_3_43()
 {
    if (jj_scan_token(81)) return true;
    return false;
  }

  private boolean jj_3_14()
 {
    if (jj_scan_token(42)) return true;
    return false;
  }

  /** Generated Token Manager. */
  public FullGrammarTokenManager token_source;
  SimpleCharStream jj_input_stream;
  /** Current token. */
  public Token token;
  /** Next token. */
  public Token jj_nt;
  private int jj_ntk;
  private Token jj_scanpos, jj_lastpos;
  private int jj_la;
  /** Whether we are looking ahead. */
  private boolean jj_lookingAhead = false;
  private boolean jj_semLA;
  private int jj_gen;
  final private int[] jj_la1 = new int[68];
  static private int[] jj_la1_0;
  static private int[] jj_la1_1;
  static private int[] jj_la1_2;
  static {
	   jj_la1_init_0();
	   jj_la1_init_1();
	   jj_la1_init_2();
	}
	private static void jj_la1_init_0() {
	   jj_la1_0 = new int[] {0x380101,0x4000000,0x8000000,0x8000000,0x10000000,0x300,0x20000000,0x80000000,0x400,0x404,0x0,0x100,0x80,0x0,0x100,0x0,0x0,0x400,0x200,0x400,0x200,0x602,0xc0,0x20,0x0,0x20,0x0,0x0,0xe0,0x0,0x20,0x20,0x20,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x102,0x4,0x1,0x1,0x2000,0x800000,0xe1000000,0x0,0x1,0x1,0x2000,0x800000,0xe1000000,0x0,0x1,0x1,0x1,0x1,0x1,};
	}
	private static void jj_la1_init_1() {
	   jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x182000,0x782000,0xc000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,0xc000000,0x0,0x0,0x0,0x0,0x0,};
	}
	private static void jj_la1_init_2() {
	   jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x0,0xc,0x10,0x20,0x0,0x40,0x780,0x7c0,0x3,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,};
	}
  final private JJCalls[] jj_2_rtns = new JJCalls[46];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public FullGrammar(java.io.InputStream stream) {
	  this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public FullGrammar(java.io.InputStream stream, String encoding) {
	 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
	 token_source = new FullGrammarTokenManager(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream) {
	  ReInit(stream, null);
  }
  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream, String encoding) {
	 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
	 token_source.ReInit(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor. */
  public FullGrammar(java.io.Reader stream) {
	 jj_input_stream = new SimpleCharStream(stream, 1, 1);
	 token_source = new FullGrammarTokenManager(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.Reader stream) {
	if (jj_input_stream == null) {
	   jj_input_stream = new SimpleCharStream(stream, 1, 1);
	} else {
	   jj_input_stream.ReInit(stream, 1, 1);
	}
	if (token_source == null) {
 token_source = new FullGrammarTokenManager(jj_input_stream);
	}

	 token_source.ReInit(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor with generated Token Manager. */
  public FullGrammar(FullGrammarTokenManager tm) {
	 token_source = tm;
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(FullGrammarTokenManager tm) {
	 token_source = tm;
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 68; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  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++) {
		   JJCalls 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();
  }

  @SuppressWarnings("serial")
  static private final class LookaheadSuccess extends java.lang.Error {
    @Override
    public Throwable fillInStackTrace() {
      return this;
    }
  }
  static private final LookaheadSuccess jj_ls = new LookaheadSuccess();
  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);
	 }
	 if (jj_scanpos.kind != kind) return true;
	 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
	 return false;
  }


/** Get the next Token. */
  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;
  }

/** Get the specific Token. */
  final public Token getToken(int index) {
	 Token t = jj_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;
  }

  private int jj_ntk_f() {
	 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.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
  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];
	   }

	   for (int[] oldentry : jj_expentries) {
		 if (oldentry.length == jj_expentry.length) {
		   boolean isMatched = true;

		   for (int i = 0; i < jj_expentry.length; i++) {
			 if (oldentry[i] != jj_expentry[i]) {
			   isMatched = false;
			   break;
			 }

		   }
		   if (isMatched) {
			 jj_expentries.add(jj_expentry);
			 break;
		   }
		 }
	   }

	   if (pos != 0) {
		 jj_lasttokens[(jj_endpos = pos) - 1] = kind;
	   }
	 }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
	 jj_expentries.clear();
	 boolean[] la1tokens = new boolean[89];
	 if (jj_kind >= 0) {
	   la1tokens[jj_kind] = true;
	   jj_kind = -1;
	 }
	 for (int i = 0; i < 68; 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;
		   }
		 }
	   }
	 }
	 for (int i = 0; i < 89; i++) {
	   if (la1tokens[i]) {
		 jj_expentry = new int[1];
		 jj_expentry[0] = i;
		 jj_expentries.add(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] = jj_expentries.get(i);
	 }
	 return new ParseException(token, exptokseq, tokenImage);
  }

  private boolean trace_enabled;

/** Trace enabled. */
  final public boolean trace_enabled() {
	 return trace_enabled;
  }

  /** Enable tracing. */
  final public void enable_tracing() {
  }

  /** Disable tracing. */
  final public void disable_tracing() {
  }

  private void jj_rescan_token() {
	 jj_rescan = true;
	 for (int i = 0; i < 46; i++) {
	   try {
		 JJCalls 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;
			   case 3: jj_3_4(); break;
			   case 4: jj_3_5(); break;
			   case 5: jj_3_6(); break;
			   case 6: jj_3_7(); break;
			   case 7: jj_3_8(); break;
			   case 8: jj_3_9(); break;
			   case 9: jj_3_10(); break;
			   case 10: jj_3_11(); break;
			   case 11: jj_3_12(); break;
			   case 12: jj_3_13(); break;
			   case 13: jj_3_14(); break;
			   case 14: jj_3_15(); break;
			   case 15: jj_3_16(); break;
			   case 16: jj_3_17(); break;
			   case 17: jj_3_18(); break;
			   case 18: jj_3_19(); break;
			   case 19: jj_3_20(); break;
			   case 20: jj_3_21(); break;
			   case 21: jj_3_22(); break;
			   case 22: jj_3_23(); break;
			   case 23: jj_3_24(); break;
			   case 24: jj_3_25(); break;
			   case 25: jj_3_26(); break;
			   case 26: jj_3_27(); break;
			   case 27: jj_3_28(); break;
			   case 28: jj_3_29(); break;
			   case 29: jj_3_30(); break;
			   case 30: jj_3_31(); break;
			   case 31: jj_3_32(); break;
			   case 32: jj_3_33(); break;
			   case 33: jj_3_34(); break;
			   case 34: jj_3_35(); break;
			   case 35: jj_3_36(); break;
			   case 36: jj_3_37(); break;
			   case 37: jj_3_38(); break;
			   case 38: jj_3_39(); break;
			   case 39: jj_3_40(); break;
			   case 40: jj_3_41(); break;
			   case 41: jj_3_42(); break;
			   case 42: jj_3_43(); break;
			   case 43: jj_3_44(); break;
			   case 44: jj_3_45(); break;
			   case 45: jj_3_46(); break;
			 }
		   }
		   p = p.next;
		 } while (p != null);

		 } catch(LookaheadSuccess ls) { }
	 }
	 jj_rescan = false;
  }

  private void jj_save(int index, int xla) {
	 JJCalls p = jj_2_rtns[index];
	 while (p.gen > jj_gen) {
	   if (p.next == null) { p = p.next = new JJCalls(); break; }
	   p = p.next;
	 }

	 p.gen = jj_gen + xla - jj_la; 
	 p.first = token;
	 p.arg = xla;
  }

  static final class JJCalls {
	 int gen;
	 Token first;
	 int arg;
	 JJCalls next;
  }

}


class Tuple <F, S, T> implements ITuple<F , S, T> , IL {
  public F first, first2;

  private S second;

  protected T third;

  Tuple<Float , String, ? extends Thread> myTupleQ;

  protected java.util.List<? extends Boolean>[][] list = new ArrayList[1][1];

  public void setValues(F first, S second, T third) {
    this.first = this.first2 = first;
    this.second = second;
    this.third = third;
  }

  @Override public F getFirst() {
    return this.first;
  }

  @Override public S getSecond() {
    return this.second;
  }

  public T getThird() {
    return this.third;
  }

  @Override public boolean get1stElem(java.util.List<? extends Boolean> list) {
    this.list[0][0] = list;
    return list.get(0);
  }

  Tuple()  {
    first = first2 = null;
    second = null;
    third = null;
    list = new ArrayList[1][1];
  }

  Tuple(F f, S s, T t)  {
    first = first2 = null;
    second = s;
    third = t;
    list = new ArrayList[1][1];
  }

  Tuple<F , S, T> getNewInstance() {
    return new Tuple<F , S, T>();
  }
}


interface IL {
  boolean get1stElem(java.util.List<? extends Boolean> list) ;
}


interface IF <F> {
  public F getFirst() ;
}


interface IS <S> {
  abstract S getSecond() ;
}


interface ITuple <F, S, T> extends IF , IS {
  static <A extends Boolean & ITuple> boolean getAll(A a) {
    return true && a;
  }
}


final class Pizza {
  private PizzaStatus status;

  interface PSO {
    public boolean isOrdered() ;
  }


  interface PSR {
    public boolean isReady() ;
  }


  protected enum PizzaStatus implements PSO , PSR {
    ORDERED(5){
      @Override public boolean isOrdered() {
        return true;
      }
    }
, READY(2){
      @Override public boolean isReady() {
        return true;
      }
    }
, DELIVERED(0){
      @Override public boolean isDelivered() {
        return true;
      }
    }
, ;
    private int timeToDelivery;public boolean isOrdered() {
      return false;
    }public boolean isReady() {
      return false;
    }public boolean isDelivered() {
      return false;
    }public int getTimeToDelivery() {
      return timeToDelivery;
    }PizzaStatus(int timeToDelivery)  {
      this.timeToDelivery = timeToDelivery;
    }
  }

  public boolean isDeliverable() {
    return this.status.isReady();
  }
}


class FGclass1 {}


class FGclass2 {}
