// This file was generated automatically by the Snowball to Java compiler

package org.tartarus.snowball.ext;
import org.tartarus.snowball.SnowballProgram;
import org.tartarus.snowball.Among;

/**
 * Generated class implementing code defined by a snowball script.
 */
public class KpStemmer extends SnowballProgram {

        private Among a_0[] = {
            new Among ( "nde", -1, 7, "", this),
            new Among ( "en", -1, 6, "", this),
            new Among ( "s", -1, 2, "", this),
            new Among ( "'s", 2, 1, "", this),
            new Among ( "es", 2, 4, "", this),
            new Among ( "ies", 4, 3, "", this),
            new Among ( "aus", 2, 5, "", this)
        };

        private Among a_1[] = {
            new Among ( "de", -1, 5, "", this),
            new Among ( "ge", -1, 2, "", this),
            new Among ( "ische", -1, 4, "", this),
            new Among ( "je", -1, 1, "", this),
            new Among ( "lijke", -1, 3, "", this),
            new Among ( "le", -1, 9, "", this),
            new Among ( "ene", -1, 10, "", this),
            new Among ( "re", -1, 8, "", this),
            new Among ( "se", -1, 7, "", this),
            new Among ( "te", -1, 6, "", this),
            new Among ( "ieve", -1, 11, "", this)
        };

        private Among a_2[] = {
            new Among ( "heid", -1, 3, "", this),
            new Among ( "fie", -1, 7, "", this),
            new Among ( "gie", -1, 8, "", this),
            new Among ( "atie", -1, 1, "", this),
            new Among ( "isme", -1, 5, "", this),
            new Among ( "ing", -1, 5, "", this),
            new Among ( "arij", -1, 6, "", this),
            new Among ( "erij", -1, 5, "", this),
            new Among ( "sel", -1, 3, "", this),
            new Among ( "rder", -1, 4, "", this),
            new Among ( "ster", -1, 3, "", this),
            new Among ( "iteit", -1, 2, "", this),
            new Among ( "dst", -1, 10, "", this),
            new Among ( "tst", -1, 9, "", this)
        };

        private Among a_3[] = {
            new Among ( "end", -1, 10, "", this),
            new Among ( "atief", -1, 2, "", this),
            new Among ( "erig", -1, 10, "", this),
            new Among ( "achtig", -1, 9, "", this),
            new Among ( "ioneel", -1, 1, "", this),
            new Among ( "baar", -1, 3, "", this),
            new Among ( "laar", -1, 5, "", this),
            new Among ( "naar", -1, 4, "", this),
            new Among ( "raar", -1, 6, "", this),
            new Among ( "eriger", -1, 10, "", this),
            new Among ( "achtiger", -1, 9, "", this),
            new Among ( "lijker", -1, 8, "", this),
            new Among ( "tant", -1, 7, "", this),
            new Among ( "erigst", -1, 10, "", this),
            new Among ( "achtigst", -1, 9, "", this),
            new Among ( "lijkst", -1, 8, "", this)
        };

        private Among a_4[] = {
            new Among ( "ig", -1, 1, "", this),
            new Among ( "iger", -1, 1, "", this),
            new Among ( "igst", -1, 1, "", this)
        };

        private Among a_5[] = {
            new Among ( "ft", -1, 2, "", this),
            new Among ( "kt", -1, 1, "", this),
            new Among ( "pt", -1, 3, "", this)
        };

        private Among a_6[] = {
            new Among ( "bb", -1, 1, "", this),
            new Among ( "cc", -1, 2, "", this),
            new Among ( "dd", -1, 3, "", this),
            new Among ( "ff", -1, 4, "", this),
            new Among ( "gg", -1, 5, "", this),
            new Among ( "hh", -1, 6, "", this),
            new Among ( "jj", -1, 7, "", this),
            new Among ( "kk", -1, 8, "", this),
            new Among ( "ll", -1, 9, "", this),
            new Among ( "mm", -1, 10, "", this),
            new Among ( "nn", -1, 11, "", this),
            new Among ( "pp", -1, 12, "", this),
            new Among ( "qq", -1, 13, "", this),
            new Among ( "rr", -1, 14, "", this),
            new Among ( "ss", -1, 15, "", this),
            new Among ( "tt", -1, 16, "", this),
            new Among ( "v", -1, 21, "", this),
            new Among ( "vv", 16, 17, "", this),
            new Among ( "ww", -1, 18, "", this),
            new Among ( "xx", -1, 19, "", this),
            new Among ( "z", -1, 22, "", this),
            new Among ( "zz", 20, 20, "", this)
        };

        private Among a_7[] = {
            new Among ( "d", -1, 1, "", this),
            new Among ( "t", -1, 2, "", this)
        };

        private static final char g_v[] = {17, 65, 16, 1 };

        private static final char g_v_WX[] = {17, 65, 208, 1 };

        private static final char g_AOU[] = {1, 64, 16 };

        private static final char g_AIOU[] = {1, 65, 16 };

        private boolean B_GE_removed;
        private boolean B_stemmed;
        private boolean B_Y_found;
        private int I_p2;
        private int I_p1;
        private int I_x;
        private StringBuilder S_ch = new StringBuilder();

        private void copy_from(KpStemmer other) {
            B_GE_removed = other.B_GE_removed;
            B_stemmed = other.B_stemmed;
            B_Y_found = other.B_Y_found;
            I_p2 = other.I_p2;
            I_p1 = other.I_p1;
            I_x = other.I_x;
            S_ch = other.S_ch;
            super.copy_from(other);
        }

