View Javadoc

1   // This file was generated automatically by the Snowball to Java compiler
2   
3   package org.tartarus.snowball.ext;
4   
5   import org.tartarus.snowball.Among;
6   
7    /***
8     * This class was automatically generated by a Snowball to Java compiler 
9     * It implements the stemming algorithm defined by a snowball script.
10    */
11  
12  public class finnishStemmer extends org.tartarus.snowball.SnowballStemmer {
13  
14  private static final long serialVersionUID = 1L;
15  
16          private final static finnishStemmer methodObject = new finnishStemmer ();
17  
18                  private final static Among a_0[] = {
19                      new Among ( "pa", -1, 1, "", methodObject ),
20                      new Among ( "sti", -1, 2, "", methodObject ),
21                      new Among ( "kaan", -1, 1, "", methodObject ),
22                      new Among ( "han", -1, 1, "", methodObject ),
23                      new Among ( "kin", -1, 1, "", methodObject ),
24                      new Among ( "h\u00E4n", -1, 1, "", methodObject ),
25                      new Among ( "k\u00E4\u00E4n", -1, 1, "", methodObject ),
26                      new Among ( "ko", -1, 1, "", methodObject ),
27                      new Among ( "p\u00E4", -1, 1, "", methodObject ),
28                      new Among ( "k\u00F6", -1, 1, "", methodObject )
29                  };
30  
31                  private final static Among a_1[] = {
32                      new Among ( "lla", -1, -1, "", methodObject ),
33                      new Among ( "na", -1, -1, "", methodObject ),
34                      new Among ( "ssa", -1, -1, "", methodObject ),
35                      new Among ( "ta", -1, -1, "", methodObject ),
36                      new Among ( "lta", 3, -1, "", methodObject ),
37                      new Among ( "sta", 3, -1, "", methodObject )
38                  };
39  
40                  private final static Among a_2[] = {
41                      new Among ( "ll\u00E4", -1, -1, "", methodObject ),
42                      new Among ( "n\u00E4", -1, -1, "", methodObject ),
43                      new Among ( "ss\u00E4", -1, -1, "", methodObject ),
44                      new Among ( "t\u00E4", -1, -1, "", methodObject ),
45                      new Among ( "lt\u00E4", 3, -1, "", methodObject ),
46                      new Among ( "st\u00E4", 3, -1, "", methodObject )
47                  };
48  
49                  private final static Among a_3[] = {
50                      new Among ( "lle", -1, -1, "", methodObject ),
51                      new Among ( "ine", -1, -1, "", methodObject )
52                  };
53  
54                  private final static Among a_4[] = {
55                      new Among ( "nsa", -1, 3, "", methodObject ),
56                      new Among ( "mme", -1, 3, "", methodObject ),
57                      new Among ( "nne", -1, 3, "", methodObject ),
58                      new Among ( "ni", -1, 2, "", methodObject ),
59                      new Among ( "si", -1, 1, "", methodObject ),
60                      new Among ( "an", -1, 4, "", methodObject ),
61                      new Among ( "en", -1, 6, "", methodObject ),
62                      new Among ( "\u00E4n", -1, 5, "", methodObject ),
63                      new Among ( "ns\u00E4", -1, 3, "", methodObject )
64                  };
65  
66                  private final static Among a_5[] = {
67                      new Among ( "aa", -1, -1, "", methodObject ),
68                      new Among ( "ee", -1, -1, "", methodObject ),
69                      new Among ( "ii", -1, -1, "", methodObject ),
70                      new Among ( "oo", -1, -1, "", methodObject ),
71                      new Among ( "uu", -1, -1, "", methodObject ),
72                      new Among ( "\u00E4\u00E4", -1, -1, "", methodObject ),
73                      new Among ( "\u00F6\u00F6", -1, -1, "", methodObject )
74                  };
75  
76                  private final static Among a_6[] = {
77                      new Among ( "a", -1, 8, "", methodObject ),
78                      new Among ( "lla", 0, -1, "", methodObject ),
79                      new Among ( "na", 0, -1, "", methodObject ),
80                      new Among ( "ssa", 0, -1, "", methodObject ),
81                      new Among ( "ta", 0, -1, "", methodObject ),
82                      new Among ( "lta", 4, -1, "", methodObject ),
83                      new Among ( "sta", 4, -1, "", methodObject ),
84                      new Among ( "tta", 4, 9, "", methodObject ),
85                      new Among ( "lle", -1, -1, "", methodObject ),
86                      new Among ( "ine", -1, -1, "", methodObject ),
87                      new Among ( "ksi", -1, -1, "", methodObject ),
88                      new Among ( "n", -1, 7, "", methodObject ),
89                      new Among ( "han", 11, 1, "", methodObject ),
90                      new Among ( "den", 11, -1, "r_VI", methodObject ),
91                      new Among ( "seen", 11, -1, "r_LONG", methodObject ),
92                      new Among ( "hen", 11, 2, "", methodObject ),
93                      new Among ( "tten", 11, -1, "r_VI", methodObject ),
94                      new Among ( "hin", 11, 3, "", methodObject ),
95                      new Among ( "siin", 11, -1, "r_VI", methodObject ),
96                      new Among ( "hon", 11, 4, "", methodObject ),
97                      new Among ( "h\u00E4n", 11, 5, "", methodObject ),
98                      new Among ( "h\u00F6n", 11, 6, "", methodObject ),
99                      new Among ( "\u00E4", -1, 8, "", methodObject ),
100                     new Among ( "ll\u00E4", 22, -1, "", methodObject ),
101                     new Among ( "n\u00E4", 22, -1, "", methodObject ),
102                     new Among ( "ss\u00E4", 22, -1, "", methodObject ),
103                     new Among ( "t\u00E4", 22, -1, "", methodObject ),
104                     new Among ( "lt\u00E4", 26, -1, "", methodObject ),
105                     new Among ( "st\u00E4", 26, -1, "", methodObject ),
106                     new Among ( "tt\u00E4", 26, 9, "", methodObject )
107                 };
108 
109                 private final static Among a_7[] = {
110                     new Among ( "eja", -1, -1, "", methodObject ),
111                     new Among ( "mma", -1, 1, "", methodObject ),
112                     new Among ( "imma", 1, -1, "", methodObject ),
113                     new Among ( "mpa", -1, 1, "", methodObject ),
114                     new Among ( "impa", 3, -1, "", methodObject ),
115                     new Among ( "mmi", -1, 1, "", methodObject ),
116                     new Among ( "immi", 5, -1, "", methodObject ),
117                     new Among ( "mpi", -1, 1, "", methodObject ),
118                     new Among ( "impi", 7, -1, "", methodObject ),
119                     new Among ( "ej\u00E4", -1, -1, "", methodObject ),
120                     new Among ( "mm\u00E4", -1, 1, "", methodObject ),
121                     new Among ( "imm\u00E4", 10, -1, "", methodObject ),
122                     new Among ( "mp\u00E4", -1, 1, "", methodObject ),
123                     new Among ( "imp\u00E4", 12, -1, "", methodObject )
124                 };
125 
126                 private final static Among a_8[] = {
127                     new Among ( "i", -1, -1, "", methodObject ),
128                     new Among ( "j", -1, -1, "", methodObject )
129                 };
130 
131                 private final static Among a_9[] = {
132                     new Among ( "mma", -1, 1, "", methodObject ),
133                     new Among ( "imma", 0, -1, "", methodObject )
134                 };
135 
136                 private static final char g_AEI[] = {17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
137 
138                 private static final char g_V1[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
139 
140                 private static final char g_V2[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
141 
142                 private static final char g_particle_end[] = {17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
143 
144         private boolean B_ending_removed;
145         private java.lang.StringBuilder S_x = new java.lang.StringBuilder();
146         private int I_p2;
147         private int I_p1;
148 
149                 private void copy_from(finnishStemmer other) {
150                     B_ending_removed = other.B_ending_removed;
151                     S_x = other.S_x;
152                     I_p2 = other.I_p2;
153                     I_p1 = other.I_p1;
154                     super.copy_from(other);
155                 }
156 
157                 private boolean r_mark_regions() {
158             int v_1;
159             int v_3;
160                     // (, line 41
161                     I_p1 = limit;
162                     I_p2 = limit;
163                     // goto, line 46
164                     golab0: while(true)
165                     {
166                         v_1 = cursor;
167                         lab1: do {
168                             if (!(in_grouping(g_V1, 97, 246)))
169                             {
170                                 break lab1;
171                             }
172                             cursor = v_1;
173                             break golab0;
174                         } while (false);
175                         cursor = v_1;
176                         if (cursor >= limit)
177                         {
178                             return false;
179                         }
180                         cursor++;
181                     }
182                     // gopast, line 46
183                     golab2: while(true)
184                     {
185                         lab3: do {
186                             if (!(out_grouping(g_V1, 97, 246)))
187                             {
188                                 break lab3;
189                             }
190                             break golab2;
191                         } while (false);
192                         if (cursor >= limit)
193                         {
194                             return false;
195                         }
196                         cursor++;
197                     }
198                     // setmark p1, line 46
199                     I_p1 = cursor;
200                     // goto, line 47
201                     golab4: while(true)
202                     {
203                         v_3 = cursor;
204                         lab5: do {
205                             if (!(in_grouping(g_V1, 97, 246)))
206                             {
207                                 break lab5;
208                             }
209                             cursor = v_3;
210                             break golab4;
211                         } while (false);
212                         cursor = v_3;
213                         if (cursor >= limit)
214                         {
215                             return false;
216                         }
217                         cursor++;
218                     }
219                     // gopast, line 47
220                     golab6: while(true)
221                     {
222                         lab7: do {
223                             if (!(out_grouping(g_V1, 97, 246)))
224                             {
225                                 break lab7;
226                             }
227                             break golab6;
228                         } while (false);
229                         if (cursor >= limit)
230                         {
231                             return false;
232                         }
233                         cursor++;
234                     }
235                     // setmark p2, line 47
236                     I_p2 = cursor;
237                     return true;
238                 }
239 
240                 private boolean r_R2() {
241                     if (!(I_p2 <= cursor))
242                     {
243                         return false;
244                     }
245                     return true;
246                 }
247 
248                 private boolean r_particle_etc() {
249             int among_var;
250             int v_1;
251             int v_2;
252                     // (, line 54
253                     // setlimit, line 55
254                     v_1 = limit - cursor;
255                     // tomark, line 55
256                     if (cursor < I_p1)
257                     {
258                         return false;
259                     }
260                     cursor = I_p1;
261                     v_2 = limit_backward;
262                     limit_backward = cursor;
263                     cursor = limit - v_1;
264                     // (, line 55
265                     // [, line 55
266                     ket = cursor;
267                     // substring, line 55
268                     among_var = find_among_b(a_0, 10);
269                     if (among_var == 0)
270                     {
271                         limit_backward = v_2;
272                         return false;
273                     }
274                     // ], line 55
275                     bra = cursor;
276                     limit_backward = v_2;
277                     switch(among_var) {
278                         case 0:
279                             return false;
280                         case 1:
281                             // (, line 62
282                             if (!(in_grouping_b(g_particle_end, 97, 246)))
283                             {
284                                 return false;
285                             }
286                             break;
287                         case 2:
288                             // (, line 64
289                             // call R2, line 64
290                             if (!r_R2())
291                             {
292                                 return false;
293                             }
294                             break;
295                     }
296                     // delete, line 66
297                     slice_del();
298                     return true;
299                 }
300 
301                 private boolean r_possessive() {
302             int among_var;
303             int v_1;
304             int v_2;
305             int v_3;
306                     // (, line 68
307                     // setlimit, line 69
308                     v_1 = limit - cursor;
309                     // tomark, line 69
310                     if (cursor < I_p1)
311                     {
312                         return false;
313                     }
314                     cursor = I_p1;
315                     v_2 = limit_backward;
316                     limit_backward = cursor;
317                     cursor = limit - v_1;
318                     // (, line 69
319                     // [, line 69
320                     ket = cursor;
321                     // substring, line 69
322                     among_var = find_among_b(a_4, 9);
323                     if (among_var == 0)
324                     {
325                         limit_backward = v_2;
326                         return false;
327                     }
328                     // ], line 69
329                     bra = cursor;
330                     limit_backward = v_2;
331                     switch(among_var) {
332                         case 0:
333                             return false;
334                         case 1:
335                             // (, line 72
336                             // not, line 72
337                             {
338                                 v_3 = limit - cursor;
339                                 lab0: do {
340                                     // literal, line 72
341                                     if (!(eq_s_b(1, "k")))
342                                     {
343                                         break lab0;
344                                     }
345                                     return false;
346                                 } while (false);
347                                 cursor = limit - v_3;
348                             }
349                             // delete, line 72
350                             slice_del();
351                             break;
352                         case 2:
353                             // (, line 74
354                             // delete, line 74
355                             slice_del();
356                             // [, line 74
357                             ket = cursor;
358                             // literal, line 74
359                             if (!(eq_s_b(3, "kse")))
360                             {
361                                 return false;
362                             }
363                             // ], line 74
364                             bra = cursor;
365                             // <-, line 74
366                             slice_from("ksi");
367                             break;
368                         case 3:
369                             // (, line 78
370                             // delete, line 78
371                             slice_del();
372                             break;
373                         case 4:
374                             // (, line 81
375                             // among, line 81
376                             if (find_among_b(a_1, 6) == 0)
377                             {
378                                 return false;
379                             }
380                             // delete, line 81
381                             slice_del();
382                             break;
383                         case 5:
384                             // (, line 83
385                             // among, line 83
386                             if (find_among_b(a_2, 6) == 0)
387                             {
388                                 return false;
389                             }
390                             // delete, line 84
391                             slice_del();
392                             break;
393                         case 6:
394                             // (, line 86
395                             // among, line 86
396                             if (find_among_b(a_3, 2) == 0)
397                             {
398                                 return false;
399                             }
400                             // delete, line 86
401                             slice_del();
402                             break;
403                     }
404                     return true;
405                 }
406 
407                 private boolean r_LONG() {
408                     // among, line 91
409                     if (find_among_b(a_5, 7) == 0)
410                     {
411                         return false;
412                     }
413                     return true;
414                 }
415 
416                 private boolean r_VI() {
417                     // (, line 93
418                     // literal, line 93
419                     if (!(eq_s_b(1, "i")))
420                     {
421                         return false;
422                     }
423                     if (!(in_grouping_b(g_V2, 97, 246)))
424                     {
425                         return false;
426                     }
427                     return true;
428                 }
429 
430                 private boolean r_case_ending() {
431             int among_var;
432             int v_1;
433             int v_2;
434             int v_3;
435             int v_4;
436             int v_5;
437                     // (, line 95
438                     // setlimit, line 96
439                     v_1 = limit - cursor;
440                     // tomark, line 96
441                     if (cursor < I_p1)
442                     {
443                         return false;
444                     }
445                     cursor = I_p1;
446                     v_2 = limit_backward;
447                     limit_backward = cursor;
448                     cursor = limit - v_1;
449                     // (, line 96
450                     // [, line 96
451                     ket = cursor;
452                     // substring, line 96
453                     among_var = find_among_b(a_6, 30);
454                     if (among_var == 0)
455                     {
456                         limit_backward = v_2;
457                         return false;
458                     }
459                     // ], line 96
460                     bra = cursor;
461                     limit_backward = v_2;
462                     switch(among_var) {
463                         case 0:
464                             return false;
465                         case 1:
466                             // (, line 98
467                             // literal, line 98
468                             if (!(eq_s_b(1, "a")))
469                             {
470                                 return false;
471                             }
472                             break;
473                         case 2:
474                             // (, line 99
475                             // literal, line 99
476                             if (!(eq_s_b(1, "e")))
477                             {
478                                 return false;
479                             }
480                             break;
481                         case 3:
482                             // (, line 100
483                             // literal, line 100
484                             if (!(eq_s_b(1, "i")))
485                             {
486                                 return false;
487                             }
488                             break;
489                         case 4:
490                             // (, line 101
491                             // literal, line 101
492                             if (!(eq_s_b(1, "o")))
493                             {
494                                 return false;
495                             }
496                             break;
497                         case 5:
498                             // (, line 102
499                             // literal, line 102
500                             if (!(eq_s_b(1, "\u00E4")))
501                             {
502                                 return false;
503                             }
504                             break;
505                         case 6:
506                             // (, line 103
507                             // literal, line 103
508                             if (!(eq_s_b(1, "\u00F6")))
509                             {
510                                 return false;
511                             }
512                             break;
513                         case 7:
514                             // (, line 111
515                             // try, line 111
516                             v_3 = limit - cursor;
517                             lab0: do {
518                                 // (, line 111
519                                 // and, line 113
520                                 v_4 = limit - cursor;
521                                 // or, line 112
522                                 lab1: do {
523                                     v_5 = limit - cursor;
524                                     lab2: do {
525                                         // call LONG, line 111
526                                         if (!r_LONG())
527                                         {
528                                             break lab2;
529                                         }
530                                         break lab1;
531                                     } while (false);
532                                     cursor = limit - v_5;
533                                     // literal, line 112
534                                     if (!(eq_s_b(2, "ie")))
535                                     {
536                                         cursor = limit - v_3;
537                                         break lab0;
538                                     }
539                                 } while (false);
540                                 cursor = limit - v_4;
541                                 // next, line 113
542                                 if (cursor <= limit_backward)
543                                 {
544                                     cursor = limit - v_3;
545                                     break lab0;
546                                 }
547                                 cursor--;
548                                 // ], line 113
549                                 bra = cursor;
550                             } while (false);
551                             break;
552                         case 8:
553                             // (, line 119
554                             if (!(in_grouping_b(g_V1, 97, 246)))
555                             {
556                                 return false;
557                             }
558                             if (!(out_grouping_b(g_V1, 97, 246)))
559                             {
560                                 return false;
561                             }
562                             break;
563                         case 9:
564                             // (, line 121
565                             // literal, line 121
566                             if (!(eq_s_b(1, "e")))
567                             {
568                                 return false;
569                             }
570                             break;
571                     }
572                     // delete, line 138
573                     slice_del();
574                     // set ending_removed, line 139
575                     B_ending_removed = true;
576                     return true;
577                 }
578 
579                 private boolean r_other_endings() {
580             int among_var;
581             int v_1;
582             int v_2;
583             int v_3;
584                     // (, line 141
585                     // setlimit, line 142
586                     v_1 = limit - cursor;
587                     // tomark, line 142
588                     if (cursor < I_p2)
589                     {
590                         return false;
591                     }
592                     cursor = I_p2;
593                     v_2 = limit_backward;
594                     limit_backward = cursor;
595                     cursor = limit - v_1;
596                     // (, line 142
597                     // [, line 142
598                     ket = cursor;
599                     // substring, line 142
600                     among_var = find_among_b(a_7, 14);
601                     if (among_var == 0)
602                     {
603                         limit_backward = v_2;
604                         return false;
605                     }
606                     // ], line 142
607                     bra = cursor;
608                     limit_backward = v_2;
609                     switch(among_var) {
610                         case 0:
611                             return false;
612                         case 1:
613                             // (, line 146
614                             // not, line 146
615                             {
616                                 v_3 = limit - cursor;
617                                 lab0: do {
618                                     // literal, line 146
619                                     if (!(eq_s_b(2, "po")))
620                                     {
621                                         break lab0;
622                                     }
623                                     return false;
624                                 } while (false);
625                                 cursor = limit - v_3;
626                             }
627                             break;
628                     }
629                     // delete, line 151
630                     slice_del();
631                     return true;
632                 }
633 
634                 private boolean r_i_plural() {
635             int v_1;
636             int v_2;
637                     // (, line 153
638                     // setlimit, line 154
639                     v_1 = limit - cursor;
640                     // tomark, line 154
641                     if (cursor < I_p1)
642                     {
643                         return false;
644                     }
645                     cursor = I_p1;
646                     v_2 = limit_backward;
647                     limit_backward = cursor;
648                     cursor = limit - v_1;
649                     // (, line 154
650                     // [, line 154
651                     ket = cursor;
652                     // substring, line 154
653                     if (find_among_b(a_8, 2) == 0)
654                     {
655                         limit_backward = v_2;
656                         return false;
657                     }
658                     // ], line 154
659                     bra = cursor;
660                     limit_backward = v_2;
661                     // delete, line 158
662                     slice_del();
663                     return true;
664                 }
665 
666                 private boolean r_t_plural() {
667             int among_var;
668             int v_1;
669             int v_2;
670             int v_3;
671             int v_4;
672             int v_5;
673             int v_6;
674                     // (, line 160
675                     // setlimit, line 161
676                     v_1 = limit - cursor;
677                     // tomark, line 161
678                     if (cursor < I_p1)
679                     {
680                         return false;
681                     }
682                     cursor = I_p1;
683                     v_2 = limit_backward;
684                     limit_backward = cursor;
685                     cursor = limit - v_1;
686                     // (, line 161
687                     // [, line 162
688                     ket = cursor;
689                     // literal, line 162
690                     if (!(eq_s_b(1, "t")))
691                     {
692                         limit_backward = v_2;
693                         return false;
694                     }
695                     // ], line 162
696                     bra = cursor;
697                     // test, line 162
698                     v_3 = limit - cursor;
699                     if (!(in_grouping_b(g_V1, 97, 246)))
700                     {
701                         limit_backward = v_2;
702                         return false;
703                     }
704                     cursor = limit - v_3;
705                     // delete, line 163
706                     slice_del();
707                     limit_backward = v_2;
708                     // setlimit, line 165
709                     v_4 = limit - cursor;
710                     // tomark, line 165
711                     if (cursor < I_p2)
712                     {
713                         return false;
714                     }
715                     cursor = I_p2;
716                     v_5 = limit_backward;
717                     limit_backward = cursor;
718                     cursor = limit - v_4;
719                     // (, line 165
720                     // [, line 165
721                     ket = cursor;
722                     // substring, line 165
723                     among_var = find_among_b(a_9, 2);
724                     if (among_var == 0)
725                     {
726                         limit_backward = v_5;
727                         return false;
728                     }
729                     // ], line 165
730                     bra = cursor;
731                     limit_backward = v_5;
732                     switch(among_var) {
733                         case 0:
734                             return false;
735                         case 1:
736                             // (, line 167
737                             // not, line 167
738                             {
739                                 v_6 = limit - cursor;
740                                 lab0: do {
741                                     // literal, line 167
742                                     if (!(eq_s_b(2, "po")))
743                                     {
744                                         break lab0;
745                                     }
746                                     return false;
747                                 } while (false);
748                                 cursor = limit - v_6;
749                             }
750                             break;
751                     }
752                     // delete, line 170
753                     slice_del();
754                     return true;
755                 }
756 
757                 private boolean r_tidy() {
758             int v_1;
759             int v_2;
760             int v_3;
761             int v_4;
762             int v_5;
763             int v_6;
764             int v_7;
765             int v_8;
766             int v_9;
767                     // (, line 172
768                     // setlimit, line 173
769                     v_1 = limit - cursor;
770                     // tomark, line 173
771                     if (cursor < I_p1)
772                     {
773                         return false;
774                     }
775                     cursor = I_p1;
776                     v_2 = limit_backward;
777                     limit_backward = cursor;
778                     cursor = limit - v_1;
779                     // (, line 173
780                     // do, line 174
781                     v_3 = limit - cursor;
782                     lab0: do {
783                         // (, line 174
784                         // and, line 174
785                         v_4 = limit - cursor;
786                         // call LONG, line 174
787                         if (!r_LONG())
788                         {
789                             break lab0;
790                         }
791                         cursor = limit - v_4;
792                         // (, line 174
793                         // [, line 174
794                         ket = cursor;
795                         // next, line 174
796                         if (cursor <= limit_backward)
797                         {
798                             break lab0;
799                         }
800                         cursor--;
801                         // ], line 174
802                         bra = cursor;
803                         // delete, line 174
804                         slice_del();
805                     } while (false);
806                     cursor = limit - v_3;
807                     // do, line 175
808                     v_5 = limit - cursor;
809                     lab1: do {
810                         // (, line 175
811                         // [, line 175
812                         ket = cursor;
813                         if (!(in_grouping_b(g_AEI, 97, 228)))
814                         {
815                             break lab1;
816                         }
817                         // ], line 175
818                         bra = cursor;
819                         if (!(out_grouping_b(g_V1, 97, 246)))
820                         {
821                             break lab1;
822                         }
823                         // delete, line 175
824                         slice_del();
825                     } while (false);
826                     cursor = limit - v_5;
827                     // do, line 176
828                     v_6 = limit - cursor;
829                     lab2: do {
830                         // (, line 176
831                         // [, line 176
832                         ket = cursor;
833                         // literal, line 176
834                         if (!(eq_s_b(1, "j")))
835                         {
836                             break lab2;
837                         }
838                         // ], line 176
839                         bra = cursor;
840                         // or, line 176
841                         lab3: do {
842                             v_7 = limit - cursor;
843                             lab4: do {
844                                 // literal, line 176
845                                 if (!(eq_s_b(1, "o")))
846                                 {
847                                     break lab4;
848                                 }
849                                 break lab3;
850                             } while (false);
851                             cursor = limit - v_7;
852                             // literal, line 176
853                             if (!(eq_s_b(1, "u")))
854                             {
855                                 break lab2;
856                             }
857                         } while (false);
858                         // delete, line 176
859                         slice_del();
860                     } while (false);
861                     cursor = limit - v_6;
862                     // do, line 177
863                     v_8 = limit - cursor;
864                     lab5: do {
865                         // (, line 177
866                         // [, line 177
867                         ket = cursor;
868                         // literal, line 177
869                         if (!(eq_s_b(1, "o")))
870                         {
871                             break lab5;
872                         }
873                         // ], line 177
874                         bra = cursor;
875                         // literal, line 177
876                         if (!(eq_s_b(1, "j")))
877                         {
878                             break lab5;
879                         }
880                         // delete, line 177
881                         slice_del();
882                     } while (false);
883                     cursor = limit - v_8;
884                     limit_backward = v_2;
885                     // goto, line 179
886                     golab6: while(true)
887                     {
888                         v_9 = limit - cursor;
889                         lab7: do {
890                             if (!(out_grouping_b(g_V1, 97, 246)))
891                             {
892                                 break lab7;
893                             }
894                             cursor = limit - v_9;
895                             break golab6;
896                         } while (false);
897                         cursor = limit - v_9;
898                         if (cursor <= limit_backward)
899                         {
900                             return false;
901                         }
902                         cursor--;
903                     }
904                     // [, line 179
905                     ket = cursor;
906                     // next, line 179
907                     if (cursor <= limit_backward)
908                     {
909                         return false;
910                     }
911                     cursor--;
912                     // ], line 179
913                     bra = cursor;
914                     // -> x, line 179
915                     S_x = slice_to(S_x);
916                     // name x, line 179
917                     if (!(eq_v_b(S_x)))
918                     {
919                         return false;
920                     }
921                     // delete, line 179
922                     slice_del();
923                     return true;
924                 }
925 
926                 public boolean stem() {
927             int v_1;
928             int v_2;
929             int v_3;
930             int v_4;
931             int v_5;
932             int v_6;
933             int v_7;
934             int v_8;
935             int v_9;
936                     // (, line 183
937                     // do, line 185
938                     v_1 = cursor;
939                     lab0: do {
940                         // call mark_regions, line 185
941                         if (!r_mark_regions())
942                         {
943                             break lab0;
944                         }
945                     } while (false);
946                     cursor = v_1;
947                     // unset ending_removed, line 186
948                     B_ending_removed = false;
949                     // backwards, line 187
950                     limit_backward = cursor; cursor = limit;
951                     // (, line 187
952                     // do, line 188
953                     v_2 = limit - cursor;
954                     lab1: do {
955                         // call particle_etc, line 188
956                         if (!r_particle_etc())
957                         {
958                             break lab1;
959                         }
960                     } while (false);
961                     cursor = limit - v_2;
962                     // do, line 189
963                     v_3 = limit - cursor;
964                     lab2: do {
965                         // call possessive, line 189
966                         if (!r_possessive())
967                         {
968                             break lab2;
969                         }
970                     } while (false);
971                     cursor = limit - v_3;
972                     // do, line 190
973                     v_4 = limit - cursor;
974                     lab3: do {
975                         // call case_ending, line 190
976                         if (!r_case_ending())
977                         {
978                             break lab3;
979                         }
980                     } while (false);
981                     cursor = limit - v_4;
982                     // do, line 191
983                     v_5 = limit - cursor;
984                     lab4: do {
985                         // call other_endings, line 191
986                         if (!r_other_endings())
987                         {
988                             break lab4;
989                         }
990                     } while (false);
991                     cursor = limit - v_5;
992                     // or, line 192
993                     lab5: do {
994                         v_6 = limit - cursor;
995                         lab6: do {
996                             // (, line 192
997                             // Boolean test ending_removed, line 192
998                             if (!(B_ending_removed))
999                             {
1000                                 break lab6;
1001                             }
1002                             // do, line 192
1003                             v_7 = limit - cursor;
1004                             lab7: do {
1005                                 // call i_plural, line 192
1006                                 if (!r_i_plural())
1007                                 {
1008                                     break lab7;
1009                                 }
1010                             } while (false);
1011                             cursor = limit - v_7;
1012                             break lab5;
1013                         } while (false);
1014                         cursor = limit - v_6;
1015                         // do, line 192
1016                         v_8 = limit - cursor;
1017                         lab8: do {
1018                             // call t_plural, line 192
1019                             if (!r_t_plural())
1020                             {
1021                                 break lab8;
1022                             }
1023                         } while (false);
1024                         cursor = limit - v_8;
1025                     } while (false);
1026                     // do, line 193
1027                     v_9 = limit - cursor;
1028                     lab9: do {
1029                         // call tidy, line 193
1030                         if (!r_tidy())
1031                         {
1032                             break lab9;
1033                         }
1034                     } while (false);
1035                     cursor = limit - v_9;
1036                     cursor = limit_backward;                    return true;
1037                 }
1038 
1039         public boolean equals( Object o ) {
1040             return o instanceof finnishStemmer;
1041         }
1042 
1043         public int hashCode() {
1044             return finnishStemmer.class.getName().hashCode();
1045         }
1046 
1047 
1048 
1049 }
1050