xref: /Lucene/lucene/analysis/common/src/java/org/tartarus/snowball/ext/TamilStemmer.java (revision 0b1d8ccba6cf394f707a09217813a25ec1504e50)
1 // Generated by Snowball 2.0.0 - https://snowballstem.org/
2 
3 package org.tartarus.snowball.ext;
4 
5 import org.tartarus.snowball.Among;
6 
7 /**
8  * This class implements the stemming algorithm defined by a snowball script.
9  *
10  * <p>Generated by Snowball 2.0.0 - https://snowballstem.org/
11  */
12 @SuppressWarnings("unused")
13 public class TamilStemmer extends org.tartarus.snowball.SnowballStemmer {
14 
15   private static final long serialVersionUID = 1L;
16   private static final java.lang.invoke.MethodHandles.Lookup methodObject =
17       java.lang.invoke.MethodHandles.lookup();
18 
19   private static final Among a_0[] = {
20     new Among("\u0B95", -1, -1),
21     new Among("\u0B99", -1, -1),
22     new Among("\u0B9A", -1, -1),
23     new Among("\u0B9E", -1, -1),
24     new Among("\u0BA4", -1, -1),
25     new Among("\u0BA8", -1, -1),
26     new Among("\u0BAA", -1, -1),
27     new Among("\u0BAE", -1, -1),
28     new Among("\u0BAF", -1, -1),
29     new Among("\u0BB5", -1, -1)
30   };
31 
32   private static final Among a_1[] = {
33     new Among("\u0BA8\u0BCD\u0BA4", -1, -1),
34     new Among("\u0BA8\u0BCD\u0BA4\u0BCD", -1, -1),
35     new Among("\u0BA8\u0BCD", -1, -1)
36   };
37 
38   private static final Among a_2[] = {
39     new Among("\u0BBF", -1, -1), new Among("\u0BC0", -1, -1), new Among("\u0BC8", -1, -1)
40   };
41 
42   private static final Among a_3[] = {
43     new Among("\u0B95", -1, -1),
44     new Among("\u0B9A", -1, -1),
45     new Among("\u0B9F", -1, -1),
46     new Among("\u0BA4", -1, -1),
47     new Among("\u0BAA", -1, -1),
48     new Among("\u0BB1", -1, -1)
49   };
50 
51   private static final Among a_4[] = {
52     new Among("\u0B95", -1, -1),
53     new Among("\u0B9A", -1, -1),
54     new Among("\u0B9F", -1, -1),
55     new Among("\u0BA4", -1, -1),
56     new Among("\u0BAA", -1, -1),
57     new Among("\u0BB1", -1, -1)
58   };
59 
60   private static final Among a_5[] = {
61     new Among("\u0B95", -1, -1),
62     new Among("\u0B9A", -1, -1),
63     new Among("\u0B9F", -1, -1),
64     new Among("\u0BA4", -1, -1),
65     new Among("\u0BAA", -1, -1),
66     new Among("\u0BB1", -1, -1)
67   };
68 
69   private static final Among a_6[] = {
70     new Among("\u0BAF", -1, -1),
71     new Among("\u0BB0", -1, -1),
72     new Among("\u0BB2", -1, -1),
73     new Among("\u0BB3", -1, -1),
74     new Among("\u0BB4", -1, -1),
75     new Among("\u0BB5", -1, -1)
76   };
77 
78   private static final Among a_7[] = {
79     new Among("\u0B99", -1, -1),
80     new Among("\u0B9E", -1, -1),
81     new Among("\u0BA3", -1, -1),
82     new Among("\u0BA8", -1, -1),
83     new Among("\u0BA9", -1, -1),
84     new Among("\u0BAE", -1, -1)
85   };
86 
87   private static final Among a_8[] = {
88     new Among("\u0BAF", -1, -1), new Among("\u0BB5", -1, -1), new Among("\u0BB5\u0BCD", -1, -1)
89   };
90 
91   private static final Among a_9[] = {
92     new Among("\u0BBE", -1, -1),
93     new Among("\u0BBF", -1, -1),
94     new Among("\u0BC0", -1, -1),
95     new Among("\u0BC1", -1, -1),
96     new Among("\u0BC2", -1, -1),
97     new Among("\u0BC6", -1, -1),
98     new Among("\u0BC7", -1, -1),
99     new Among("\u0BC8", -1, -1)
100   };
101 
102   private static final Among a_10[] = {
103     new Among("\u0BBE", -1, -1),
104     new Among("\u0BBF", -1, -1),
105     new Among("\u0BC0", -1, -1),
106     new Among("\u0BC1", -1, -1),
107     new Among("\u0BC2", -1, -1),
108     new Among("\u0BC6", -1, -1),
109     new Among("\u0BC7", -1, -1),
110     new Among("\u0BC8", -1, -1)
111   };
112 
113   private static final Among a_11[] = {
114     new Among("\u0B85", -1, -1), new Among("\u0B87", -1, -1), new Among("\u0B89", -1, -1)
115   };
116 
117   private static final Among a_12[] = {
118     new Among("\u0B95", -1, -1),
119     new Among("\u0B99", -1, -1),
120     new Among("\u0B9A", -1, -1),
121     new Among("\u0B9E", -1, -1),
122     new Among("\u0BA4", -1, -1),
123     new Among("\u0BA8", -1, -1),
124     new Among("\u0BAA", -1, -1),
125     new Among("\u0BAE", -1, -1),
126     new Among("\u0BAF", -1, -1),
127     new Among("\u0BB5", -1, -1)
128   };
129 
130   private static final Among a_13[] = {
131     new Among("\u0B95", -1, -1),
132     new Among("\u0B9A", -1, -1),
133     new Among("\u0B9F", -1, -1),
134     new Among("\u0BA4", -1, -1),
135     new Among("\u0BAA", -1, -1),
136     new Among("\u0BB1", -1, -1)
137   };
138 
139   private static final Among a_14[] = {
140     new Among("\u0BBE", -1, -1), new Among("\u0BC7", -1, -1), new Among("\u0BCB", -1, -1)
141   };
142 
143   private static final Among a_15[] = {
144     new Among("\u0BAA\u0BBF", -1, -1), new Among("\u0BB5\u0BBF", -1, -1)
145   };
146 
147   private static final Among a_16[] = {
148     new Among("\u0BBE", -1, -1),
149     new Among("\u0BBF", -1, -1),
150     new Among("\u0BC0", -1, -1),
151     new Among("\u0BC1", -1, -1),
152     new Among("\u0BC2", -1, -1),
153     new Among("\u0BC6", -1, -1),
154     new Among("\u0BC7", -1, -1),
155     new Among("\u0BC8", -1, -1)
156   };
157 
158   private static final Among a_17[] = {
159     new Among("\u0BAA\u0B9F\u0BCD\u0B9F", -1, -1),
160     new Among("\u0BAA\u0B9F\u0BCD\u0B9F\u0BA3", -1, -1),
161     new Among("\u0BA4\u0BBE\u0BA9", -1, -1),
162     new Among("\u0BAA\u0B9F\u0BBF\u0BA4\u0BBE\u0BA9", 2, -1),
163     new Among("\u0B95\u0BC1\u0BB0\u0BBF\u0BAF", -1, -1),
164     new Among("\u0BAA\u0B9F\u0BBF", -1, -1),
165     new Among("\u0BAA\u0BB1\u0BCD\u0BB1\u0BBF", -1, -1),
166     new Among("\u0BAA\u0B9F\u0BC1", -1, -1),
167     new Among("\u0BB5\u0BBF\u0B9F\u0BC1", -1, -1),
168     new Among("\u0BAA\u0B9F\u0BCD\u0B9F\u0BC1", -1, -1),
169     new Among("\u0BB5\u0BBF\u0B9F\u0BCD\u0B9F\u0BC1", -1, -1),
170     new Among("\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1", -1, -1),
171     new Among("\u0BC6\u0BB2\u0BCD\u0BB2\u0BBE\u0BAE\u0BCD", -1, -1)
172   };
173 
174   private static final Among a_18[] = {
175     new Among("\u0B95", -1, -1),
176     new Among("\u0B9A", -1, -1),
177     new Among("\u0B9F", -1, -1),
178     new Among("\u0BA4", -1, -1),
179     new Among("\u0BAA", -1, -1),
180     new Among("\u0BB1", -1, -1)
181   };
182 
183   private static final Among a_19[] = {
184     new Among("\u0B95", -1, -1),
185     new Among("\u0B9A", -1, -1),
186     new Among("\u0B9F", -1, -1),
187     new Among("\u0BA4", -1, -1),
188     new Among("\u0BAA", -1, -1),
189     new Among("\u0BB1", -1, -1)
190   };
191 
192   private static final Among a_20[] = {
193     new Among("\u0BBE", -1, -1),
194     new Among("\u0BBF", -1, -1),
195     new Among("\u0BC0", -1, -1),
196     new Among("\u0BC1", -1, -1),
197     new Among("\u0BC2", -1, -1),
198     new Among("\u0BC6", -1, -1),
199     new Among("\u0BC7", -1, -1),
200     new Among("\u0BC8", -1, -1)
201   };
202 
203   private static final Among a_21[] = {
204     new Among("\u0BBE", -1, -1),
205     new Among("\u0BBF", -1, -1),
206     new Among("\u0BC0", -1, -1),
207     new Among("\u0BC1", -1, -1),
208     new Among("\u0BC2", -1, -1),
209     new Among("\u0BC6", -1, -1),
210     new Among("\u0BC7", -1, -1),
211     new Among("\u0BC8", -1, -1)
212   };
213 
214   private static final Among a_22[] = {
215     new Among("\u0BAA\u0B9F\u0BC1", -1, -1),
216     new Among("\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BCD", -1, -1)
217   };
218 
219   private static final Among a_23[] = {
220     new Among("\u0B85", -1, -1),
221     new Among("\u0B86", -1, -1),
222     new Among("\u0B87", -1, -1),
223     new Among("\u0B88", -1, -1),
224     new Among("\u0B89", -1, -1),
225     new Among("\u0B8A", -1, -1),
226     new Among("\u0B8E", -1, -1),
227     new Among("\u0B8F", -1, -1),
228     new Among("\u0B90", -1, -1),
229     new Among("\u0B92", -1, -1),
230     new Among("\u0B93", -1, -1),
231     new Among("\u0B94", -1, -1)
232   };
233 
234   private static final Among a_24[] = {
235     new Among("\u0BBE", -1, -1),
236     new Among("\u0BBF", -1, -1),
237     new Among("\u0BC0", -1, -1),
238     new Among("\u0BC1", -1, -1),
239     new Among("\u0BC2", -1, -1),
240     new Among("\u0BC6", -1, -1),
241     new Among("\u0BC7", -1, -1),
242     new Among("\u0BC8", -1, -1)
243   };
244 
245   private static final Among a_25[] = {
246     new Among("\u0B95\u0BBF\u0BB1", -1, -1),
247     new Among("\u0B95\u0BBF\u0BA9\u0BCD\u0BB1", -1, -1),
248     new Among("\u0BBE\u0BA8\u0BBF\u0BA9\u0BCD\u0BB1", -1, -1),
249     new Among("\u0B95\u0BBF\u0BB1\u0BCD", -1, -1),
250     new Among("\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BCD", -1, -1),
251     new Among("\u0BBE\u0BA8\u0BBF\u0BA9\u0BCD\u0BB1\u0BCD", -1, -1)
252   };
253 
254   private boolean B_found_vetrumai_urupu;
255   private boolean B_found_a_match;
256 
r_has_min_length()257   private boolean r_has_min_length() {
258     if (!(limit > 4)) {
259       return false;
260     }
261     return true;
262   }
263 
r_fix_va_start()264   private boolean r_fix_va_start() {
265     lab0:
266     {
267       int v_1 = cursor;
268       lab1:
269       {
270         int v_2 = cursor;
271         int v_3 = cursor;
272         lab2:
273         {
274           if (!(eq_s("\u0BB5\u0BCB"))) {
275             cursor = v_3;
276             break lab2;
277           }
278         }
279         cursor = v_2;
280         bra = cursor;
281         if (!(eq_s("\u0BB5\u0BCB"))) {
282           break lab1;
283         }
284         ket = cursor;
285         slice_from("\u0B93");
286         break lab0;
287       }
288       cursor = v_1;
289       lab3:
290       {
291         int v_4 = cursor;
292         int v_5 = cursor;
293         lab4:
294         {
295           if (!(eq_s("\u0BB5\u0BCA"))) {
296             cursor = v_5;
297             break lab4;
298           }
299         }
300         cursor = v_4;
301         bra = cursor;
302         if (!(eq_s("\u0BB5\u0BCA"))) {
303           break lab3;
304         }
305         ket = cursor;
306         slice_from("\u0B92");
307         break lab0;
308       }
309       cursor = v_1;
310       lab5:
311       {
312         int v_6 = cursor;
313         int v_7 = cursor;
314         lab6:
315         {
316           if (!(eq_s("\u0BB5\u0BC1"))) {
317             cursor = v_7;
318             break lab6;
319           }
320         }
321         cursor = v_6;
322         bra = cursor;
323         if (!(eq_s("\u0BB5\u0BC1"))) {
324           break lab5;
325         }
326         ket = cursor;
327         slice_from("\u0B89");
328         break lab0;
329       }
330       cursor = v_1;
331       int v_8 = cursor;
332       int v_9 = cursor;
333       lab7:
334       {
335         if (!(eq_s("\u0BB5\u0BC2"))) {
336           cursor = v_9;
337           break lab7;
338         }
339       }
340       cursor = v_8;
341       bra = cursor;
342       if (!(eq_s("\u0BB5\u0BC2"))) {
343         return false;
344       }
345       ket = cursor;
346       slice_from("\u0B8A");
347     }
348     return true;
349   }
350 
r_fix_endings()351   private boolean r_fix_endings() {
352     int v_1 = cursor;
353     lab0:
354     {
355       while (true) {
356         int v_2 = cursor;
357         lab1:
358         {
359           if (!r_fix_ending()) {
360             break lab1;
361           }
362           continue;
363         }
364         cursor = v_2;
365         break;
366       }
367     }
368     cursor = v_1;
369     return true;
370   }
371 
r_remove_question_prefixes()372   private boolean r_remove_question_prefixes() {
373     bra = cursor;
374     if (!(eq_s("\u0B8E"))) {
375       return false;
376     }
377     if (find_among(a_0) == 0) {
378       return false;
379     }
380     if (!(eq_s("\u0BCD"))) {
381       return false;
382     }
383     ket = cursor;
384     slice_del();
385     int v_1 = cursor;
386     r_fix_va_start();
387     cursor = v_1;
388     return true;
389   }
390 
r_fix_ending()391   private boolean r_fix_ending() {
392     if (!(limit > 3)) {
393       return false;
394     }
395     limit_backward = cursor;
396     cursor = limit;
397     lab0:
398     {
399       int v_1 = limit - cursor;
400       lab1:
401       {
402         ket = cursor;
403         if (find_among_b(a_1) == 0) {
404           break lab1;
405         }
406         bra = cursor;
407         slice_del();
408         break lab0;
409       }
410       cursor = limit - v_1;
411       lab2:
412       {
413         ket = cursor;
414         if (!(eq_s_b("\u0BAF\u0BCD"))) {
415           break lab2;
416         }
417         int v_2 = limit - cursor;
418         if (find_among_b(a_2) == 0) {
419           break lab2;
420         }
421         cursor = limit - v_2;
422         bra = cursor;
423         slice_del();
424         break lab0;
425       }
426       cursor = limit - v_1;
427       lab3:
428       {
429         ket = cursor;
430         lab4:
431         {
432           int v_3 = limit - cursor;
433           lab5:
434           {
435             if (!(eq_s_b("\u0B9F\u0BCD\u0BAA\u0BCD"))) {
436               break lab5;
437             }
438             break lab4;
439           }
440           cursor = limit - v_3;
441           if (!(eq_s_b("\u0B9F\u0BCD\u0B95\u0BCD"))) {
442             break lab3;
443           }
444         }
445         bra = cursor;
446         slice_from("\u0BB3\u0BCD");
447         break lab0;
448       }
449       cursor = limit - v_1;
450       lab6:
451       {
452         ket = cursor;
453         if (!(eq_s_b("\u0BA9\u0BCD\u0BB1\u0BCD"))) {
454           break lab6;
455         }
456         bra = cursor;
457         slice_from("\u0BB2\u0BCD");
458         break lab0;
459       }
460       cursor = limit - v_1;
461       lab7:
462       {
463         ket = cursor;
464         if (!(eq_s_b("\u0BB1\u0BCD\u0B95\u0BCD"))) {
465           break lab7;
466         }
467         bra = cursor;
468         slice_from("\u0BB2\u0BCD");
469         break lab0;
470       }
471       cursor = limit - v_1;
472       lab8:
473       {
474         ket = cursor;
475         if (!(eq_s_b("\u0B9F\u0BCD\u0B9F\u0BCD"))) {
476           break lab8;
477         }
478         bra = cursor;
479         slice_from("\u0B9F\u0BC1");
480         break lab0;
481       }
482       cursor = limit - v_1;
483       lab9:
484       {
485         if (!(B_found_vetrumai_urupu)) {
486           break lab9;
487         }
488         ket = cursor;
489         if (!(eq_s_b("\u0BA4\u0BCD\u0BA4\u0BCD"))) {
490           break lab9;
491         }
492         int v_4 = limit - cursor;
493         {
494           int v_5 = limit - cursor;
495           lab10:
496           {
497             if (!(eq_s_b("\u0BC8"))) {
498               break lab10;
499             }
500             break lab9;
501           }
502           cursor = limit - v_5;
503         }
504         cursor = limit - v_4;
505         bra = cursor;
506         slice_from("\u0BAE\u0BCD");
507         bra = cursor;
508         break lab0;
509       }
510       cursor = limit - v_1;
511       lab11:
512       {
513         ket = cursor;
514         lab12:
515         {
516           int v_6 = limit - cursor;
517           lab13:
518           {
519             if (!(eq_s_b("\u0BC1\u0B95\u0BCD"))) {
520               break lab13;
521             }
522             break lab12;
523           }
524           cursor = limit - v_6;
525           if (!(eq_s_b("\u0BC1\u0B95\u0BCD\u0B95\u0BCD"))) {
526             break lab11;
527           }
528         }
529         bra = cursor;
530         slice_from("\u0BCD");
531         break lab0;
532       }
533       cursor = limit - v_1;
534       lab14:
535       {
536         ket = cursor;
537         if (!(eq_s_b("\u0BCD"))) {
538           break lab14;
539         }
540         if (find_among_b(a_3) == 0) {
541           break lab14;
542         }
543         if (!(eq_s_b("\u0BCD"))) {
544           break lab14;
545         }
546         if (find_among_b(a_4) == 0) {
547           break lab14;
548         }
549         bra = cursor;
550         slice_del();
551         break lab0;
552       }
553       cursor = limit - v_1;
554       lab15:
555       {
556         ket = cursor;
557         if (!(eq_s_b("\u0BC1\u0B95\u0BCD"))) {
558           break lab15;
559         }
560         bra = cursor;
561         slice_from("\u0BCD");
562         break lab0;
563       }
564       cursor = limit - v_1;
565       lab16:
566       {
567         ket = cursor;
568         if (!(eq_s_b("\u0BCD"))) {
569           break lab16;
570         }
571         if (find_among_b(a_5) == 0) {
572           break lab16;
573         }
574         bra = cursor;
575         slice_del();
576         break lab0;
577       }
578       cursor = limit - v_1;
579       lab17:
580       {
581         ket = cursor;
582         if (!(eq_s_b("\u0BCD"))) {
583           break lab17;
584         }
585         lab18:
586         {
587           int v_7 = limit - cursor;
588           lab19:
589           {
590             if (find_among_b(a_6) == 0) {
591               break lab19;
592             }
593             break lab18;
594           }
595           cursor = limit - v_7;
596           if (find_among_b(a_7) == 0) {
597             break lab17;
598           }
599         }
600         if (!(eq_s_b("\u0BCD"))) {
601           break lab17;
602         }
603         bra = cursor;
604         slice_from("\u0BCD");
605         break lab0;
606       }
607       cursor = limit - v_1;
608       lab20:
609       {
610         ket = cursor;
611         if (find_among_b(a_8) == 0) {
612           break lab20;
613         }
614         bra = cursor;
615         slice_del();
616         break lab0;
617       }
618       cursor = limit - v_1;
619       lab21:
620       {
621         ket = cursor;
622         if (!(eq_s_b("\u0BA9\u0BC1"))) {
623           break lab21;
624         }
625         int v_8 = limit - cursor;
626         {
627           int v_9 = limit - cursor;
628           lab22:
629           {
630             if (find_among_b(a_9) == 0) {
631               break lab22;
632             }
633             break lab21;
634           }
635           cursor = limit - v_9;
636         }
637         cursor = limit - v_8;
638         bra = cursor;
639         slice_del();
640         break lab0;
641       }
642       cursor = limit - v_1;
643       lab23:
644       {
645         ket = cursor;
646         if (!(eq_s_b("\u0B99\u0BCD"))) {
647           break lab23;
648         }
649         int v_10 = limit - cursor;
650         {
651           int v_11 = limit - cursor;
652           lab24:
653           {
654             if (!(eq_s_b("\u0BC8"))) {
655               break lab24;
656             }
657             break lab23;
658           }
659           cursor = limit - v_11;
660         }
661         cursor = limit - v_10;
662         bra = cursor;
663         slice_from("\u0BAE\u0BCD");
664         break lab0;
665       }
666       cursor = limit - v_1;
667       lab25:
668       {
669         ket = cursor;
670         if (!(eq_s_b("\u0B99\u0BCD"))) {
671           break lab25;
672         }
673         bra = cursor;
674         slice_del();
675         break lab0;
676       }
677       cursor = limit - v_1;
678       ket = cursor;
679       if (!(eq_s_b("\u0BCD"))) {
680         return false;
681       }
682       int v_12 = limit - cursor;
683       lab26:
684       {
685         int v_13 = limit - cursor;
686         lab27:
687         {
688           if (find_among_b(a_10) == 0) {
689             break lab27;
690           }
691           break lab26;
692         }
693         cursor = limit - v_13;
694         if (!(eq_s_b("\u0BCD"))) {
695           return false;
696         }
697       }
698       cursor = limit - v_12;
699       bra = cursor;
700       slice_del();
701     }
702     cursor = limit_backward;
703     return true;
704   }
705 
r_remove_pronoun_prefixes()706   private boolean r_remove_pronoun_prefixes() {
707     B_found_a_match = false;
708     bra = cursor;
709     if (find_among(a_11) == 0) {
710       return false;
711     }
712     if (find_among(a_12) == 0) {
713       return false;
714     }
715     if (!(eq_s("\u0BCD"))) {
716       return false;
717     }
718     ket = cursor;
719     slice_del();
720     B_found_a_match = true;
721     int v_1 = cursor;
722     r_fix_va_start();
723     cursor = v_1;
724     return true;
725   }
726 
r_remove_plural_suffix()727   private boolean r_remove_plural_suffix() {
728     B_found_a_match = false;
729     limit_backward = cursor;
730     cursor = limit;
731     lab0:
732     {
733       int v_1 = limit - cursor;
734       lab1:
735       {
736         ket = cursor;
737         if (!(eq_s_b("\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD"))) {
738           break lab1;
739         }
740         int v_2 = limit - cursor;
741         {
742           int v_3 = limit - cursor;
743           lab2:
744           {
745             if (find_among_b(a_13) == 0) {
746               break lab2;
747             }
748             break lab1;
749           }
750           cursor = limit - v_3;
751         }
752         cursor = limit - v_2;
753         bra = cursor;
754         slice_from("\u0BCD");
755         break lab0;
756       }
757       cursor = limit - v_1;
758       lab3:
759       {
760         ket = cursor;
761         if (!(eq_s_b("\u0BB1\u0BCD\u0B95\u0BB3\u0BCD"))) {
762           break lab3;
763         }
764         bra = cursor;
765         slice_from("\u0BB2\u0BCD");
766         break lab0;
767       }
768       cursor = limit - v_1;
769       lab4:
770       {
771         ket = cursor;
772         if (!(eq_s_b("\u0B9F\u0BCD\u0B95\u0BB3\u0BCD"))) {
773           break lab4;
774         }
775         bra = cursor;
776         slice_from("\u0BB3\u0BCD");
777         break lab0;
778       }
779       cursor = limit - v_1;
780       ket = cursor;
781       if (!(eq_s_b("\u0B95\u0BB3\u0BCD"))) {
782         return false;
783       }
784       bra = cursor;
785       slice_del();
786     }
787     B_found_a_match = true;
788     cursor = limit_backward;
789     return true;
790   }
791 
r_remove_question_suffixes()792   private boolean r_remove_question_suffixes() {
793     if (!r_has_min_length()) {
794       return false;
795     }
796     B_found_a_match = false;
797     limit_backward = cursor;
798     cursor = limit;
799     int v_1 = limit - cursor;
800     lab0:
801     {
802       ket = cursor;
803       if (find_among_b(a_14) == 0) {
804         break lab0;
805       }
806       bra = cursor;
807       slice_from("\u0BCD");
808       B_found_a_match = true;
809     }
810     cursor = limit - v_1;
811     cursor = limit_backward;
812     r_fix_endings();
813     return true;
814   }
815 
r_remove_command_suffixes()816   private boolean r_remove_command_suffixes() {
817     if (!r_has_min_length()) {
818       return false;
819     }
820     B_found_a_match = false;
821     limit_backward = cursor;
822     cursor = limit;
823     ket = cursor;
824     if (find_among_b(a_15) == 0) {
825       return false;
826     }
827     bra = cursor;
828     slice_del();
829     B_found_a_match = true;
830     cursor = limit_backward;
831     return true;
832   }
833 
r_remove_um()834   private boolean r_remove_um() {
835     B_found_a_match = false;
836     if (!r_has_min_length()) {
837       return false;
838     }
839     limit_backward = cursor;
840     cursor = limit;
841     ket = cursor;
842     if (!(eq_s_b("\u0BC1\u0BAE\u0BCD"))) {
843       return false;
844     }
845     bra = cursor;
846     slice_from("\u0BCD");
847     B_found_a_match = true;
848     cursor = limit_backward;
849     int v_1 = cursor;
850     r_fix_ending();
851     cursor = v_1;
852     return true;
853   }
854 
r_remove_common_word_endings()855   private boolean r_remove_common_word_endings() {
856     B_found_a_match = false;
857     if (!r_has_min_length()) {
858       return false;
859     }
860     limit_backward = cursor;
861     cursor = limit;
862     lab0:
863     {
864       int v_1 = limit - cursor;
865       lab1:
866       {
867         int v_2 = limit - cursor;
868         ket = cursor;
869         lab2:
870         {
871           int v_3 = limit - cursor;
872           lab3:
873           {
874             if (!(eq_s_b("\u0BC1\u0B9F\u0BA9\u0BCD"))) {
875               break lab3;
876             }
877             break lab2;
878           }
879           cursor = limit - v_3;
880           lab4:
881           {
882             if (!(eq_s_b("\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8"))) {
883               break lab4;
884             }
885             break lab2;
886           }
887           cursor = limit - v_3;
888           lab5:
889           {
890             if (!(eq_s_b("\u0BBF\u0B9F\u0BAE\u0BCD"))) {
891               break lab5;
892             }
893             break lab2;
894           }
895           cursor = limit - v_3;
896           lab6:
897           {
898             if (!(eq_s_b("\u0BBF\u0BA9\u0BCD\u0BB1\u0BBF"))) {
899               break lab6;
900             }
901             break lab2;
902           }
903           cursor = limit - v_3;
904           lab7:
905           {
906             if (!(eq_s_b("\u0BBE\u0B95\u0BBF"))) {
907               break lab7;
908             }
909             break lab2;
910           }
911           cursor = limit - v_3;
912           lab8:
913           {
914             if (!(eq_s_b("\u0BBE\u0B95\u0BBF\u0BAF"))) {
915               break lab8;
916             }
917             break lab2;
918           }
919           cursor = limit - v_3;
920           lab9:
921           {
922             if (!(eq_s_b("\u0BC6\u0BA9\u0BCD\u0BB1\u0BC1"))) {
923               break lab9;
924             }
925             break lab2;
926           }
927           cursor = limit - v_3;
928           lab10:
929           {
930             if (!(eq_s_b("\u0BC1\u0BB3\u0BCD\u0BB3"))) {
931               break lab10;
932             }
933             break lab2;
934           }
935           cursor = limit - v_3;
936           lab11:
937           {
938             if (!(eq_s_b("\u0BC1\u0B9F\u0BC8\u0BAF"))) {
939               break lab11;
940             }
941             break lab2;
942           }
943           cursor = limit - v_3;
944           lab12:
945           {
946             if (!(eq_s_b("\u0BC1\u0B9F\u0BC8"))) {
947               break lab12;
948             }
949             break lab2;
950           }
951           cursor = limit - v_3;
952           lab13:
953           {
954             if (!(eq_s_b("\u0BC6\u0BA9\u0BC1\u0BAE\u0BCD"))) {
955               break lab13;
956             }
957             break lab2;
958           }
959           cursor = limit - v_3;
960           lab14:
961           {
962             if (!(eq_s_b("\u0BB2\u0BCD\u0BB2"))) {
963               break lab14;
964             }
965             int v_4 = limit - cursor;
966             {
967               int v_5 = limit - cursor;
968               lab15:
969               {
970                 if (find_among_b(a_16) == 0) {
971                   break lab15;
972                 }
973                 break lab14;
974               }
975               cursor = limit - v_5;
976             }
977             cursor = limit - v_4;
978             break lab2;
979           }
980           cursor = limit - v_3;
981           lab16:
982           {
983             if (!(eq_s_b("\u0BC6\u0BA9"))) {
984               break lab16;
985             }
986             break lab2;
987           }
988           cursor = limit - v_3;
989           if (!(eq_s_b("\u0BBE\u0B95\u0BBF"))) {
990             break lab1;
991           }
992         }
993         bra = cursor;
994         slice_from("\u0BCD");
995         B_found_a_match = true;
996         cursor = limit - v_2;
997         break lab0;
998       }
999       cursor = limit - v_1;
1000       int v_6 = limit - cursor;
1001       ket = cursor;
1002       if (find_among_b(a_17) == 0) {
1003         return false;
1004       }
1005       bra = cursor;
1006       slice_del();
1007       B_found_a_match = true;
1008       cursor = limit - v_6;
1009     }
1010     cursor = limit_backward;
1011     r_fix_endings();
1012     return true;
1013   }
1014 
r_remove_vetrumai_urupukal()1015   private boolean r_remove_vetrumai_urupukal() {
1016     B_found_a_match = false;
1017     B_found_vetrumai_urupu = false;
1018     if (!r_has_min_length()) {
1019       return false;
1020     }
1021     limit_backward = cursor;
1022     cursor = limit;
1023     lab0:
1024     {
1025       int v_1 = limit - cursor;
1026       lab1:
1027       {
1028         int v_2 = limit - cursor;
1029         ket = cursor;
1030         if (!(eq_s_b("\u0BA9\u0BC8"))) {
1031           break lab1;
1032         }
1033         bra = cursor;
1034         slice_del();
1035         cursor = limit - v_2;
1036         break lab0;
1037       }
1038       cursor = limit - v_1;
1039       lab2:
1040       {
1041         int v_3 = limit - cursor;
1042         ket = cursor;
1043         lab3:
1044         {
1045           int v_4 = limit - cursor;
1046           lab4:
1047           {
1048             lab5:
1049             {
1050               int v_5 = limit - cursor;
1051               lab6:
1052               {
1053                 if (!(eq_s_b("\u0BBF\u0BA9\u0BC8"))) {
1054                   break lab6;
1055                 }
1056                 break lab5;
1057               }
1058               cursor = limit - v_5;
1059               if (!(eq_s_b("\u0BC8"))) {
1060                 break lab4;
1061               }
1062             }
1063             int v_6 = limit - cursor;
1064             {
1065               int v_7 = limit - cursor;
1066               lab7:
1067               {
1068                 if (find_among_b(a_18) == 0) {
1069                   break lab7;
1070                 }
1071                 break lab4;
1072               }
1073               cursor = limit - v_7;
1074             }
1075             cursor = limit - v_6;
1076             break lab3;
1077           }
1078           cursor = limit - v_4;
1079           if (!(eq_s_b("\u0BC8"))) {
1080             break lab2;
1081           }
1082           int v_8 = limit - cursor;
1083           if (find_among_b(a_19) == 0) {
1084             break lab2;
1085           }
1086           if (!(eq_s_b("\u0BCD"))) {
1087             break lab2;
1088           }
1089           cursor = limit - v_8;
1090         }
1091         bra = cursor;
1092         slice_from("\u0BCD");
1093         cursor = limit - v_3;
1094         break lab0;
1095       }
1096       cursor = limit - v_1;
1097       lab8:
1098       {
1099         int v_9 = limit - cursor;
1100         ket = cursor;
1101         lab9:
1102         {
1103           int v_10 = limit - cursor;
1104           lab10:
1105           {
1106             if (!(eq_s_b("\u0BCA\u0B9F\u0BC1"))) {
1107               break lab10;
1108             }
1109             break lab9;
1110           }
1111           cursor = limit - v_10;
1112           lab11:
1113           {
1114             if (!(eq_s_b("\u0BCB\u0B9F\u0BC1"))) {
1115               break lab11;
1116             }
1117             break lab9;
1118           }
1119           cursor = limit - v_10;
1120           lab12:
1121           {
1122             if (!(eq_s_b("\u0BBF\u0BB2\u0BCD"))) {
1123               break lab12;
1124             }
1125             break lab9;
1126           }
1127           cursor = limit - v_10;
1128           lab13:
1129           {
1130             if (!(eq_s_b("\u0BBF\u0BB1\u0BCD"))) {
1131               break lab13;
1132             }
1133             break lab9;
1134           }
1135           cursor = limit - v_10;
1136           lab14:
1137           {
1138             if (!(eq_s_b("\u0BBF\u0BA9\u0BCD"))) {
1139               break lab14;
1140             }
1141             int v_11 = limit - cursor;
1142             {
1143               int v_12 = limit - cursor;
1144               lab15:
1145               {
1146                 if (!(eq_s_b("\u0BAE"))) {
1147                   break lab15;
1148                 }
1149                 break lab14;
1150               }
1151               cursor = limit - v_12;
1152             }
1153             cursor = limit - v_11;
1154             break lab9;
1155           }
1156           cursor = limit - v_10;
1157           lab16:
1158           {
1159             if (!(eq_s_b("\u0BBF\u0BA9\u0BCD\u0BB1\u0BC1"))) {
1160               break lab16;
1161             }
1162             break lab9;
1163           }
1164           cursor = limit - v_10;
1165           lab17:
1166           {
1167             if (!(eq_s_b("\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1"))) {
1168               break lab17;
1169             }
1170             break lab9;
1171           }
1172           cursor = limit - v_10;
1173           lab18:
1174           {
1175             if (!(eq_s_b("\u0BB5\u0BBF\u0B9F"))) {
1176               break lab18;
1177             }
1178             break lab9;
1179           }
1180           cursor = limit - v_10;
1181           lab19:
1182           {
1183             if (!(limit >= 7)) {
1184               break lab19;
1185             }
1186             if (!(eq_s_b("\u0BBF\u0B9F\u0BAE\u0BCD"))) {
1187               break lab19;
1188             }
1189             break lab9;
1190           }
1191           cursor = limit - v_10;
1192           lab20:
1193           {
1194             if (!(eq_s_b("\u0BBE\u0BB2\u0BCD"))) {
1195               break lab20;
1196             }
1197             break lab9;
1198           }
1199           cursor = limit - v_10;
1200           lab21:
1201           {
1202             if (!(eq_s_b("\u0BC1\u0B9F\u0BC8"))) {
1203               break lab21;
1204             }
1205             break lab9;
1206           }
1207           cursor = limit - v_10;
1208           lab22:
1209           {
1210             if (!(eq_s_b("\u0BBE\u0BAE\u0BB2\u0BCD"))) {
1211               break lab22;
1212             }
1213             break lab9;
1214           }
1215           cursor = limit - v_10;
1216           lab23:
1217           {
1218             if (!(eq_s_b("\u0BB2\u0BCD"))) {
1219               break lab23;
1220             }
1221             int v_13 = limit - cursor;
1222             {
1223               int v_14 = limit - cursor;
1224               lab24:
1225               {
1226                 if (find_among_b(a_20) == 0) {
1227                   break lab24;
1228                 }
1229                 break lab23;
1230               }
1231               cursor = limit - v_14;
1232             }
1233             cursor = limit - v_13;
1234             break lab9;
1235           }
1236           cursor = limit - v_10;
1237           if (!(eq_s_b("\u0BC1\u0BB3\u0BCD"))) {
1238             break lab8;
1239           }
1240         }
1241         bra = cursor;
1242         slice_from("\u0BCD");
1243         cursor = limit - v_9;
1244         break lab0;
1245       }
1246       cursor = limit - v_1;
1247       lab25:
1248       {
1249         int v_15 = limit - cursor;
1250         ket = cursor;
1251         lab26:
1252         {
1253           int v_16 = limit - cursor;
1254           lab27:
1255           {
1256             if (!(eq_s_b("\u0B95\u0BA3\u0BCD"))) {
1257               break lab27;
1258             }
1259             break lab26;
1260           }
1261           cursor = limit - v_16;
1262           lab28:
1263           {
1264             if (!(eq_s_b("\u0BAE\u0BC1\u0BA9\u0BCD"))) {
1265               break lab28;
1266             }
1267             break lab26;
1268           }
1269           cursor = limit - v_16;
1270           lab29:
1271           {
1272             if (!(eq_s_b("\u0BAE\u0BC7\u0BB2\u0BCD"))) {
1273               break lab29;
1274             }
1275             break lab26;
1276           }
1277           cursor = limit - v_16;
1278           lab30:
1279           {
1280             if (!(eq_s_b("\u0BAE\u0BC7\u0BB1\u0BCD"))) {
1281               break lab30;
1282             }
1283             break lab26;
1284           }
1285           cursor = limit - v_16;
1286           lab31:
1287           {
1288             if (!(eq_s_b("\u0B95\u0BC0\u0BB4\u0BCD"))) {
1289               break lab31;
1290             }
1291             break lab26;
1292           }
1293           cursor = limit - v_16;
1294           lab32:
1295           {
1296             if (!(eq_s_b("\u0BAA\u0BBF\u0BA9\u0BCD"))) {
1297               break lab32;
1298             }
1299             break lab26;
1300           }
1301           cursor = limit - v_16;
1302           if (!(eq_s_b("\u0BA4\u0BC1"))) {
1303             break lab25;
1304           }
1305           int v_17 = limit - cursor;
1306           {
1307             int v_18 = limit - cursor;
1308             lab33:
1309             {
1310               if (find_among_b(a_21) == 0) {
1311                 break lab33;
1312               }
1313               break lab25;
1314             }
1315             cursor = limit - v_18;
1316           }
1317           cursor = limit - v_17;
1318         }
1319         bra = cursor;
1320         slice_del();
1321         cursor = limit - v_15;
1322         break lab0;
1323       }
1324       cursor = limit - v_1;
1325       int v_19 = limit - cursor;
1326       ket = cursor;
1327       if (!(eq_s_b("\u0BC0"))) {
1328         return false;
1329       }
1330       bra = cursor;
1331       slice_from("\u0BBF");
1332       cursor = limit - v_19;
1333     }
1334     B_found_a_match = true;
1335     B_found_vetrumai_urupu = true;
1336     int v_20 = limit - cursor;
1337     lab34:
1338     {
1339       ket = cursor;
1340       if (!(eq_s_b("\u0BBF\u0BA9\u0BCD"))) {
1341         break lab34;
1342       }
1343       bra = cursor;
1344       slice_from("\u0BCD");
1345     }
1346     cursor = limit - v_20;
1347     cursor = limit_backward;
1348     r_fix_endings();
1349     return true;
1350   }
1351 
r_remove_tense_suffixes()1352   private boolean r_remove_tense_suffixes() {
1353     B_found_a_match = true;
1354     while (true) {
1355       int v_1 = cursor;
1356       lab0:
1357       {
1358         if (!(B_found_a_match)) {
1359           break lab0;
1360         }
1361         int v_2 = cursor;
1362         r_remove_tense_suffix();
1363         cursor = v_2;
1364         continue;
1365       }
1366       cursor = v_1;
1367       break;
1368     }
1369     return true;
1370   }
1371 
r_remove_tense_suffix()1372   private boolean r_remove_tense_suffix() {
1373     B_found_a_match = false;
1374     if (!r_has_min_length()) {
1375       return false;
1376     }
1377     limit_backward = cursor;
1378     cursor = limit;
1379     int v_1 = limit - cursor;
1380     lab0:
1381     {
1382       lab1:
1383       {
1384         int v_2 = limit - cursor;
1385         lab2:
1386         {
1387           int v_3 = limit - cursor;
1388           ket = cursor;
1389           if (find_among_b(a_22) == 0) {
1390             break lab2;
1391           }
1392           bra = cursor;
1393           slice_del();
1394           B_found_a_match = true;
1395           cursor = limit - v_3;
1396           break lab1;
1397         }
1398         cursor = limit - v_2;
1399         lab3:
1400         {
1401           int v_4 = limit - cursor;
1402           ket = cursor;
1403           lab4:
1404           {
1405             int v_5 = limit - cursor;
1406             lab5:
1407             {
1408               if (!(eq_s_b("\u0BAE\u0BBE\u0BB0\u0BCD"))) {
1409                 break lab5;
1410               }
1411               break lab4;
1412             }
1413             cursor = limit - v_5;
1414             lab6:
1415             {
1416               if (!(eq_s_b("\u0BAE\u0BBF\u0BA9\u0BCD"))) {
1417                 break lab6;
1418               }
1419               break lab4;
1420             }
1421             cursor = limit - v_5;
1422             lab7:
1423             {
1424               if (!(eq_s_b("\u0BA9\u0BA9\u0BCD"))) {
1425                 break lab7;
1426               }
1427               break lab4;
1428             }
1429             cursor = limit - v_5;
1430             lab8:
1431             {
1432               if (!(eq_s_b("\u0BA9\u0BBE\u0BA9\u0BCD"))) {
1433                 break lab8;
1434               }
1435               break lab4;
1436             }
1437             cursor = limit - v_5;
1438             lab9:
1439             {
1440               if (!(eq_s_b("\u0BA9\u0BBE\u0BB3\u0BCD"))) {
1441                 break lab9;
1442               }
1443               break lab4;
1444             }
1445             cursor = limit - v_5;
1446             lab10:
1447             {
1448               if (!(eq_s_b("\u0BA9\u0BBE\u0BB0\u0BCD"))) {
1449                 break lab10;
1450               }
1451               break lab4;
1452             }
1453             cursor = limit - v_5;
1454             lab11:
1455             {
1456               if (!(eq_s_b("\u0BB5\u0BA9\u0BCD"))) {
1457                 break lab11;
1458               }
1459               int v_6 = limit - cursor;
1460               {
1461                 int v_7 = limit - cursor;
1462                 lab12:
1463                 {
1464                   if (find_among_b(a_23) == 0) {
1465                     break lab12;
1466                   }
1467                   break lab11;
1468                 }
1469                 cursor = limit - v_7;
1470               }
1471               cursor = limit - v_6;
1472               break lab4;
1473             }
1474             cursor = limit - v_5;
1475             lab13:
1476             {
1477               if (!(eq_s_b("\u0BA9\u0BB3\u0BCD"))) {
1478                 break lab13;
1479               }
1480               break lab4;
1481             }
1482             cursor = limit - v_5;
1483             lab14:
1484             {
1485               if (!(eq_s_b("\u0BB5\u0BB3\u0BCD"))) {
1486                 break lab14;
1487               }
1488               break lab4;
1489             }
1490             cursor = limit - v_5;
1491             lab15:
1492             {
1493               if (!(eq_s_b("\u0BA9\u0BB0\u0BCD"))) {
1494                 break lab15;
1495               }
1496               break lab4;
1497             }
1498             cursor = limit - v_5;
1499             lab16:
1500             {
1501               if (!(eq_s_b("\u0BB5\u0BB0\u0BCD"))) {
1502                 break lab16;
1503               }
1504               break lab4;
1505             }
1506             cursor = limit - v_5;
1507             lab17:
1508             {
1509               if (!(eq_s_b("\u0BA9"))) {
1510                 break lab17;
1511               }
1512               break lab4;
1513             }
1514             cursor = limit - v_5;
1515             lab18:
1516             {
1517               if (!(eq_s_b("\u0BAA"))) {
1518                 break lab18;
1519               }
1520               break lab4;
1521             }
1522             cursor = limit - v_5;
1523             lab19:
1524             {
1525               if (!(eq_s_b("\u0B95"))) {
1526                 break lab19;
1527               }
1528               break lab4;
1529             }
1530             cursor = limit - v_5;
1531             lab20:
1532             {
1533               if (!(eq_s_b("\u0BA4"))) {
1534                 break lab20;
1535               }
1536               break lab4;
1537             }
1538             cursor = limit - v_5;
1539             lab21:
1540             {
1541               if (!(eq_s_b("\u0BAF"))) {
1542                 break lab21;
1543               }
1544               break lab4;
1545             }
1546             cursor = limit - v_5;
1547             lab22:
1548             {
1549               if (!(eq_s_b("\u0BAA\u0BA9\u0BCD"))) {
1550                 break lab22;
1551               }
1552               break lab4;
1553             }
1554             cursor = limit - v_5;
1555             lab23:
1556             {
1557               if (!(eq_s_b("\u0BAA\u0BB3\u0BCD"))) {
1558                 break lab23;
1559               }
1560               break lab4;
1561             }
1562             cursor = limit - v_5;
1563             lab24:
1564             {
1565               if (!(eq_s_b("\u0BAA\u0BB0\u0BCD"))) {
1566                 break lab24;
1567               }
1568               break lab4;
1569             }
1570             cursor = limit - v_5;
1571             lab25:
1572             {
1573               if (!(eq_s_b("\u0BA4\u0BC1"))) {
1574                 break lab25;
1575               }
1576               int v_8 = limit - cursor;
1577               {
1578                 int v_9 = limit - cursor;
1579                 lab26:
1580                 {
1581                   if (find_among_b(a_24) == 0) {
1582                     break lab26;
1583                   }
1584                   break lab25;
1585                 }
1586                 cursor = limit - v_9;
1587               }
1588               cursor = limit - v_8;
1589               break lab4;
1590             }
1591             cursor = limit - v_5;
1592             lab27:
1593             {
1594               if (!(eq_s_b("\u0BBF\u0BB1\u0BCD\u0BB1\u0BC1"))) {
1595                 break lab27;
1596               }
1597               break lab4;
1598             }
1599             cursor = limit - v_5;
1600             lab28:
1601             {
1602               if (!(eq_s_b("\u0BAA\u0BAE\u0BCD"))) {
1603                 break lab28;
1604               }
1605               break lab4;
1606             }
1607             cursor = limit - v_5;
1608             lab29:
1609             {
1610               if (!(eq_s_b("\u0BA9\u0BAE\u0BCD"))) {
1611                 break lab29;
1612               }
1613               break lab4;
1614             }
1615             cursor = limit - v_5;
1616             lab30:
1617             {
1618               if (!(eq_s_b("\u0BA4\u0BC1\u0BAE\u0BCD"))) {
1619                 break lab30;
1620               }
1621               break lab4;
1622             }
1623             cursor = limit - v_5;
1624             lab31:
1625             {
1626               if (!(eq_s_b("\u0BB1\u0BC1\u0BAE\u0BCD"))) {
1627                 break lab31;
1628               }
1629               break lab4;
1630             }
1631             cursor = limit - v_5;
1632             lab32:
1633             {
1634               if (!(eq_s_b("\u0B95\u0BC1\u0BAE\u0BCD"))) {
1635                 break lab32;
1636               }
1637               break lab4;
1638             }
1639             cursor = limit - v_5;
1640             lab33:
1641             {
1642               if (!(eq_s_b("\u0BA9\u0BC6\u0BA9\u0BCD"))) {
1643                 break lab33;
1644               }
1645               break lab4;
1646             }
1647             cursor = limit - v_5;
1648             lab34:
1649             {
1650               if (!(eq_s_b("\u0BA9\u0BC8"))) {
1651                 break lab34;
1652               }
1653               break lab4;
1654             }
1655             cursor = limit - v_5;
1656             if (!(eq_s_b("\u0BB5\u0BC8"))) {
1657               break lab3;
1658             }
1659           }
1660           bra = cursor;
1661           slice_del();
1662           B_found_a_match = true;
1663           cursor = limit - v_4;
1664           break lab1;
1665         }
1666         cursor = limit - v_2;
1667         lab35:
1668         {
1669           int v_10 = limit - cursor;
1670           ket = cursor;
1671           lab36:
1672           {
1673             int v_11 = limit - cursor;
1674             lab37:
1675             {
1676               if (!(eq_s_b("\u0BBE\u0BA9\u0BCD"))) {
1677                 break lab37;
1678               }
1679               int v_12 = limit - cursor;
1680               {
1681                 int v_13 = limit - cursor;
1682                 lab38:
1683                 {
1684                   if (!(eq_s_b("\u0B9A"))) {
1685                     break lab38;
1686                   }
1687                   break lab37;
1688                 }
1689                 cursor = limit - v_13;
1690               }
1691               cursor = limit - v_12;
1692               break lab36;
1693             }
1694             cursor = limit - v_11;
1695             lab39:
1696             {
1697               if (!(eq_s_b("\u0BBE\u0BB3\u0BCD"))) {
1698                 break lab39;
1699               }
1700               break lab36;
1701             }
1702             cursor = limit - v_11;
1703             lab40:
1704             {
1705               if (!(eq_s_b("\u0BBE\u0BB0\u0BCD"))) {
1706                 break lab40;
1707               }
1708               break lab36;
1709             }
1710             cursor = limit - v_11;
1711             lab41:
1712             {
1713               if (!(eq_s_b("\u0BC7\u0BA9\u0BCD"))) {
1714                 break lab41;
1715               }
1716               break lab36;
1717             }
1718             cursor = limit - v_11;
1719             lab42:
1720             {
1721               if (!(eq_s_b("\u0BBE"))) {
1722                 break lab42;
1723               }
1724               break lab36;
1725             }
1726             cursor = limit - v_11;
1727             lab43:
1728             {
1729               if (!(eq_s_b("\u0BBE\u0BAE\u0BCD"))) {
1730                 break lab43;
1731               }
1732               break lab36;
1733             }
1734             cursor = limit - v_11;
1735             lab44:
1736             {
1737               if (!(eq_s_b("\u0BC6\u0BAE\u0BCD"))) {
1738                 break lab44;
1739               }
1740               break lab36;
1741             }
1742             cursor = limit - v_11;
1743             lab45:
1744             {
1745               if (!(eq_s_b("\u0BC7\u0BAE\u0BCD"))) {
1746                 break lab45;
1747               }
1748               break lab36;
1749             }
1750             cursor = limit - v_11;
1751             lab46:
1752             {
1753               if (!(eq_s_b("\u0BCB\u0BAE\u0BCD"))) {
1754                 break lab46;
1755               }
1756               break lab36;
1757             }
1758             cursor = limit - v_11;
1759             lab47:
1760             {
1761               if (!(eq_s_b("\u0B95\u0BC1\u0BAE\u0BCD"))) {
1762                 break lab47;
1763               }
1764               break lab36;
1765             }
1766             cursor = limit - v_11;
1767             lab48:
1768             {
1769               if (!(eq_s_b("\u0BA4\u0BC1\u0BAE\u0BCD"))) {
1770                 break lab48;
1771               }
1772               break lab36;
1773             }
1774             cursor = limit - v_11;
1775             lab49:
1776             {
1777               if (!(eq_s_b("\u0B9F\u0BC1\u0BAE\u0BCD"))) {
1778                 break lab49;
1779               }
1780               break lab36;
1781             }
1782             cursor = limit - v_11;
1783             lab50:
1784             {
1785               if (!(eq_s_b("\u0BB1\u0BC1\u0BAE\u0BCD"))) {
1786                 break lab50;
1787               }
1788               break lab36;
1789             }
1790             cursor = limit - v_11;
1791             lab51:
1792             {
1793               if (!(eq_s_b("\u0BBE\u0BAF\u0BCD"))) {
1794                 break lab51;
1795               }
1796               break lab36;
1797             }
1798             cursor = limit - v_11;
1799             lab52:
1800             {
1801               if (!(eq_s_b("\u0BA9\u0BC6\u0BA9\u0BCD"))) {
1802                 break lab52;
1803               }
1804               break lab36;
1805             }
1806             cursor = limit - v_11;
1807             lab53:
1808             {
1809               if (!(eq_s_b("\u0BA9\u0BBF\u0BB0\u0BCD"))) {
1810                 break lab53;
1811               }
1812               break lab36;
1813             }
1814             cursor = limit - v_11;
1815             lab54:
1816             {
1817               if (!(eq_s_b("\u0BC0\u0BB0\u0BCD"))) {
1818                 break lab54;
1819               }
1820               break lab36;
1821             }
1822             cursor = limit - v_11;
1823             if (!(eq_s_b("\u0BC0\u0BAF\u0BB0\u0BCD"))) {
1824               break lab35;
1825             }
1826           }
1827           bra = cursor;
1828           slice_from("\u0BCD");
1829           B_found_a_match = true;
1830           cursor = limit - v_10;
1831           break lab1;
1832         }
1833         cursor = limit - v_2;
1834         int v_14 = limit - cursor;
1835         ket = cursor;
1836         lab55:
1837         {
1838           int v_15 = limit - cursor;
1839           lab56:
1840           {
1841             if (!(eq_s_b("\u0B95\u0BC1"))) {
1842               break lab56;
1843             }
1844             break lab55;
1845           }
1846           cursor = limit - v_15;
1847           if (!(eq_s_b("\u0BA4\u0BC1"))) {
1848             break lab0;
1849           }
1850         }
1851         int v_16 = limit - cursor;
1852         if (!(eq_s_b("\u0BCD"))) {
1853           break lab0;
1854         }
1855         cursor = limit - v_16;
1856         bra = cursor;
1857         slice_del();
1858         B_found_a_match = true;
1859         cursor = limit - v_14;
1860       }
1861     }
1862     cursor = limit - v_1;
1863     int v_17 = limit - cursor;
1864     lab57:
1865     {
1866       ket = cursor;
1867       if (find_among_b(a_25) == 0) {
1868         break lab57;
1869       }
1870       bra = cursor;
1871       slice_del();
1872       B_found_a_match = true;
1873     }
1874     cursor = limit - v_17;
1875     cursor = limit_backward;
1876     r_fix_endings();
1877     return true;
1878   }
1879 
1880   @Override
stem()1881   public boolean stem() {
1882     B_found_vetrumai_urupu = false;
1883     int v_1 = cursor;
1884     r_fix_ending();
1885     cursor = v_1;
1886     if (!r_has_min_length()) {
1887       return false;
1888     }
1889     int v_2 = cursor;
1890     r_remove_question_prefixes();
1891     cursor = v_2;
1892     int v_3 = cursor;
1893     r_remove_pronoun_prefixes();
1894     cursor = v_3;
1895     int v_4 = cursor;
1896     r_remove_question_suffixes();
1897     cursor = v_4;
1898     int v_5 = cursor;
1899     r_remove_um();
1900     cursor = v_5;
1901     int v_6 = cursor;
1902     r_remove_common_word_endings();
1903     cursor = v_6;
1904     int v_7 = cursor;
1905     r_remove_vetrumai_urupukal();
1906     cursor = v_7;
1907     int v_8 = cursor;
1908     r_remove_plural_suffix();
1909     cursor = v_8;
1910     int v_9 = cursor;
1911     r_remove_command_suffixes();
1912     cursor = v_9;
1913     int v_10 = cursor;
1914     r_remove_tense_suffixes();
1915     cursor = v_10;
1916     return true;
1917   }
1918 
1919   @Override
equals(Object o)1920   public boolean equals(Object o) {
1921     return o instanceof TamilStemmer;
1922   }
1923 
1924   @Override
hashCode()1925   public int hashCode() {
1926     return TamilStemmer.class.getName().hashCode();
1927   }
1928 }
1929