        private boolean r_R1() {
            // (, line 32
            // setmark x, line 32
            I_x = cursor;
            if (!(I_x >= I_p1))
            {
                return false;
            }
            return true;
        }

        private boolean r_R2() {
            // (, line 33
            // setmark x, line 33
            I_x = cursor;
            if (!(I_x >= I_p2))
            {
                return false;
            }
            return true;
        }

        private boolean r_V() {
            int v_1;
            int v_2;
            // test, line 35
            v_1 = limit - cursor;
            // (, line 35
            // or, line 35
            lab0: do {
                v_2 = limit - cursor;
                lab1: do {
                    if (!(in_grouping_b(g_v, 97, 121)))
                    {
                        break lab1;
                    }
                    break lab0;
                } while (false);
                cursor = limit - v_2;
                // literal, line 35
                if (!(eq_s_b(2, "ij")))
                {
                    return false;
                }
            } while (false);
            cursor = limit - v_1;
            return true;
        }

        private boolean r_VX() {
            int v_1;
            int v_2;
            // test, line 36
            v_1 = limit - cursor;
            // (, line 36
            // next, line 36
            if (cursor <= limit_backward)
            {
                return false;
            }
            cursor--;
            // or, line 36
            lab0: do {
                v_2 = limit - cursor;
                lab1: do {
                    if (!(in_grouping_b(g_v, 97, 121)))
                    {
                        break lab1;
                    }
                    break lab0;
                } while (false);
                cursor = limit - v_2;
                // literal, line 36
                if (!(eq_s_b(2, "ij")))
                {
                    return false;
                }
            } while (false);
            cursor = limit - v_1;
            return true;
        }

        private boolean r_C() {
            int v_1;
            int v_2;
            // test, line 37
            v_1 = limit - cursor;
            // (, line 37
            // not, line 37
            {
                v_2 = limit - cursor;
                lab0: do {
                    // literal, line 37
                    if (!(eq_s_b(2, "ij")))
                    {
                        break lab0;
                    }
                    return false;
                } while (false);
                cursor = limit - v_2;
            }
            if (!(out_grouping_b(g_v, 97, 121)))
            {
                return false;
            }
            cursor = limit - v_1;
            return true;
        }

        private boolean r_lengthen_V() {
            int v_1;
            int v_2;
            int v_3;
            int v_4;
            int v_5;
            int v_6;
            int v_7;
            int v_8;
            // do, line 39
            v_1 = limit - cursor;
            lab0: do {
                // (, line 39
                if (!(out_grouping_b(g_v_WX, 97, 121)))
                {
                    break lab0;
                }
                // [, line 40
                ket = cursor;
                // or, line 40
                lab1: do {
                    v_2 = limit - cursor;
                    lab2: do {
                        // (, line 40
                        if (!(in_grouping_b(g_AOU, 97, 117)))
                        {
                            break lab2;
                        }
                        // ], line 40
                        bra = cursor;
                        // test, line 40
                        v_3 = limit - cursor;
                        // (, line 40
                        // or, line 40
                        lab3: do {
                            v_4 = limit - cursor;
                            lab4: do {
                                if (!(out_grouping_b(g_v, 97, 121)))
                                {
                                    break lab4;
                                }
                                break lab3;
                            } while (false);
                            cursor = limit - v_4;
                            // atlimit, line 40
                            if (cursor > limit_backward)
                            {
                                break lab2;
                            }
                        } while (false);
                        cursor = limit - v_3;
                        break lab1;
                    } while (false);
                    cursor = limit - v_2;
                    // (, line 41
                    // literal, line 41
                    if (!(eq_s_b(1, "e")))
                    {
                        break lab0;
                    }
                    // ], line 41
                    bra = cursor;
                    // test, line 41
                    v_5 = limit - cursor;
                    // (, line 41
                    // or, line 41
                    lab5: do {
                        v_6 = limit - cursor;
                        lab6: do {
                            if (!(out_grouping_b(g_v, 97, 121)))
                            {
                                break lab6;
                            }
                            break lab5;
                        } while (false);
                        cursor = limit - v_6;
                        // atlimit, line 41
                        if (cursor > limit_backward)
                        {
                            break lab0;
                        }
                    } while (false);
                    // not, line 42
                    {
                        v_7 = limit - cursor;
                        lab7: do {
                            if (!(in_grouping_b(g_AIOU, 97, 117)))
                            {
                                break lab7;
                            }
                            break lab0;
                        } while (false);
                        cursor = limit - v_7;
                    }
                    // not, line 43
                    {
                        v_8 = limit - cursor;
                        lab8: do {
                            // (, line 43
                            // next, line 43
                            if (cursor <= limit_backward)
                            {
                                break lab8;
                            }
                            cursor--;
                            if (!(in_grouping_b(g_AIOU, 97, 117)))
                            {
                                break lab8;
                            }
                            if (!(out_grouping_b(g_v, 97, 121)))
                            {
                                break lab8;
                            }
                            break lab0;
                        } while (false);
                        cursor = limit - v_8;
                    }
                    cursor = limit - v_5;
                } while (false);
                // -> ch, line 44
                S_ch = slice_to(S_ch);
                // <+ ch, line 44
                {
                    int c = cursor;
                    insert(cursor, cursor, S_ch);
                    cursor = c;
                }
            } while (false);
            cursor = limit - v_1;
            return true;
        }

