content: // This file was generated automatically by the Snowball to Java compiler
  
  package org.tartarus.snowball.ext;
  import org.tartarus.snowball.SnowballProgram;
  import org.tartarus.snowball.Among;
  
  /**
   * Generated class implementing code defined by a snowball script.
   */
  public class ItalianStemmer extends SnowballProgram {
  
          private Among a_0[] = {
              new Among ( "", -1, 7, "", this),
              new Among ( "qu", 0, 6, "", this),
              new Among ( "\u00E1", 0, 1, "", this),
              new Among ( "\u00E9", 0, 2, "", this),
              new Among ( "\u00ED", 0, 3, "", this),
              new Among ( "\u00F3", 0, 4, "", this),
              new Among ( "\u00FA", 0, 5, "", this)
          };
  
          private Among a_1[] = {
              new Among ( "", -1, 3, "", this),
              new Among ( "I", 0, 1, "", this),
              new Among ( "U", 0, 2, "", this)
          };
  
          private Among a_2[] = {
              new Among ( "la", -1, -1, "", this),
              new Among ( "cela", 0, -1, "", this),
              new Among ( "gliela", 0, -1, "", this),
              new Among ( "mela", 0, -1, "", this),
              new Among ( "tela", 0, -1, "", this),
              new Among ( "vela", 0, -1, "", this),
              new Among ( "le", -1, -1, "", this),
              new Among ( "cele", 6, -1, "", this),
              new Among ( "gliele", 6, -1, "", this),
              new Among ( "mele", 6, -1, "", this),
              new Among ( "tele", 6, -1, "", this),
              new Among ( "vele", 6, -1, "", this),
              new Among ( "ne", -1, -1, "", this),
              new Among ( "cene", 12, -1, "", this),
              new Among ( "gliene", 12, -1, "", this),
              new Among ( "mene", 12, -1, "", this),
              new Among ( "sene", 12, -1, "", this),
              new Among ( "tene", 12, -1, "", this),
              new Among ( "vene", 12, -1, "", this),
              new Among ( "ci", -1, -1, "", this),
              new Among ( "li", -1, -1, "", this),
              new Among ( "celi", 20, -1, "", this),
              new Among ( "glieli", 20, -1, "", this),
              new Among ( "meli", 20, -1, "", this),
              new Among ( "teli", 20, -1, "", this),
              new Among ( "veli", 20, -1, "", this),
              new Among ( "gli", 20, -1, "", this),
              new Among ( "mi", -1, -1, "", this),
              new Among ( "si", -1, -1, "", this),
              new Among ( "ti", -1, -1, "", this),
              new Among ( "vi", -1, -1, "", this),
              new Among ( "lo", -1, -1, "", this),
              new Among ( "celo", 31, -1, "", this),
              new Among ( "glielo", 31, -1, "", this),
              new Among ( "melo", 31, -1, "", this),
              new Among ( "telo", 31, -1, "", this),
              new Among ( "velo", 31, -1, "", this)
          };
  
          private Among a_3[] = {
              new Among ( "ando", -1, 1, "", this),
              new Among ( "endo", -1, 1, "", this),
              new Among ( "ar", -1, 2, "", this),
              new Among ( "er", -1, 2, "", this),
              new Among ( "ir", -1, 2, "", this)
          };
  
          private Among a_4[] = {
              new Among ( "ic", -1, -1, "", this),
              new Among ( "abil", -1, -1, "", this),
              new Among ( "os", -1, -1, "", this),
              new Among ( "iv", -1, 1, "", this)
          };
  
          private Among a_5[] = {
              new Among ( "ic", -1, 1, "", this),
              new Among ( "abil", -1, 1, "", this),
              new Among ( "iv", -1, 1, "", this)
          };
  
          private Among a_6[] = {
              new Among ( "ica", -1, 1, "", this),
              new Among ( "logia", -1, 3, "", this),
              new Among ( "osa", -1, 1, "", this),
              new Among ( "ista", -1, 1, "", this),
              new Among ( "iva", -1, 9, "", this),
              new Among ( "anza", -1, 1, "", this),
              new Among ( "enza", -1, 5, "", this),
              new Among ( "ice", -1, 1, "", this),
              new Among ( "atrice", 7, 1, "", this),
              new Among ( "iche", -1, 1, "", this),
              new Among ( "logie", -1, 3, "", this),
              new Among ( "abile", -1, 1, "", this),
              new Among ( "ibile", -1, 1, "", this),
              new Among ( "usione", -1, 4, "", this),
              new Among ( "azione", -1, 2, "", this),
              new Among ( "uzione", -1, 4, "", this),
              new Among ( "atore", -1, 2, "", this),
              new Among ( "ose", -1, 1, "", this),
              new Among ( "ante", -1, 1, "", this),
              new Among ( "mente", -1, 1, "", this),
              new Among ( "amente", 19, 7, "", this),
              new Among ( "iste", -1, 1, "", this),
              new Among ( "ive", -1, 9, "", this),
              new Among ( "anze", -1, 1, "", this),
              new Among ( "enze", -1, 5, "", this),
              new Among ( "ici", -1, 1, "", this),
              new Among ( "atrici", 25, 1, "", this),
              new Among ( "ichi", -1, 1, "", this),
              new Among ( "abili", -1, 1, "", this),
              new Among ( "ibili", -1, 1, "", this),
              new Among ( "ismi", -1, 1, "", this),
              new Among ( "usioni", -1, 4, "", this),
              new Among ( "azioni", -1, 2, "", this),
              new Among ( "uzioni", -1, 4, "", this),
              new Among ( "atori", -1, 2, "", this),
              new Among ( "osi", -1, 1, "", this),
              new Among ( "anti", -1, 1, "", this),
              new Among ( "amenti", -1, 6, "", this),
              new Among ( "imenti", -1, 6, "", this),
              new Among ( "isti", -1, 1, "", this),
              new Among ( "ivi", -1, 9, "", this),
              new Among ( "ico", -1, 1, "", this),
              new Among ( "ismo", -1, 1, "", this),
              new Among ( "oso", -1, 1, "", this),
              new Among ( "amento", -1, 6, "", this),
              new Among ( "imento", -1, 6, "", this),
              new Among ( "ivo", -1, 9, "", this),
              new Among ( "it\u00E0", -1, 8, "", this),
              new Among ( "ist\u00E0", -1, 1, "", this),
              new Among ( "ist\u00E8", -1, 1, "", this),
              new Among ( "ist\u00EC", -1, 1, "", this)
          };
  
          private Among a_7[] = {
              new Among ( "isca", -1, 1, "", this),
              new Among ( "enda", -1, 1, "", this),
              new Among ( "ata", -1, 1, "", this),
              new Among ( "ita", -1, 1, "", this),
              new Among ( "uta", -1, 1, "", this),
              new Among ( "ava", -1, 1, "", this),
              new Among ( "eva", -1, 1, "", this),
              new Among ( "iva", -1, 1, "", this),
              new Among ( "erebbe", -1, 1, "", this),
              new Among ( "irebbe", -1, 1, "", this),
              new Among ( "isce", -1, 1, "", this),
              new Among ( "ende", -1, 1, "", this),
              new Among ( "are", -1, 1, "", this),
              new Among ( "ere", -1, 1, "", this),
              new Among ( "ire", -1, 1, "", this),
              new Among ( "asse", -1, 1, "", this),
              new Among ( "ate", -1, 1, "", this),
              new Among ( "avate", 16, 1, "", this),
              new Among ( "evate", 16, 1, "", this),
              new Among ( "ivate", 16, 1, "", this),
              new Among ( "ete", -1, 1, "", this),
              new Among ( "erete", 20, 1, "", this),
              new Among ( "irete", 20, 1, "", this),
              new Among ( "ite", -1, 1, "", this),
              new Among ( "ereste", -1, 1, "", this),
              new Among ( "ireste", -1, 1, "", this),
              new Among ( "ute", -1, 1, "", this),
              new Among ( "erai", -1, 1, "", this),
              new Among ( "irai", -1, 1, "", this),
              new Among ( "isci", -1, 1, "", this),
              new Among ( "endi", -1, 1, "", this),
              new Among ( "erei", -1, 1, "", this),
              new Among ( "irei", -1, 1, "", this),
              new Among ( "assi", -1, 1, "", this),
              new Among ( "ati", -1, 1, "", this),
              new Among ( "iti", -1, 1, "", this),
              new Among ( "eresti", -1, 1, "", this),
              new Among ( "iresti", -1, 1, "", this),
              new Among ( "uti", -1, 1, "", this),
              new Among ( "avi", -1, 1, "", this),
              new Among ( "evi", -1, 1, "", this),
              new Among ( "ivi", -1, 1, "", this),
              new Among ( "isco", -1, 1, "", this),
              new Among ( "ando", -1, 1, "", this),
              new Among ( "endo", -1, 1, "", this),
              new Among ( "Yamo", -1, 1, "", this),
              new Among ( "iamo", -1, 1, "", this),
              new Among ( "avamo", -1, 1, "", this),
              new Among ( "evamo", -1, 1, "", this),
              new Among ( "ivamo", -1, 1, "", this),
              new Among ( "eremo", -1, 1, "", this),
              new Among ( "iremo", -1, 1, "", this),
              new Among ( "assimo", -1, 1, "", this),
              new Among ( "ammo", -1, 1, "", this),
              new Among ( "emmo", -1, 1, "", this),
              new Among ( "eremmo", 54, 1, "", this),
              new Among ( "iremmo", 54, 1, "", this),
              new Among ( "immo", -1, 1, "", this),
              new Among ( "ano", -1, 1, "", this),
              new Among ( "iscano", 58, 1, "", this),
              new Among ( "avano", 58, 1, "", this),
              new Among ( "evano", 58, 1, "", this),
              new Among ( "ivano", 58, 1, "", this),
              new Among ( "eranno", -1, 1, "", this),
              new Among ( "iranno", -1, 1, "", this),
              new Among ( "ono", -1, 1, "", this),
              new Among ( "iscono", 65, 1, "", this),
              new Among ( "arono", 65, 1, "", this),
              new Among ( "erono", 65, 1, "", this),
              new Among ( "irono", 65, 1, "", this),
              new Among ( "erebbero", -1, 1, "", this),
              new Among ( "irebbero", -1, 1, "", this),
              new Among ( "assero", -1, 1, "", this),
              new Among ( "essero", -1, 1, "", this),
              new Among ( "issero", -1, 1, "", this),
              new Among ( "ato", -1, 1, "", this),
              new Among ( "ito", -1, 1, "", this),
              new Among ( "uto", -1, 1, "", this),
              new Among ( "avo", -1, 1, "", this),
              new Among ( "evo", -1, 1, "", this),
              new Among ( "ivo", -1, 1, "", this),
              new Among ( "ar", -1, 1, "", this),
              new Among ( "ir", -1, 1, "", this),
              new Among ( "er\u00E0", -1, 1, "", this),
              new Among ( "ir\u00E0", -1, 1, "", this),
              new Among ( "er\u00F2", -1, 1, "", this),
              new Among ( "ir\u00F2", -1, 1, "", this)
          };
  
          private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 };
  
          private static final char g_AEIO[] = {17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 };
  
          private static final char g_CG[] = {17 };
  
          private int I_p2;
          private int I_p1;
          private int I_pV;
  
          private void copy_from(ItalianStemmer other) {
              I_p2 = other.I_p2;
              I_p1 = other.I_p1;
              I_pV = other.I_pV;
              super.copy_from(other);
          }
  
          private boolean r_prelude() {
              int among_var;
              int v_1;
              int v_2;
              int v_3;
              int v_4;
              int v_5;
              // (, line 34
              // test, line 35
              v_1 = cursor;
              // repeat, line 35
              replab0: while(true)
              {
                  v_2 = cursor;
                  lab1: do {
                      // (, line 35
                      // [, line 36
                      bra = cursor;
                      // substring, line 36
                      among_var = find_among(a_0, 7);
                      if (among_var == 0)
                      {
                          break lab1;
                      }
                      // ], line 36
                      ket = cursor;
                      switch(among_var) {
                          case 0:
                              break lab1;
                          case 1:
                              // (, line 37
                              // <-, line 37
                              slice_from("\u00E0");
                              break;
                          case 2:
                              // (, line 38
                              // <-, line 38
                              slice_from("\u00E8");
                              break;
                          case 3:
                              // (, line 39
                              // <-, line 39
                              slice_from("\u00EC");
                              break;
                          case 4:
                              // (, line 40
                              // <-, line 40
                              slice_from("\u00F2");
                              break;
                          case 5:
                              // (, line 41
                              // <-, line 41
                              slice_from("\u00F9");
                              break;
                          case 6:
                              // (, line 42
                              // <-, line 42
                              slice_from("qU");
                              break;
                          case 7:
                              // (, line 43
                              // next, line 43
                              if (cursor >= limit)
                              {
                                  break lab1;
                              }
                              cursor++;
                              break;
                      }
                      continue replab0;
                  } while (false);
                  cursor = v_2;
                  break replab0;
              }
              cursor = v_1;
              // repeat, line 46
              replab2: while(true)
              {
                  v_3 = cursor;
                  lab3: do {
                      // goto, line 46
                      golab4: while(true)
                      {
                          v_4 = cursor;
                          lab5: do {
                              // (, line 46
                              if (!(in_grouping(g_v, 97, 249)))
                              {
                                  break lab5;
                              }
                              // [, line 47
                              bra = cursor;
                              // or, line 47
                              lab6: do {
                                  v_5 = cursor;
                                  lab7: do {
                                      // (, line 47
                                      // literal, line 47
                                      if (!(eq_s(1, "u")))
                                      {
                                          break lab7;
                                      }
                                      // ], line 47
                                      ket = cursor;
                                      if (!(in_grouping(g_v, 97, 249)))
                                      {
                                          break lab7;
                                      }
                                      // <-, line 47
                                      slice_from("U");
                                      break lab6;
                                  } while (false);
                                  cursor = v_5;
                                  // (, line 48
                                  // literal, line 48
                                  if (!(eq_s(1, "i")))
                                  {
                                      break lab5;
                                  }
                                  // ], line 48
                                  ket = cursor;
                                  if (!(in_grouping(g_v, 97, 249)))
                                  {
                                      break lab5;
                                  }
                                  // <-, line 48
                                  slice_from("I");
                              } while (false);
                              cursor = v_4;
                              break golab4;
                          } while (false);
                          cursor = v_4;
                          if (cursor >= limit)
                          {
                              break lab3;
                          }
                          cursor++;
                      }
                      continue replab2;
                  } while (false);
                  cursor = v_3;
                  break replab2;
              }
              return true;
          }
  
          private boolean r_mark_regions() {
              int v_1;
              int v_2;
              int v_3;
              int v_6;
              int v_8;
              // (, line 52
              I_pV = limit;
              I_p1 = limit;
              I_p2 = limit;
              // do, line 58
              v_1 = cursor;
              lab0: do {
                  // (, line 58
                  // or, line 60
                  lab1: do {
                      v_2 = cursor;
                      lab2: do {
                          // (, line 59
                          if (!(in_grouping(g_v, 97, 249)))
                          {
                              break lab2;
                          }
                          // or, line 59
                          lab3: do {
                              v_3 = cursor;
                              lab4: do {
                                  // (, line 59
                                  if (!(out_grouping(g_v, 97, 249)))
                                  {
                                      break lab4;
                                  }
                                  // gopast, line 59
                                  golab5: while(true)
                                  {
                                      lab6: do {
                                          if (!(in_grouping(g_v, 97, 249)))
                                          {
                                              break lab6;
                                          }
                                          break golab5;
                                      } while (false);
                                      if (cursor >= limit)
                                      {
                                          break lab4;
                                      }
                                      cursor++;
                                  }
                                  break lab3;
                              } while (false);
                              cursor = v_3;
                              // (, line 59
                              if (!(in_grouping(g_v, 97, 249)))
                              {
                                  break lab2;
                              }
                              // gopast, line 59
                              golab7: while(true)
                              {
                                  lab8: do {
                                      if (!(out_grouping(g_v, 97, 249)))
                                      {
                                          break lab8;
                                      }
                                      break golab7;
                                  } while (false);
                                  if (cursor >= limit)
                                  {
                                      break lab2;
                                  }
                                  cursor++;
                              }
                          } while (false);
                          break lab1;
                      } while (false);
                      cursor = v_2;
                      // (, line 61
                      if (!(out_grouping(g_v, 97, 249)))
                      {
                          break lab0;
                      }
                      // or, line 61
                      lab9: do {
                          v_6 = cursor;
                          lab10: do {
                              // (, line 61
                              if (!(out_grouping(g_v, 97, 249)))
                              {
                                  break lab10;
                              }
                              // gopast, line 61
                              golab11: while(true)
                              {
                                  lab12: do {
                                      if (!(in_grouping(g_v, 97, 249)))
                                      {
                                          break lab12;
                                      }
                                      break golab11;
                                  } while (false);
                                  if (cursor >= limit)
                                  {
                                      break lab10;
                                  }
                                  cursor++;
                              }
                              break lab9;
                          } while (false);
                          cursor = v_6;
                          // (, line 61
                          if (!(in_grouping(g_v, 97, 249)))
                          {
                              break lab0;
                          }
                          // next, line 61
                          if (cursor >= limit)
                          {
                              break lab0;
                          }
                          cursor++;
                      } while (false);
                  } while (false);
                  // setmark pV, line 62
                  I_pV = cursor;
              } while (false);
              cursor = v_1;
              // do, line 64
              v_8 = cursor;
              lab13: do {
                  // (, line 64
                  // gopast, line 65
                  golab14: while(true)
                  {
                      lab15: do {
                          if (!(in_grouping(g_v, 97, 249)))
                          {
                              break lab15;
                          }
                          break golab14;
                      } while (false);
                      if (cursor >= limit)
                      {
                          break lab13;
                      }
                      cursor++;
                  }
                  // gopast, line 65
                  golab16: while(true)
                  {
                      lab17: do {
                          if (!(out_grouping(g_v, 97, 249)))
                          {
                              break lab17;
                          }
                          break golab16;
                      } while (false);
                      if (cursor >= limit)
                      {
                          break lab13;
                      }
                      cursor++;
                  }
                  // setmark p1, line 65
                  I_p1 = cursor;
                  // gopast, line 66
                  golab18: while(true)
                  {
                      lab19: do {
                          if (!(in_grouping(g_v, 97, 249)))
                          {
                              break lab19;
                          }
                          break golab18;
                      } while (false);
                      if (cursor >= limit)
                      {
                          break lab13;
                      }
                      cursor++;
                  }
                  // gopast, line 66
                  golab20: while(true)
                  {
                      lab21: do {
                          if (!(out_grouping(g_v, 97, 249)))
                          {
                              break lab21;
                          }
                          break golab20;
                      } while (false);
                      if (cursor >= limit)
                      {
                          break lab13;
                      }
                      cursor++;
                  }
                  // setmark p2, line 66
                  I_p2 = cursor;
              } while (false);
              cursor = v_8;
              return true;
          }
  
          private boolean r_postlude() {
              int among_var;
              int v_1;
              // repeat, line 70
              replab0: while(true)
              {
                  v_1 = cursor;
                  lab1: do {
                      // (, line 70
                      // [, line 72
                      bra = cursor;
                      // substring, line 72
                      among_var = find_among(a_1, 3);
                      if (among_var == 0)
                      {
                          break lab1;
                      }
                      // ], line 72
                      ket = cursor;
                      switch(among_var) {
                          case 0:
                              break lab1;
                          case 1:
                              // (, line 73
                              // <-, line 73
                              slice_from("i");
                              break;
                          case 2:
                              // (, line 74
                              // <-, line 74
                              slice_from("u");
                              break;
                          case 3:
                              // (, line 75
                              // next, line 75
                              if (cursor >= limit)
                              {
                                  break lab1;
                              }
                              cursor++;
                              break;
                      }
                      continue replab0;
                  } while (false);
                  cursor = v_1;
                  break replab0;
              }
              return true;
          }
  
          private boolean r_RV() {
              if (!(I_pV <= cursor))
              {
                  return false;
              }
              return true;
          }
  
          private boolean r_R1() {
              if (!(I_p1 <= cursor))
              {
                  return false;
              }
              return true;
          }
  
          private boolean r_R2() {
              if (!(I_p2 <= cursor))
              {
                  return false;
              }
              return true;
          }
  
          private boolean r_attached_pronoun() {
              int among_var;
              // (, line 86
              // [, line 87
              ket = cursor;
              // substring, line 87
              if (find_among_b(a_2, 37) == 0)
              {
                  return false;
              }
              // ], line 87
              bra = cursor;
              // among, line 97
              among_var = find_among_b(a_3, 5);
              if (among_var == 0)
              {
                  return false;
              }
              // (, line 97
              // call RV, line 97
              if (!r_RV())
              {
                  return false;
              }
              switch(among_var) {
                  case 0:
                      return false;
                  case 1:
                      // (, line 98
                      // delete, line 98
                      slice_del();
                      break;
                  case 2:
                      // (, line 99
                      // <-, line 99
                      slice_from("e");
                      break;
              }
              return true;
          }
  
          private boolean r_standard_suffix() {
              int among_var;
              int v_1;
              int v_2;
              int v_3;
              int v_4;
              // (, line 103
              // [, line 104
              ket = cursor;
              // substring, line 104
              among_var = find_among_b(a_6, 51);
              if (among_var == 0)
              {
                  return false;
              }
              // ], line 104
              bra = cursor;
              switch(among_var) {
                  case 0:
                      return false;
                  case 1:
                      // (, line 111
                      // call R2, line 111
                      if (!r_R2())
                      {
                          return false;
                      }
                      // delete, line 111
                      slice_del();
                      break;
                  case 2:
                      // (, line 113
                      // call R2, line 113
                      if (!r_R2())
                      {
                          return false;
                      }
                      // delete, line 113
                      slice_del();
                      // try, line 114
                      v_1 = limit - cursor;
                      lab0: do {
                          // (, line 114
                          // [, line 114
                          ket = cursor;
                          // literal, line 114
                          if (!(eq_s_b(2, "ic")))
                          {
                              cursor = limit - v_1;
                              break lab0;
                          }
                          // ], line 114
                          bra = cursor;
                          // call R2, line 114
                          if (!r_R2())
                          {
                              cursor = limit - v_1;
                              break lab0;
                          }
                          // delete, line 114
                          slice_del();
                      } while (false);
                      break;
                  case 3:
                      // (, line 117
                      // call R2, line 117
                      if (!r_R2())
                      {
                          return false;
                      }
                      // <-, line 117
                      slice_from("log");
                      break;
                  case 4:
                      // (, line 119
                      // call R2, line 119
                      if (!r_R2())
                      {
                          return false;
                      }
                      // <-, line 119
                      slice_from("u");
                      break;
                  case 5:
                      // (, line 121
                      // call R2, line 121
                      if (!r_R2())
                      {
                          return false;
                      }
                      // <-, line 121
                      slice_from("ente");
                      break;
                  case 6:
                      // (, line 123
                      // call RV, line 123
                      if (!r_RV())
                      {
                          return false;
                      }
                      // delete, line 123
                      slice_del();
                      break;
                  case 7:
                      // (, line 124
                      // call R1, line 125
                      if (!r_R1())
                      {
                          return false;
                      }
                      // delete, line 125
                      slice_del();
                      // try, line 126
                      v_2 = limit - cursor;
                      lab1: do {
                          // (, line 126
                          // [, line 127
                          ket = cursor;
                          // substring, line 127
                          among_var = find_among_b(a_4, 4);
                          if (among_var == 0)
                          {
                              cursor = limit - v_2;
                              break lab1;
                          }
                          // ], line 127
                          bra = cursor;
                          // call R2, line 127
                          if (!r_R2())
                          {
                              cursor = limit - v_2;
                              break lab1;
                          }
                          // delete, line 127
                          slice_del();
                          switch(among_var) {
                              case 0:
                                  cursor = limit - v_2;
                                  break lab1;
                              case 1:
                                  // (, line 128
                                  // [, line 128
                                  ket = cursor;
                                  // literal, line 128
                                  if (!(eq_s_b(2, "at")))
                                  {
                                      cursor = limit - v_2;
                                      break lab1;
                                  }
                                  // ], line 128
                                  bra = cursor;
                                  // call R2, line 128
                                  if (!r_R2())
                                  {
                                      cursor = limit - v_2;
                                      break lab1;
                                  }
                                  // delete, line 128
                                  slice_del();
                                  break;
                          }
                      } while (false);
                      break;
                  case 8:
                      // (, line 133
                      // call R2, line 134
                      if (!r_R2())
                      {
                          return false;
                      }
                      // delete, line 134
                      slice_del();
                      // try, line 135
                      v_3 = limit - cursor;
                      lab2: do {
                          // (, line 135
                          // [, line 136
                          ket = cursor;
                          // substring, line 136
                          among_var = find_among_b(a_5, 3);
                          if (among_var == 0)
                          {
                              cursor = limit - v_3;
                              break lab2;
                          }
                          // ], line 136
                          bra = cursor;
                          switch(among_var) {
                              case 0:
                                  cursor = limit - v_3;
                                  break lab2;
                              case 1:
                                  // (, line 137
                                  // call R2, line 137
                                  if (!r_R2())
                                  {
                                      cursor = limit - v_3;
                                      break lab2;
                                  }
                                  // delete, line 137
                                  slice_del();
                                  break;
                          }
                      } while (false);
                      break;
                  case 9:
                      // (, line 141
                      // call R2, line 142
                      if (!r_R2())
                      {
                          return false;
                      }
                      // delete, line 142
                      slice_del();
                      // try, line 143
                      v_4 = limit - cursor;
                      lab3: do {
                          // (, line 143
                          // [, line 143
                          ket = cursor;
                          // literal, line 143
                          if (!(eq_s_b(2, "at")))
                          {
                              cursor = limit - v_4;
                              break lab3;
                          }
                          // ], line 143
                          bra = cursor;
                          // call R2, line 143
                          if (!r_R2())
                          {
                              cursor = limit - v_4;
                              break lab3;
                          }
                          // delete, line 143
                          slice_del();
                          // [, line 143
                          ket = cursor;
                          // literal, line 143
                          if (!(eq_s_b(2, "ic")))
                          {
                              cursor = limit - v_4;
                              break lab3;
                          }
                          // ], line 143
                          bra = cursor;
                          // call R2, line 143
                          if (!r_R2())
                          {
                              cursor = limit - v_4;
                              break lab3;
                          }
                          // delete, line 143
                          slice_del();
                      } while (false);
                      break;
              }
              return true;
          }
  
          private boolean r_verb_suffix() {
              int among_var;
              int v_1;
              int v_2;
              // setlimit, line 148
              v_1 = limit - cursor;
              // tomark, line 148
              if (cursor < I_pV)
              {
                  return false;
              }
              cursor = I_pV;
              v_2 = limit_backward;
              limit_backward = cursor;
              cursor = limit - v_1;
              // (, line 148
              // [, line 149
              ket = cursor;
              // substring, line 149
              among_var = find_among_b(a_7, 87);
              if (among_var == 0)
              {
                  limit_backward = v_2;
                  return false;
              }
              // ], line 149
              bra = cursor;
              switch(among_var) {
                  case 0:
                      limit_backward = v_2;
                      return false;
                  case 1:
                      // (, line 163
                      // delete, line 163
                      slice_del();
                      break;
              }
              limit_backward = v_2;
              return true;
          }
  
          private boolean r_vowel_suffix() {
              int v_1;
              int v_2;
              // (, line 170
              // try, line 171
              v_1 = limit - cursor;
              lab0: do {
                  // (, line 171
                  // [, line 172
                  ket = cursor;
                  if (!(in_grouping_b(g_AEIO, 97, 242)))
                  {
                      cursor = limit - v_1;
                      break lab0;
                  }
                  // ], line 172
                  bra = cursor;
                  // call RV, line 172
                  if (!r_RV())
                  {
                      cursor = limit - v_1;
                      break lab0;
                  }
                  // delete, line 172
                  slice_del();
                  // [, line 173
                  ket = cursor;
                  // literal, line 173
                  if (!(eq_s_b(1, "i")))
                  {
                      cursor = limit - v_1;
                      break lab0;
                  }
                  // ], line 173
                  bra = cursor;
                  // call RV, line 173
                  if (!r_RV())
                  {
                      cursor = limit - v_1;
                      break lab0;
                  }
                  // delete, line 173
                  slice_del();
              } while (false);
              // try, line 175
              v_2 = limit - cursor;
              lab1: do {
                  // (, line 175
                  // [, line 176
                  ket = cursor;
                  // literal, line 176
                  if (!(eq_s_b(1, "h")))
                  {
                      cursor = limit - v_2;
                      break lab1;
                  }
                  // ], line 176
                  bra = cursor;
                  if (!(in_grouping_b(g_CG, 99, 103)))
                  {
                      cursor = limit - v_2;
                      break lab1;
                  }
                  // call RV, line 176
                  if (!r_RV())
                  {
                      cursor = limit - v_2;
                      break lab1;
                  }
                  // delete, line 176
                  slice_del();
              } while (false);
              return true;
          }
  
          public boolean stem() {
              int v_1;
              int v_2;
              int v_3;
              int v_4;
              int v_5;
              int v_6;
              int v_7;
              // (, line 181
              // do, line 182
              v_1 = cursor;
              lab0: do {
                  // call prelude, line 182
                  if (!r_prelude())
                  {
                      break lab0;
                  }
              } while (false);
              cursor = v_1;
              // do, line 183
              v_2 = cursor;
              lab1: do {
                  // call mark_regions, line 183
                  if (!r_mark_regions())
                  {
                      break lab1;
                  }
              } while (false);
              cursor = v_2;
              // backwards, line 184
              limit_backward = cursor; cursor = limit;
              // (, line 184
              // do, line 185
              v_3 = limit - cursor;
              lab2: do {
                  // call attached_pronoun, line 185
                  if (!r_attached_pronoun())
                  {
                      break lab2;
                  }
              } while (false);
              cursor = limit - v_3;
              // do, line 186
              v_4 = limit - cursor;
              lab3: do {
                  // (, line 186
                  // or, line 186
                  lab4: do {
                      v_5 = limit - cursor;
                      lab5: do {
                          // call standard_suffix, line 186
                          if (!r_standard_suffix())
                          {
                              break lab5;
                          }
                          break lab4;
                      } while (false);
                      cursor = limit - v_5;
                      // call verb_suffix, line 186
                      if (!r_verb_suffix())
                      {
                          break lab3;
                      }
                  } while (false);
              } while (false);
              cursor = limit - v_4;
              // do, line 187
              v_6 = limit - cursor;
              lab6: do {
                  // call vowel_suffix, line 187
                  if (!r_vowel_suffix())
                  {
                      break lab6;
                  }
              } while (false);
              cursor = limit - v_6;
              cursor = limit_backward;            // do, line 189
              v_7 = cursor;
              lab7: do {
                  // call postlude, line 189
                  if (!r_postlude())
                  {
                      break lab7;
                  }
              } while (false);
              cursor = v_7;
              return true;
          }
  
  }
  
  