final public void Source() throws ParseException {
                 /*@bgen(jjtree) Source */
  ASTSource jjtn000 = new ASTSource(JJTSOURCE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SOURCE);
      String();
    } catch (Throwable jjte000) {
                       if (jjtc000) {
                         jjtree.clearNodeScope(jjtn000);
                         jjtc000 = false;
                       } else {
                         jjtree.popNode();
                       }
                       if (jjte000 instanceof RuntimeException) {
                         {if (true) throw (RuntimeException)jjte000;}
                       }
                       if (jjte000 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte000;}
                       }
                       {if (true) throw (Error)jjte000;}
    } finally {
                       if (jjtc000) {
                         jjtree.closeNodeScope(jjtn000, true);
                         jjtn000.jjtSetLastToken(getToken(0));
                       }
    }
  }