        private boolean r_Step_1() {
            int among_var;
            int v_1;
            int v_2;
            int v_3;
            int v_4;
            // (, line 48
            // [, line 49
            ket = cursor;
            // among, line 49
            among_var = find_among_b(a_0, 7);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 49
            // ], line 49
            bra = cursor;
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 51
                    // delete, line 51
                    slice_del();
                    break;
                case 2:
                    // (, line 52
                    // call R1, line 52
                    if (!r_R1())
                    {
                        return false;
                    }
                    // not, line 52
                    {
                        v_1 = limit - cursor;
                        lab0: do {
                            // (, line 52
                            // literal, line 52
                            if (!(eq_s_b(1, "t")))
                            {
                                break lab0;
                            }
                            // call R1, line 52
                            if (!r_R1())
                            {
                                break lab0;
                            }
                            return false;
                        } while (false);
                        cursor = limit - v_1;
                    }
                    // call C, line 52
                    if (!r_C())
                    {
                        return false;
                    }
                    // delete, line 52
                    slice_del();
                    break;
                case 3:
                    // (, line 53
                    // call R1, line 53
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 53
                    slice_from("ie");
                    break;
                case 4:
                    // (, line 55
                    // or, line 55
                    lab1: do {
                        v_2 = limit - cursor;
                        lab2: do {
                            // (, line 55
                            // literal, line 55
                            if (!(eq_s_b(2, "ar")))
                            {
                                break lab2;
                            }
                            // call R1, line 55
                            if (!r_R1())
                            {
                                break lab2;
                            }
                            // call C, line 55
                            if (!r_C())
                            {
                                break lab2;
                            }
                            // ], line 55
                            bra = cursor;
                            // delete, line 55
                            slice_del();
                            // call lengthen_V, line 55
                            if (!r_lengthen_V())
                            {
                                break lab2;
                            }
                            break lab1;
                        } while (false);
                        cursor = limit - v_2;
                        lab3: do {
                            // (, line 56
                            // literal, line 56
                            if (!(eq_s_b(2, "er")))
                            {
                                break lab3;
                            }
                            // call R1, line 56
                            if (!r_R1())
                            {
                                break lab3;
                            }
                            // call C, line 56
                            if (!r_C())
                            {
                                break lab3;
                            }
                            // ], line 56
                            bra = cursor;
                            // delete, line 56
                            slice_del();
                            break lab1;
                        } while (false);
                        cursor = limit - v_2;
                        // (, line 57
                        // call R1, line 57
                        if (!r_R1())
                        {
                            return false;
                        }
                        // call C, line 57
                        if (!r_C())
                        {
                            return false;
                        }
                        // <-, line 57
                        slice_from("e");
                    } while (false);
                    break;
                case 5:
                    // (, line 59
                    // call R1, line 59
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call V, line 59
                    if (!r_V())
                    {
                        return false;
                    }
                    // <-, line 59
                    slice_from("au");
                    break;
                case 6:
                    // (, line 60
                    // or, line 60
                    lab4: do {
                        v_3 = limit - cursor;
                        lab5: do {
                            // (, line 60
                            // literal, line 60
                            if (!(eq_s_b(3, "hed")))
                            {
                                break lab5;
                            }
                            // call R1, line 60
                            if (!r_R1())
                            {
                                break lab5;
                            }
                            // ], line 60
                            bra = cursor;
                            // <-, line 60
                            slice_from("heid");
                            break lab4;
                        } while (false);
                        cursor = limit - v_3;
                        lab6: do {
                            // (, line 61
                            // literal, line 61
                            if (!(eq_s_b(2, "nd")))
                            {
                                break lab6;
                            }
                            // delete, line 61
                            slice_del();
                            break lab4;
                        } while (false);
                        cursor = limit - v_3;
                        lab7: do {
                            // (, line 62
                            // literal, line 62
                            if (!(eq_s_b(1, "d")))
                            {
                                break lab7;
                            }
                            // call R1, line 62
                            if (!r_R1())
                            {
                                break lab7;
                            }
                            // call C, line 62
                            if (!r_C())
                            {
                                break lab7;
                            }
                            // ], line 62
                            bra = cursor;
                            // delete, line 62
                            slice_del();
                            break lab4;
                        } while (false);
                        cursor = limit - v_3;
                        lab8: do {
                            // (, line 63
                            // or, line 63
                            lab9: do {
                                v_4 = limit - cursor;
                                lab10: do {
                                    // literal, line 63
                                    if (!(eq_s_b(1, "i")))
                                    {
                                        break lab10;
                                    }
                                    break lab9;
                                } while (false);
                                cursor = limit - v_4;
                                // literal, line 63
                                if (!(eq_s_b(1, "j")))
                                {
                                    break lab8;
                                }
                            } while (false);
                            // call V, line 63
                            if (!r_V())
                            {
                                break lab8;
                            }
                            // delete, line 63
                            slice_del();
                            break lab4;
                        } while (false);
                        cursor = limit - v_3;
                        // (, line 64
                        // call R1, line 64
                        if (!r_R1())
                        {
                            return false;
                        }
                        // call C, line 64
                        if (!r_C())
                        {
                            return false;
                        }
                        // delete, line 64
                        slice_del();
                        // call lengthen_V, line 64
                        if (!r_lengthen_V())
                        {
                            return false;
                        }
                    } while (false);
                    break;
                case 7:
                    // (, line 65
                    // <-, line 65
                    slice_from("nd");
                    break;
            }
            return true;
        }

        private boolean r_Step_2() {
            int among_var;
            int v_1;
            // (, line 70
            // [, line 71
            ket = cursor;
            // among, line 71
            among_var = find_among_b(a_1, 11);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 71
            // ], line 71
            bra = cursor;
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 72
                    // or, line 72
                    lab0: do {
                        v_1 = limit - cursor;
                        lab1: do {
                            // (, line 72
                            // literal, line 72
                            if (!(eq_s_b(2, "'t")))
                            {
                                break lab1;
                            }
                            // ], line 72
                            bra = cursor;
                            // delete, line 72
                            slice_del();
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab2: do {
                            // (, line 73
                            // literal, line 73
                            if (!(eq_s_b(2, "et")))
                            {
                                break lab2;
                            }
                            // ], line 73
                            bra = cursor;
                            // call R1, line 73
                            if (!r_R1())
                            {
                                break lab2;
                            }
                            // call C, line 73
                            if (!r_C())
                            {
                                break lab2;
                            }
                            // delete, line 73
                            slice_del();
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab3: do {
                            // (, line 74
                            // literal, line 74
                            if (!(eq_s_b(3, "rnt")))
                            {
                                break lab3;
                            }
                            // ], line 74
                            bra = cursor;
                            // <-, line 74
                            slice_from("rn");
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab4: do {
                            // (, line 75
                            // literal, line 75
                            if (!(eq_s_b(1, "t")))
                            {
                                break lab4;
                            }
                            // ], line 75
                            bra = cursor;
                            // call R1, line 75
                            if (!r_R1())
                            {
                                break lab4;
                            }
                            // call VX, line 75
                            if (!r_VX())
                            {
                                break lab4;
                            }
                            // delete, line 75
                            slice_del();
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab5: do {
                            // (, line 76
                            // literal, line 76
                            if (!(eq_s_b(3, "ink")))
                            {
                                break lab5;
                            }
                            // ], line 76
                            bra = cursor;
                            // <-, line 76
                            slice_from("ing");
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab6: do {
                            // (, line 77
                            // literal, line 77
                            if (!(eq_s_b(2, "mp")))
                            {
                                break lab6;
                            }
                            // ], line 77
                            bra = cursor;
                            // <-, line 77
                            slice_from("m");
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        lab7: do {
                            // (, line 78
                            // literal, line 78
                            if (!(eq_s_b(1, "'")))
                            {
                                break lab7;
                            }
                            // ], line 78
                            bra = cursor;
                            // call R1, line 78
                            if (!r_R1())
                            {
                                break lab7;
                            }
                            // delete, line 78
                            slice_del();
                            break lab0;
                        } while (false);
                        cursor = limit - v_1;
                        // (, line 79
                        // ], line 79
                        bra = cursor;
                        // call R1, line 79
                        if (!r_R1())
                        {
                            return false;
                        }
                        // call C, line 79
                        if (!r_C())
                        {
                            return false;
                        }
                        // delete, line 79
                        slice_del();
                    } while (false);
                    break;
                case 2:
                    // (, line 80
                    // call R1, line 80
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 80
                    slice_from("g");
                    break;
                case 3:
                    // (, line 81
                    // call R1, line 81
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 81
                    slice_from("lijk");
                    break;
                case 4:
                    // (, line 82
                    // call R1, line 82
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 82
                    slice_from("isch");
                    break;
                case 5:
                    // (, line 83
                    // call R1, line 83
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 83
                    if (!r_C())
                    {
                        return false;
                    }
                    // delete, line 83
                    slice_del();
                    break;
                case 6:
                    // (, line 84
                    // call R1, line 84
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 84
                    slice_from("t");
                    break;
                case 7:
                    // (, line 85
                    // call R1, line 85
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 85
                    slice_from("s");
                    break;
                case 8:
                    // (, line 86
                    // call R1, line 86
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 86
                    slice_from("r");
                    break;
                case 9:
                    // (, line 87
                    // call R1, line 87
                    if (!r_R1())
                    {
                        return false;
                    }
                    // delete, line 87
                    slice_del();
                    // attach, line 87
                    insert(cursor, cursor, "l");
                    // call lengthen_V, line 87
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 10:
                    // (, line 88
                    // call R1, line 88
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 88
                    if (!r_C())
                    {
                        return false;
                    }
                    // delete, line 88
                    slice_del();
                    // attach, line 88
                    insert(cursor, cursor, "en");
                    // call lengthen_V, line 88
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 11:
                    // (, line 89
                    // call R1, line 89
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 89
                    if (!r_C())
                    {
                        return false;
                    }
                    // <-, line 89
                    slice_from("ief");
                    break;
            }
            return true;
        }

        private boolean r_Step_3() {
            int among_var;
            // (, line 94
            // [, line 95
            ket = cursor;
            // among, line 95
            among_var = find_among_b(a_2, 14);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 95
            // ], line 95
            bra = cursor;
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 96
                    // call R1, line 96
                    if (!r_R1())
                    {
                        return false;
                    }
                    // <-, line 96
                    slice_from("eer");
                    break;
                case 2:
                    // (, line 97
                    // call R1, line 97
                    if (!r_R1())
                    {
                        return false;
                    }
                    // delete, line 97
                    slice_del();
                    // call lengthen_V, line 97
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 3:
                    // (, line 100
                    // call R1, line 100
                    if (!r_R1())
                    {
                        return false;
                    }
                    // delete, line 100
                    slice_del();
                    break;
                case 4:
                    // (, line 101
                    // <-, line 101
                    slice_from("r");
                    break;
                case 5:
                    // (, line 104
                    // call R1, line 104
                    if (!r_R1())
                    {
                        return false;
                    }
                    // delete, line 104
                    slice_del();
                    // call lengthen_V, line 104
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 6:
                    // (, line 105
                    // call R1, line 105
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 105
                    if (!r_C())
                    {
                        return false;
                    }
                    // <-, line 105
                    slice_from("aar");
                    break;
                case 7:
                    // (, line 106
                    // call R2, line 106
                    if (!r_R2())
                    {
                        return false;
                    }
                    // delete, line 106
                    slice_del();
                    // attach, line 106
                    insert(cursor, cursor, "f");
                    // call lengthen_V, line 106
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 8:
                    // (, line 107
                    // call R2, line 107
                    if (!r_R2())
                    {
                        return false;
                    }
                    // delete, line 107
                    slice_del();
                    // attach, line 107
                    insert(cursor, cursor, "g");
                    // call lengthen_V, line 107
                    if (!r_lengthen_V())
                    {
                        return false;
                    }
                    break;
                case 9:
                    // (, line 108
                    // call R1, line 108
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 108
                    if (!r_C())
                    {
                        return false;
                    }
                    // <-, line 108
                    slice_from("t");
                    break;
                case 10:
                    // (, line 109
                    // call R1, line 109
                    if (!r_R1())
                    {
                        return false;
                    }
                    // call C, line 109
                    if (!r_C())
                    {
                        return false;
                    }
                    // <-, line 109
                    slice_from("d");
                    break;
            }
            return true;
        }

        private boolean r_Step_4() {
            int among_var;
            int v_1;
            // (, line 114
            // or, line 134
            lab0: do {
                v_1 = limit - cursor;
                lab1: do {
                    // (, line 115
                    // [, line 115
                    ket = cursor;
                    // among, line 115
                    among_var = find_among_b(a_3, 16);
                    if (among_var == 0)
                    {
                        break lab1;
                    }
                    // (, line 115
                    // ], line 115
                    bra = cursor;
                    switch(among_var) {
                        case 0:
                            break lab1;
                        case 1:
                            // (, line 116
                            // call R1, line 116
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // <-, line 116
                            slice_from("ie");
                            break;
                        case 2:
                            // (, line 117
                            // call R1, line 117
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // <-, line 117
                            slice_from("eer");
                            break;
                        case 3:
                            // (, line 118
                            // call R1, line 118
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // delete, line 118
                            slice_del();
                            break;
                        case 4:
                            // (, line 119
                            // call R1, line 119
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // call V, line 119
                            if (!r_V())
                            {
                                break lab1;
                            }
                            // <-, line 119
                            slice_from("n");
                            break;
                        case 5:
                            // (, line 120
                            // call R1, line 120
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // call V, line 120
                            if (!r_V())
                            {
                                break lab1;
                            }
                            // <-, line 120
                            slice_from("l");
                            break;
                        case 6:
                            // (, line 121
                            // call R1, line 121
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // call V, line 121
                            if (!r_V())
                            {
                                break lab1;
                            }
                            // <-, line 121
                            slice_from("r");
                            break;
                        case 7:
                            // (, line 122
                            // call R1, line 122
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // <-, line 122
                            slice_from("teer");
                            break;
                        case 8:
                            // (, line 124
                            // call R1, line 124
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // <-, line 124
                            slice_from("lijk");
                            break;
                        case 9:
                            // (, line 127
                            // call R1, line 127
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // delete, line 127
                            slice_del();
                            break;
                        case 10:
                            // (, line 131
                            // call R1, line 131
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            // call C, line 131
                            if (!r_C())
                            {
                                break lab1;
                            }
                            // delete, line 131
                            slice_del();
                            // call lengthen_V, line 131
                            if (!r_lengthen_V())
                            {
                                break lab1;
                            }
                            break;
                    }
                    break lab0;
                } while (false);
                cursor = limit - v_1;
                // (, line 135
                // [, line 135
                ket = cursor;
                // among, line 135
                among_var = find_among_b(a_4, 3);
                if (among_var == 0)
                {
                    return false;
                }
                // (, line 135
                // ], line 135
                bra = cursor;
                switch(among_var) {
                    case 0:
                        return false;
                    case 1:
                        // (, line 138
                        // call R1, line 138
                        if (!r_R1())
                        {
                            return false;
                        }
                        // call C, line 138
                        if (!r_C())
                        {
                            return false;
                        }
                        // delete, line 138
                        slice_del();
                        // call lengthen_V, line 138
                        if (!r_lengthen_V())
                        {
                            return false;
                        }
                        break;
                }
            } while (false);
            return true;
        }

        private boolean r_Step_7() {
            int among_var;
            // (, line 144
            // [, line 145
            ket = cursor;
            // among, line 145
            among_var = find_among_b(a_5, 3);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 145
            // ], line 145
            bra = cursor;
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 146
                    // <-, line 146
                    slice_from("k");
                    break;
                case 2:
                    // (, line 147
                    // <-, line 147
                    slice_from("f");
                    break;
                case 3:
                    // (, line 148
                    // <-, line 148
                    slice_from("p");
                    break;
            }
            return true;
        }

        private boolean r_Step_6() {
            int among_var;
            // (, line 153
            // [, line 154
            ket = cursor;
            // among, line 154
            among_var = find_among_b(a_6, 22);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 154
            // ], line 154
            bra = cursor;
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 155
                    // <-, line 155
                    slice_from("b");
                    break;
                case 2:
                    // (, line 156
                    // <-, line 156
                    slice_from("c");
                    break;
                case 3:
                    // (, line 157
                    // <-, line 157
                    slice_from("d");
                    break;
                case 4:
                    // (, line 158
                    // <-, line 158
                    slice_from("f");
                    break;
                case 5:
                    // (, line 159
                    // <-, line 159
                    slice_from("g");
                    break;
                case 6:
                    // (, line 160
                    // <-, line 160
                    slice_from("h");
                    break;
                case 7:
                    // (, line 161
                    // <-, line 161
                    slice_from("j");
                    break;
                case 8:
                    // (, line 162
                    // <-, line 162
                    slice_from("k");
                    break;
                case 9:
                    // (, line 163
                    // <-, line 163
                    slice_from("l");
                    break;
                case 10:
                    // (, line 164
                    // <-, line 164
                    slice_from("m");
                    break;
                case 11:
                    // (, line 165
                    // <-, line 165
                    slice_from("n");
                    break;
                case 12:
                    // (, line 166
                    // <-, line 166
                    slice_from("p");
                    break;
                case 13:
                    // (, line 167
                    // <-, line 167
                    slice_from("q");
                    break;
                case 14:
                    // (, line 168
                    // <-, line 168
                    slice_from("r");
                    break;
                case 15:
                    // (, line 169
                    // <-, line 169
                    slice_from("s");
                    break;
                case 16:
                    // (, line 170
                    // <-, line 170
                    slice_from("t");
                    break;
                case 17:
                    // (, line 171
                    // <-, line 171
                    slice_from("v");
                    break;
                case 18:
                    // (, line 172
                    // <-, line 172
                    slice_from("w");
                    break;
                case 19:
                    // (, line 173
                    // <-, line 173
                    slice_from("x");
                    break;
                case 20:
                    // (, line 174
                    // <-, line 174
                    slice_from("z");
                    break;
                case 21:
                    // (, line 175
                    // <-, line 175
                    slice_from("f");
                    break;
                case 22:
                    // (, line 176
                    // <-, line 176
                    slice_from("s");
                    break;
            }
            return true;
        }

        private boolean r_Step_1c() {
            int among_var;
            int v_1;
            int v_2;
            // (, line 181
            // [, line 182
            ket = cursor;
            // among, line 182
            among_var = find_among_b(a_7, 2);
            if (among_var == 0)
            {
                return false;
            }
            // (, line 182
            // ], line 182
            bra = cursor;
            // call R1, line 182
            if (!r_R1())
            {
                return false;
            }
            // call C, line 182
            if (!r_C())
            {
                return false;
            }
            switch(among_var) {
                case 0:
                    return false;
                case 1:
                    // (, line 183
                    // not, line 183
                    {
                        v_1 = limit - cursor;
                        lab0: do {
                            // (, line 183
                            // literal, line 183
                            if (!(eq_s_b(1, "n")))
                            {
                                break lab0;
                            }
                            // call R1, line 183
                            if (!r_R1())
                            {
                                break lab0;
                            }
                            return false;
                        } while (false);
                        cursor = limit - v_1;
                    }
                    // delete, line 183
                    slice_del();
                    break;
                case 2:
                    // (, line 184
                    // not, line 184
                    {
                        v_2 = limit - cursor;
                        lab1: do {
                            // (, line 184
                            // literal, line 184
                            if (!(eq_s_b(1, "h")))
                            {
                                break lab1;
                            }
                            // call R1, line 184
                            if (!r_R1())
                            {
                                break lab1;
                            }
                            return false;
                        } while (false);
                        cursor = limit - v_2;
                    }
                    // delete, line 184
                    slice_del();
                    break;
            }
            return true;
        }

        private boolean r_Lose_prefix() {
            int v_1;
            int v_2;
            int v_3;
            // (, line 189
            // [, line 190
            bra = cursor;
            // literal, line 190
            if (!(eq_s(2, "ge")))
            {
                return false;
            }
            // ], line 190
            ket = cursor;
            // test, line 190
            v_1 = cursor;
            // hop, line 190
            {
                int c = cursor + 3;
                if (0 > c || c > limit)
                {
                    return false;
                }
                cursor = c;
            }
            cursor = v_1;
            // (, line 190
            // goto, line 190
            golab0: while(true)
            {
                v_2 = cursor;
                lab1: do {
                    if (!(in_grouping(g_v, 97, 121)))
                    {
                        break lab1;
                    }
                    cursor = v_2;
                    break golab0;
                } while (false);
                cursor = v_2;
                if (cursor >= limit)
                {
                    return false;
                }
                cursor++;
            }
            // goto, line 190
            golab2: while(true)
            {
                v_3 = cursor;
                lab3: do {
                    if (!(out_grouping(g_v, 97, 121)))
                    {
                        break lab3;
                    }
                    cursor = v_3;
                    break golab2;
                } while (false);
                cursor = v_3;
                if (cursor >= limit)
                {
                    return false;
                }
                cursor++;
            }
            // set GE_removed, line 191
            B_GE_removed = true;
            // delete, line 192
            slice_del();
            return true;
        }

        private boolean r_Lose_infix() {
            int v_2;
            int v_3;
            int v_4;
            // (, line 195
            // next, line 196
            if (cursor >= limit)
            {
                return false;
            }
            cursor++;
            // gopast, line 197
            golab0: while(true)
            {
                lab1: do {
                    // (, line 197
                    // [, line 197
                    bra = cursor;
                    // literal, line 197
                    if (!(eq_s(2, "ge")))
                    {
                        break lab1;
                    }
                    // ], line 197
                    ket = cursor;
                    break golab0;
                } while (false);
                if (cursor >= limit)
                {
                    return false;
                }
                cursor++;
            }
            // test, line 197
            v_2 = cursor;
            // hop, line 197
            {
                int c = cursor + 3;
                if (0 > c || c > limit)
                {
                    return false;
                }
                cursor = c;
            }
            cursor = v_2;
            // (, line 197
            // goto, line 197
            golab2: while(true)
            {
                v_3 = cursor;
                lab3: do {
                    if (!(in_grouping(g_v, 97, 121)))
                    {
                        break lab3;
                    }
                    cursor = v_3;
                    break golab2;
                } while (false);
                cursor = v_3;
                if (cursor >= limit)
                {
                    return false;
                }
                cursor++;
            }
            // goto, line 197
            golab4: while(true)
            {
                v_4 = cursor;
                lab5: do {
                    if (!(out_grouping(g_v, 97, 121)))
                    {
                        break lab5;
                    }
                    cursor = v_4;
                    break golab4;
                } while (false);
                cursor = v_4;
                if (cursor >= limit)
                {
                    return false;
                }
                cursor++;
            }
            // set GE_removed, line 198
            B_GE_removed = true;
            // delete, line 199
            slice_del();
            return true;
        }

        private boolean r_measure() {
            int v_1;
            int v_2;
            int v_5;
            int v_6;
            int v_9;
            int v_10;
            // (, line 202
            // do, line 203
            v_1 = cursor;
            lab0: do {
                // (, line 203
                // tolimit, line 204
                cursor = limit;
                // setmark p1, line 205
                I_p1 = cursor;
                // setmark p2, line 206
                I_p2 = cursor;
            } while (false);
            cursor = v_1;
            // do, line 208
            v_2 = cursor;
            lab1: do {
                // (, line 208
                // repeat, line 209
                replab2: while(true)
                {
                    lab3: do {
                        if (!(out_grouping(g_v, 97, 121)))
                        {
                            break lab3;
                        }
                        continue replab2;
                    } while (false);
                    break replab2;
                }
                // atleast, line 209
                {
                    int v_4 = 1;
                    // atleast, line 209
                    replab4: while(true)
                    {
                        v_5 = cursor;
                        lab5: do {
                            // (, line 209
                            // or, line 209
                            lab6: do {
                                v_6 = cursor;
                                lab7: do {
                                    // literal, line 209
                                    if (!(eq_s(2, "ij")))
                                    {
                                        break lab7;
                                    }
                                    break lab6;
                                } while (false);
                                cursor = v_6;
                                if (!(in_grouping(g_v, 97, 121)))
                                {
                                    break lab5;
                                }
                            } while (false);
                            v_4--;
                            continue replab4;
                        } while (false);
                        cursor = v_5;
                        break replab4;
                    }
                    if (v_4 > 0)
                    {
                        break lab1;
                    }
                }
                if (!(out_grouping(g_v, 97, 121)))
                {
                    break lab1;
                }
                // setmark p1, line 209
                I_p1 = cursor;
                // repeat, line 210
                replab8: while(true)
                {
                    lab9: do {
                        if (!(out_grouping(g_v, 97, 121)))
                        {
                            break lab9;
                        }
                        continue replab8;
                    } while (false);
                    break replab8;
                }
                // atleast, line 210
                {
                    int v_8 = 1;
                    // atleast, line 210
                    replab10: while(true)
                    {
                        v_9 = cursor;
                        lab11: do {
                            // (, line 210
                            // or, line 210
                            lab12: do {
                                v_10 = cursor;
                                lab13: do {
                                    // literal, line 210
                                    if (!(eq_s(2, "ij")))
                                    {
                                        break lab13;
                                    }
                                    break lab12;
                                } while (false);
                                cursor = v_10;
                                if (!(in_grouping(g_v, 97, 121)))
                                {
                                    break lab11;
                                }
                            } while (false);
                            v_8--;
                            continue replab10;
                        } while (false);
                        cursor = v_9;
                        break replab10;
                    }
                    if (v_8 > 0)
                    {
                        break lab1;
                    }
                }
                if (!(out_grouping(g_v, 97, 121)))
                {
                    break lab1;
                }
                // setmark p2, line 210
                I_p2 = cursor;
            } while (false);
            cursor = v_2;
            return true;
        }

        public boolean stem() {
            int v_1;
            int v_2;
            int v_3;
            int v_4;
            int v_5;
            int v_6;
            int v_7;
            int v_8;
            int v_9;
            int v_10;
            int v_11;
            int v_12;
            int v_13;
            int v_14;
            int v_15;
            int v_16;
            int v_18;
            int v_19;
            int v_20;
            // (, line 214
            // unset Y_found, line 216
            B_Y_found = false;
            // unset stemmed, line 217
            B_stemmed = false;
            // do, line 218
            v_1 = cursor;
            lab0: do {
                // (, line 218
                // [, line 218
                bra = cursor;
                // literal, line 218
                if (!(eq_s(1, "y")))
                {
                    break lab0;
                }
                // ], line 218
                ket = cursor;
                // <-, line 218
                slice_from("Y");
                // set Y_found, line 218
                B_Y_found = true;
            } while (false);
            cursor = v_1;
            // do, line 219
            v_2 = cursor;
            lab1: do {
                // repeat, line 219
                replab2: while(true)
                {
                    v_3 = cursor;
                    lab3: do {
                        // (, line 219
                        // goto, line 219
                        golab4: while(true)
                        {
                            v_4 = cursor;
                            lab5: do {
                                // (, line 219
                                if (!(in_grouping(g_v, 97, 121)))
                                {
                                    break lab5;
                                }
                                // [, line 219
                                bra = cursor;
                                // literal, line 219
                                if (!(eq_s(1, "y")))
                                {
                                    break lab5;
                                }
                                // ], line 219
                                ket = cursor;
                                cursor = v_4;
                                break golab4;
                            } while (false);
                            cursor = v_4;
                            if (cursor >= limit)
                            {
                                break lab3;
                            }
                            cursor++;
                        }
                        // <-, line 219
                        slice_from("Y");
                        // set Y_found, line 219
                        B_Y_found = true;
                        continue replab2;
                    } while (false);
                    cursor = v_3;
                    break replab2;
                }
            } while (false);
            cursor = v_2;
            // call measure, line 221
            if (!r_measure())
            {
                return false;
            }
            // backwards, line 223
            limit_backward = cursor; cursor = limit;
            // (, line 223
            // do, line 224
            v_5 = limit - cursor;
            lab6: do {
                // (, line 224
                // call Step_1, line 224
                if (!r_Step_1())
                {
                    break lab6;
                }
                // set stemmed, line 224
                B_stemmed = true;
            } while (false);
            cursor = limit - v_5;
            // do, line 225
            v_6 = limit - cursor;
            lab7: do {
                // (, line 225
                // call Step_2, line 225
                if (!r_Step_2())
                {
                    break lab7;
                }
                // set stemmed, line 225
                B_stemmed = true;
            } while (false);
            cursor = limit - v_6;
            // do, line 226
            v_7 = limit - cursor;
            lab8: do {
                // (, line 226
                // call Step_3, line 226
                if (!r_Step_3())
                {
                    break lab8;
                }
                // set stemmed, line 226
                B_stemmed = true;
            } while (false);
            cursor = limit - v_7;
            // do, line 227
            v_8 = limit - cursor;
            lab9: do {
                // (, line 227
                // call Step_4, line 227
                if (!r_Step_4())
                {
                    break lab9;
                }
                // set stemmed, line 227
                B_stemmed = true;
            } while (false);
            cursor = limit - v_8;
            cursor = limit_backward;            // unset GE_removed, line 229
            B_GE_removed = false;
            // do, line 230
            v_9 = cursor;
            lab10: do {
                // (, line 230
                // and, line 230
                v_10 = cursor;
                // call Lose_prefix, line 230
                if (!r_Lose_prefix())
                {
                    break lab10;
                }
                cursor = v_10;
                // call measure, line 230
                if (!r_measure())
                {
                    break lab10;
                }
            } while (false);
            cursor = v_9;
            // backwards, line 231
            limit_backward = cursor; cursor = limit;
            // (, line 231
            // do, line 232
            v_11 = limit - cursor;
            lab11: do {
                // (, line 232
                // Boolean test GE_removed, line 232
                if (!(B_GE_removed))
                {
                    break lab11;
                }
                // call Step_1c, line 232
                if (!r_Step_1c())
                {
                    break lab11;
                }
            } while (false);
            cursor = limit - v_11;
            cursor = limit_backward;            // unset GE_removed, line 234
            B_GE_removed = false;
            // do, line 235
            v_12 = cursor;
            lab12: do {
                // (, line 235
                // and, line 235
                v_13 = cursor;
                // call Lose_infix, line 235
                if (!r_Lose_infix())
                {
                    break lab12;
                }
                cursor = v_13;
                // call measure, line 235
                if (!r_measure())
                {
                    break lab12;
                }
            } while (false);
            cursor = v_12;
            // backwards, line 236
            limit_backward = cursor; cursor = limit;
            // (, line 236
            // do, line 237
            v_14 = limit - cursor;
            lab13: do {
                // (, line 237
                // Boolean test GE_removed, line 237
                if (!(B_GE_removed))
                {
                    break lab13;
                }
                // call Step_1c, line 237
                if (!r_Step_1c())
                {
                    break lab13;
                }
            } while (false);
            cursor = limit - v_14;
            cursor = limit_backward;            // backwards, line 239
            limit_backward = cursor; cursor = limit;
            // (, line 239
            // do, line 240
            v_15 = limit - cursor;
            lab14: do {
                // (, line 240
                // call Step_7, line 240
                if (!r_Step_7())
                {
                    break lab14;
                }
                // set stemmed, line 240
                B_stemmed = true;
            } while (false);
            cursor = limit - v_15;
            // do, line 241
            v_16 = limit - cursor;
            lab15: do {
                // (, line 241
                // or, line 241
                lab16: do {
                    lab17: do {
                        // Boolean test stemmed, line 241
                        if (!(B_stemmed))
                        {
                            break lab17;
                        }
                        break lab16;
                    } while (false);
                    // Boolean test GE_removed, line 241
                    if (!(B_GE_removed))
                    {
                        break lab15;
                    }
                } while (false);
                // call Step_6, line 241
                if (!r_Step_6())
                {
                    break lab15;
                }
            } while (false);
            cursor = limit - v_16;
            cursor = limit_backward;            // do, line 243
            v_18 = cursor;
            lab18: do {
                // (, line 243
                // Boolean test Y_found, line 243
                if (!(B_Y_found))
                {
                    break lab18;
                }
                // repeat, line 243
                replab19: while(true)
                {
                    v_19 = cursor;
                    lab20: do {
                        // (, line 243
                        // goto, line 243
                        golab21: while(true)
                        {
                            v_20 = cursor;
                            lab22: do {
                                // (, line 243
                                // [, line 243
                                bra = cursor;
                                // literal, line 243
                                if (!(eq_s(1, "Y")))
                                {
                                    break lab22;
                                }
                                // ], line 243
                                ket = cursor;
                                cursor = v_20;
                                break golab21;
                            } while (false);
                            cursor = v_20;
                            if (cursor >= limit)
                            {
                                break lab20;
                            }
                            cursor++;
                        }
                        // <-, line 243
                        slice_from("y");
                        continue replab19;
                    } while (false);
                    cursor = v_19;
                    break replab19;
                }
            } while (false);
            cursor = v_18;
            return true;
        }

}

