//! Generated from greek.sbl by Snowball 3.0.0 - https://snowballstem.org/

#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(unused_mut)]
#![allow(unused_parens)]
#![allow(unused_variables)]
use crate::snowball::Among;
use crate::snowball::SnowballEnv;

#[derive(Clone)]
struct Context {
    b_test1: bool,
}

static A_0: &'static [Among<Context>; 46] = &[
    Among("", -1, 25, None),
    Among("ς", 0, 18, None),
    Among("Ά", 0, 1, None),
    Among("Έ", 0, 5, None),
    Among("Ή", 0, 7, None),
    Among("Ί", 0, 9, None),
    Among("ϊ", 0, 7, None),
    Among("ϋ", 0, 20, None),
    Among("Ό", 0, 15, None),
    Among("ό", 0, 15, None),
    Among("ύ", 0, 20, None),
    Among("Ύ", 0, 20, None),
    Among("ώ", 0, 24, None),
    Among("Ώ", 0, 24, None),
    Among("ΐ", 0, 7, None),
    Among("Α", 0, 1, None),
    Among("Β", 0, 2, None),
    Among("Γ", 0, 3, None),
    Among("Δ", 0, 4, None),
    Among("Ε", 0, 5, None),
    Among("Ζ", 0, 6, None),
    Among("Η", 0, 7, None),
    Among("Θ", 0, 8, None),
    Among("Ι", 0, 9, None),
    Among("Κ", 0, 10, None),
    Among("Λ", 0, 11, None),
    Among("Μ", 0, 12, None),
    Among("Ν", 0, 13, None),
    Among("Ξ", 0, 14, None),
    Among("Ο", 0, 15, None),
    Among("Π", 0, 16, None),
    Among("Ρ", 0, 17, None),
    Among("Σ", 0, 18, None),
    Among("Τ", 0, 19, None),
    Among("Υ", 0, 20, None),
    Among("Φ", 0, 21, None),
    Among("Χ", 0, 22, None),
    Among("Ψ", 0, 23, None),
    Among("Ω", 0, 24, None),
    Among("Ϊ", 0, 9, None),
    Among("Ϋ", 0, 20, None),
    Among("ά", 0, 1, None),
    Among("έ", 0, 5, None),
    Among("ή", 0, 7, None),
    Among("ί", 0, 9, None),
    Among("ΰ", 0, 20, None),
];

static A_1: &'static [Among<Context>; 40] = &[
    Among("καθεστωσ", -1, 10, None),
    Among("φωσ", -1, 9, None),
    Among("περασ", -1, 7, None),
    Among("τερασ", -1, 8, None),
    Among("κρεασ", -1, 6, None),
    Among("καθεστωτοσ", -1, 10, None),
    Among("φωτοσ", -1, 9, None),
    Among("περατοσ", -1, 7, None),
    Among("τερατοσ", -1, 8, None),
    Among("κρεατοσ", -1, 6, None),
    Among("γεγονοτοσ", -1, 11, None),
    Among("γεγονοσ", -1, 11, None),
    Among("φαγιου", -1, 1, None),
    Among("σκαγιου", -1, 2, None),
    Among("σογιου", -1, 4, None),
    Among("τατογιου", -1, 5, None),
    Among("ολογιου", -1, 3, None),
    Among("καθεστωτα", -1, 10, None),
    Among("φωτα", -1, 9, None),
    Among("περατα", -1, 7, None),
    Among("τερατα", -1, 8, None),
    Among("κρεατα", -1, 6, None),
    Among("γεγονοτα", -1, 11, None),
    Among("φαγια", -1, 1, None),
    Among("σκαγια", -1, 2, None),
    Among("σογια", -1, 4, None),
    Among("τατογια", -1, 5, None),
    Among("ολογια", -1, 3, None),
    Among("περατη", -1, 7, None),
    Among("καθεστωτων", -1, 10, None),
    Among("φωτων", -1, 9, None),
    Among("περατων", -1, 7, None),
    Among("τερατων", -1, 8, None),
    Among("κρεατων", -1, 6, None),
    Among("γεγονοτων", -1, 11, None),
    Among("φαγιων", -1, 1, None),
    Among("σκαγιων", -1, 2, None),
    Among("σογιων", -1, 4, None),
    Among("τατογιων", -1, 5, None),
    Among("ολογιων", -1, 3, None),
];

static A_2: &'static [Among<Context>; 31] = &[
    Among("π", -1, 2, None),
    Among("ιμπ", 0, 2, None),
    Among("ρ", -1, 2, None),
    Among("πρ", 2, 2, None),
    Among("μπρ", 3, 2, None),
    Among("αρρ", 2, 2, None),
    Among("γλυκυρ", 2, 2, None),
    Among("πολυρ", 2, 2, None),
    Among("αμπαρ", 2, 2, None),
    Among("μαρ", 2, 2, None),
    Among("γκρ", 2, 2, None),
    Among("πιπερορ", 2, 2, None),
    Among("βολβορ", 2, 2, None),
    Among("γλυκορ", 2, 2, None),
    Among("λου", -1, 2, None),
    Among("πα", -1, 1, None),
    Among("ξαναπα", 15, 1, None),
    Among("επα", 15, 1, None),
    Among("περιπα", 15, 1, None),
    Among("αναμπα", 15, 1, None),
    Among("εμπα", 15, 1, None),
    Among("β", -1, 2, None),
    Among("δανε", -1, 1, None),
    Among("βαθυρι", -1, 2, None),
    Among("βαρκ", -1, 2, None),
    Among("μαρκ", -1, 2, None),
    Among("λ", -1, 2, None),
    Among("μ", -1, 2, None),
    Among("κορν", -1, 2, None),
    Among("αθρο", -1, 1, None),
    Among("συναθρο", 29, 1, None),
];

static A_3: &'static [Among<Context>; 14] = &[
    Among("ιζεσ", -1, 1, None),
    Among("ιζεισ", -1, 1, None),
    Among("ιζω", -1, 1, None),
    Among("ιζα", -1, 1, None),
    Among("ιζατε", -1, 1, None),
    Among("ιζετε", -1, 1, None),
    Among("ιζε", -1, 1, None),
    Among("ιζουμε", -1, 1, None),
    Among("ιζαμε", -1, 1, None),
    Among("ιζουνε", -1, 1, None),
    Among("ιζανε", -1, 1, None),
    Among("ιζει", -1, 1, None),
    Among("ιζουν", -1, 1, None),
    Among("ιζαν", -1, 1, None),
];

static A_4: &'static [Among<Context>; 8] = &[
    Among("σ", -1, 1, None),
    Among("χ", -1, 1, None),
    Among("υψ", -1, 1, None),
    Among("ζω", -1, 1, None),
    Among("βι", -1, 1, None),
    Among("λι", -1, 1, None),
    Among("αλ", -1, 1, None),
    Among("εν", -1, 1, None),
];

static A_5: &'static [Among<Context>; 7] = &[
    Among("ωθηκεσ", -1, 1, None),
    Among("ωθηκα", -1, 1, None),
    Among("ωθηκατε", -1, 1, None),
    Among("ωθηκε", -1, 1, None),
    Among("ωθηκαμε", -1, 1, None),
    Among("ωθηκανε", -1, 1, None),
    Among("ωθηκαν", -1, 1, None),
];

static A_6: &'static [Among<Context>; 32] = &[
    Among("π", -1, 2, None),
    Among("λαρ", -1, 2, None),
    Among("δημοκρατ", -1, 2, None),
    Among("αφ", -1, 2, None),
    Among("γιγαντοαφ", 3, 2, None),
    Among("ξαναπα", -1, 1, None),
    Among("επα", -1, 1, None),
    Among("περιπα", -1, 1, None),
    Among("αναμπα", -1, 1, None),
    Among("εμπα", -1, 1, None),
    Among("χαρτοπα", -1, 1, None),
    Among("εξαρχα", -1, 1, None),
    Among("πε", -1, 1, None),
    Among("επε", 12, 1, None),
    Among("μετεπε", 13, 1, None),
    Among("εσε", -1, 1, None),
    Among("γε", -1, 2, None),
    Among("γκε", -1, 2, None),
    Among("κλε", -1, 1, None),
    Among("εσωκλε", 18, 1, None),
    Among("εκλε", 18, 1, None),
    Among("απεκλε", 20, 1, None),
    Among("αποκλε", 18, 1, None),
    Among("δανε", -1, 1, None),
    Among("γκ", -1, 2, None),
    Among("μ", -1, 2, None),
    Among("πουκαμ", 25, 2, None),
    Among("κομ", 25, 2, None),
    Among("αν", -1, 2, None),
    Among("αθρο", -1, 1, None),
    Among("συναθρο", 29, 1, None),
    Among("ολο", -1, 2, None),
];

static A_7: &'static [Among<Context>; 7] = &[
    Among("ισεσ", -1, 1, None),
    Among("ισα", -1, 1, None),
    Among("ισε", -1, 1, None),
    Among("ισατε", -1, 1, None),
    Among("ισαμε", -1, 1, None),
    Among("ισανε", -1, 1, None),
    Among("ισαν", -1, 1, None),
];

static A_8: &'static [Among<Context>; 19] = &[
    Among("ξαναπα", -1, 1, None),
    Among("επα", -1, 1, None),
    Among("περιπα", -1, 1, None),
    Among("αναμπα", -1, 1, None),
    Among("εμπα", -1, 1, None),
    Among("χαρτοπα", -1, 1, None),
    Among("εξαρχα", -1, 1, None),
    Among("πε", -1, 1, None),
    Among("επε", 7, 1, None),
    Among("μετεπε", 8, 1, None),
    Among("εσε", -1, 1, None),
    Among("κλε", -1, 1, None),
    Among("εσωκλε", 11, 1, None),
    Among("εκλε", 11, 1, None),
    Among("απεκλε", 13, 1, None),
    Among("αποκλε", 11, 1, None),
    Among("δανε", -1, 1, None),
    Among("αθρο", -1, 1, None),
    Among("συναθρο", 17, 1, None),
];

static A_9: &'static [Among<Context>; 7] = &[
    Among("ισεισ", -1, 1, None),
    Among("ισω", -1, 1, None),
    Among("ισετε", -1, 1, None),
    Among("ισουμε", -1, 1, None),
    Among("ισουνε", -1, 1, None),
    Among("ισει", -1, 1, None),
    Among("ισουν", -1, 1, None),
];

static A_10: &'static [Among<Context>; 40] = &[
    Among("π", -1, 2, None),
    Among("ευπ", 0, 2, None),
    Among("απ", 0, 2, None),
    Among("εμπ", 0, 2, None),
    Among("γυρ", -1, 2, None),
    Among("χρ", -1, 2, None),
    Among("χωρ", -1, 2, None),
    Among("αρ", -1, 2, None),
    Among("αορ", -1, 2, None),
    Among("χτ", -1, 2, None),
    Among("αχτ", 9, 2, None),
    Among("κτ", -1, 2, None),
    Among("ακτ", 11, 2, None),
    Among("σχ", -1, 2, None),
    Among("ασχ", 13, 2, None),
    Among("ταχ", -1, 2, None),
    Among("υψ", -1, 2, None),
    Among("ατα", -1, 2, None),
    Among("φα", -1, 2, None),
    Among("ηφα", 18, 2, None),
    Among("λυγ", -1, 2, None),
    Among("μεγ", -1, 2, None),
    Among("ηδ", -1, 2, None),
    Among("σε", -1, 1, None),
    Among("ασε", 23, 1, None),
    Among("πλε", -1, 1, None),
    Among("κλε", -1, 1, None),
    Among("εσωκλε", 26, 1, None),
    Among("δανε", -1, 1, None),
    Among("εχθ", -1, 2, None),
    Among("καθ", -1, 2, None),
    Among("σκ", -1, 2, None),
    Among("κακ", -1, 2, None),
    Among("μακ", -1, 2, None),
    Among("κυλ", -1, 2, None),
    Among("φιλ", -1, 2, None),
    Among("μ", -1, 2, None),
    Among("γεμ", 36, 2, None),
    Among("αχν", -1, 2, None),
    Among("συναθρο", -1, 1, None),
];

static A_11: &'static [Among<Context>; 11] = &[
    Among("ιστουσ", -1, 1, None),
    Among("ιστεσ", -1, 1, None),
    Among("ιστησ", -1, 1, None),
    Among("ιστοσ", -1, 1, None),
    Among("ιστου", -1, 1, None),
    Among("ιστα", -1, 1, None),
    Among("ιστε", -1, 1, None),
    Among("ιστη", -1, 1, None),
    Among("ιστοι", -1, 1, None),
    Among("ιστων", -1, 1, None),
    Among("ιστο", -1, 1, None),
];

static A_12: &'static [Among<Context>; 7] = &[
    Among("σε", -1, 1, None),
    Among("μετασε", 0, 1, None),
    Among("μικροσε", 0, 1, None),
    Among("εγκλε", -1, 1, None),
    Among("αποκλε", -1, 1, None),
    Among("δανε", -1, 2, None),
    Among("αντιδανε", 5, 2, None),
];

static A_13: &'static [Among<Context>; 10] = &[
    Among("τοπικ", -1, 7, None),
    Among("σκεπτικ", -1, 6, None),
    Among("γνωστικ", -1, 3, None),
    Among("αγνωστικ", 2, 1, None),
    Among("εκλεκτικ", -1, 5, None),
    Among("ατομικ", -1, 2, None),
    Among("εθνικ", -1, 4, None),
    Among("θεατριν", -1, 10, None),
    Among("αλεξανδριν", -1, 8, None),
    Among("βυζαντιν", -1, 9, None),
];

static A_14: &'static [Among<Context>; 6] = &[
    Among("ισμουσ", -1, 1, None),
    Among("ισμοσ", -1, 1, None),
    Among("ισμου", -1, 1, None),
    Among("ισμοι", -1, 1, None),
    Among("ισμων", -1, 1, None),
    Among("ισμο", -1, 1, None),
];

static A_15: &'static [Among<Context>; 2] = &[Among("σ", -1, 1, None), Among("χ", -1, 1, None)];

static A_16: &'static [Among<Context>; 4] = &[
    Among("αρακια", -1, 1, None),
    Among("ουδακια", -1, 1, None),
    Among("αρακι", -1, 1, None),
    Among("ουδακι", -1, 1, None),
];

static A_17: &'static [Among<Context>; 46] = &[
    Among("π", -1, 2, None),
    Among("κατραπ", 0, 1, None),
    Among("ρ", -1, 1, None),
    Among("βρ", 2, 1, None),
    Among("λαβρ", 3, 1, None),
    Among("αμβρ", 3, 1, None),
    Among("πατερ", 2, 2, None),
    Among("μερ", 2, 1, None),
    Among("ανθρ", 2, 1, None),
    Among("κορ", 2, 1, None),
    Among("σ", -1, 1, None),
    Among("ναγκασ", 10, 1, None),
    Among("τοσ", 10, 2, None),
    Among("μουστ", -1, 1, None),
    Among("ρυ", -1, 1, None),
    Among("φ", -1, 1, None),
    Among("σφ", 15, 1, None),
    Among("αλισφ", 16, 1, None),
    Among("νυφ", 15, 2, None),
    Among("χ", -1, 1, None),
    Among("β", -1, 2, None),
    Among("βαμβ", 20, 1, None),
    Among("σλοβ", 20, 1, None),
    Among("τσεχοσλοβ", 22, 1, None),
    Among("καρδ", -1, 2, None),
    Among("ζ", -1, 2, None),
    Among("τζ", 25, 1, None),
    Among("κ", -1, 1, None),
    Among("σκ", 27, 1, None),
    Among("καπακ", 27, 1, None),
    Among("σοκ", 27, 1, None),
    Among("πλ", -1, 1, None),
    Among("φυλ", -1, 1, None),
    Among("λουλ", -1, 1, None),
    Among("βαλ", -1, 2, None),
    Among("μαλ", -1, 1, None),
    Among("γλ", -1, 2, None),
    Among("τριπολ", -1, 2, None),
    Among("φαρμ", -1, 1, None),
    Among("καιμ", -1, 1, None),
    Among("κλιμ", -1, 1, None),
    Among("μακρυν", -1, 2, None),
    Among("σπαν", -1, 1, None),
    Among("γιαν", -1, 2, None),
    Among("ηγουμεν", -1, 2, None),
    Among("κον", -1, 1, None),
];

static A_18: &'static [Among<Context>; 8] = &[
    Among("ιτσασ", -1, 1, None),
    Among("ιτσεσ", -1, 1, None),
    Among("ιτσα", -1, 1, None),
    Among("ακια", -1, 1, None),
    Among("αρακια", 3, 1, None),
    Among("ακι", -1, 1, None),
    Among("αρακι", 5, 1, None),
    Among("ιτσων", -1, 1, None),
];

static A_19: &'static [Among<Context>; 4] = &[
    Among("ιρ", -1, 1, None),
    Among("ψαλ", -1, 1, None),
    Among("αιφν", -1, 1, None),
    Among("ολο", -1, 1, None),
];

static A_20: &'static [Among<Context>; 2] = &[Among("ε", -1, 1, None), Among("παιχν", -1, 1, None)];

static A_21: &'static [Among<Context>; 3] = &[
    Among("ιδια", -1, 1, None),
    Among("ιδιων", -1, 1, None),
    Among("ιδιο", -1, 1, None),
];

static A_22: &'static [Among<Context>; 7] = &[
    Among("ρ", -1, 1, None),
    Among("ιβ", -1, 1, None),
    Among("δ", -1, 1, None),
    Among("λυκ", -1, 1, None),
    Among("φραγκ", -1, 1, None),
    Among("οβελ", -1, 1, None),
    Among("μην", -1, 1, None),
];

static A_23: &'static [Among<Context>; 4] = &[
    Among("ισκοσ", -1, 1, None),
    Among("ισκου", -1, 1, None),
    Among("ισκε", -1, 1, None),
    Among("ισκο", -1, 1, None),
];

static A_24: &'static [Among<Context>; 2] =
    &[Among("αδεσ", -1, 1, None), Among("αδων", -1, 1, None)];

static A_25: &'static [Among<Context>; 10] = &[
    Among("μπαμπ", -1, -1, None),
    Among("κυρ", -1, -1, None),
    Among("πατερ", -1, -1, None),
    Among("πεθερ", -1, -1, None),
    Among("νταντ", -1, -1, None),
    Among("γιαγι", -1, -1, None),
    Among("θει", -1, -1, None),
    Among("οκ", -1, -1, None),
    Among("μαμ", -1, -1, None),
    Among("μαν", -1, -1, None),
];

static A_26: &'static [Among<Context>; 2] =
    &[Among("εδεσ", -1, 1, None), Among("εδων", -1, 1, None)];

static A_27: &'static [Among<Context>; 8] = &[
    Among("κρασπ", -1, 1, None),
    Among("υπ", -1, 1, None),
    Among("δαπ", -1, 1, None),
    Among("γηπ", -1, 1, None),
    Among("ιπ", -1, 1, None),
    Among("εμπ", -1, 1, None),
    Among("οπ", -1, 1, None),
    Among("μιλ", -1, 1, None),
];

static A_28: &'static [Among<Context>; 2] =
    &[Among("ουδεσ", -1, 1, None), Among("ουδων", -1, 1, None)];

static A_29: &'static [Among<Context>; 15] = &[
    Among("σπ", -1, 1, None),
    Among("φρ", -1, 1, None),
    Among("σ", -1, 1, None),
    Among("λιχ", -1, 1, None),
    Among("τραγ", -1, 1, None),
    Among("φε", -1, 1, None),
    Among("αρκ", -1, 1, None),
    Among("σκ", -1, 1, None),
    Among("καλιακ", -1, 1, None),
    Among("λουλ", -1, 1, None),
    Among("φλ", -1, 1, None),
    Among("πεταλ", -1, 1, None),
    Among("βελ", -1, 1, None),
    Among("χν", -1, 1, None),
    Among("πλεξ", -1, 1, None),
];

static A_30: &'static [Among<Context>; 2] = &[Among("εωσ", -1, 1, None), Among("εων", -1, 1, None)];

static A_31: &'static [Among<Context>; 8] = &[
    Among("π", -1, 1, None),
    Among("παρ", -1, 1, None),
    Among("δ", -1, 1, None),
    Among("ιδ", 2, 1, None),
    Among("θ", -1, 1, None),
    Among("γαλ", -1, 1, None),
    Among("ελ", -1, 1, None),
    Among("ν", -1, 1, None),
];

static A_32: &'static [Among<Context>; 3] = &[
    Among("ιου", -1, 1, None),
    Among("ια", -1, 1, None),
    Among("ιων", -1, 1, None),
];

static A_33: &'static [Among<Context>; 4] = &[
    Among("ικου", -1, 1, None),
    Among("ικα", -1, 1, None),
    Among("ικων", -1, 1, None),
    Among("ικο", -1, 1, None),
];

static A_34: &'static [Among<Context>; 36] = &[
    Among("καλπ", -1, 1, None),
    Among("γερ", -1, 1, None),
    Among("πλιατσ", -1, 1, None),
    Among("πετσ", -1, 1, None),
    Among("πιτσ", -1, 1, None),
    Among("φυσ", -1, 1, None),
    Among("χασ", -1, 1, None),
    Among("μποσ", -1, 1, None),
    Among("σερτ", -1, 1, None),
    Among("μπαγιατ", -1, 1, None),
    Among("νιτ", -1, 1, None),
    Among("πικαντ", -1, 1, None),
    Among("εξωδ", -1, 1, None),
    Among("αδ", -1, 1, None),
    Among("καταδ", 13, 1, None),
    Among("συναδ", 13, 1, None),
    Among("αντιδ", -1, 1, None),
    Among("ενδ", -1, 1, None),
    Among("υποδ", -1, 1, None),
    Among("πρωτοδ", -1, 1, None),
    Among("φυλοδ", -1, 1, None),
    Among("ηθ", -1, 1, None),
    Among("ανηθ", 21, 1, None),
    Among("ξικ", -1, 1, None),
    Among("μουλ", -1, 1, None),
    Among("αλ", -1, 1, None),
    Among("αμμοχαλ", 25, 1, None),
    Among("συνομηλ", -1, 1, None),
    Among("μπολ", -1, 1, None),
    Among("βρωμ", -1, 1, None),
    Among("τσαμ", -1, 1, None),
    Among("μπαν", -1, 1, None),
    Among("αμαν", -1, 1, None),
    Among("καλλιν", -1, 1, None),
    Among("ποστελν", -1, 1, None),
    Among("φιλον", -1, 1, None),
];

static A_35: &'static [Among<Context>; 5] = &[
    Among("ουσαμε", -1, 1, None),
    Among("ησαμε", -1, 1, None),
    Among("αγαμε", -1, 1, None),
    Among("ηκαμε", -1, 1, None),
    Among("ηθηκαμε", 3, 1, None),
];

static A_36: &'static [Among<Context>; 12] = &[
    Among("αναπ", -1, 1, None),
    Among("πικρ", -1, 1, None),
    Among("αποστ", -1, 1, None),
    Among("ποτ", -1, 1, None),
    Among("χ", -1, 1, None),
    Among("σιχ", 4, 1, None),
    Among("βουβ", -1, 1, None),
    Among("πεθ", -1, 1, None),
    Among("ξεθ", -1, 1, None),
    Among("αποθ", -1, 1, None),
    Among("αποκ", -1, 1, None),
    Among("ουλ", -1, 1, None),
];

static A_37: &'static [Among<Context>; 2] = &[Among("τρ", -1, 1, None), Among("τσ", -1, 1, None)];

static A_38: &'static [Among<Context>; 11] = &[
    Among("ουσανε", -1, 1, None),
    Among("ησανε", -1, 1, None),
    Among("ουντανε", -1, 1, None),
    Among("ιουντανε", 2, 1, None),
    Among("οντανε", -1, 1, None),
    Among("ιοντανε", 4, 1, None),
    Among("οτανε", -1, 1, None),
    Among("ιοτανε", 6, 1, None),
    Among("αγανε", -1, 1, None),
    Among("ηκανε", -1, 1, None),
    Among("ηθηκανε", 9, 1, None),
];

static A_39: &'static [Among<Context>; 95] = &[
    Among("π", -1, 1, None),
    Among("σπ", 0, 1, None),
    Among("πολυδαπ", 0, 1, None),
    Among("αδαπ", 0, 1, None),
    Among("χαμηλοδαπ", 0, 1, None),
    Among("τσοπ", 0, 1, None),
    Among("κοπ", 0, 1, None),
    Among("υποκοπ", 6, 1, None),
    Among("περιτρ", -1, 1, None),
    Among("ουρ", -1, 1, None),
    Among("ερ", -1, 1, None),
    Among("βετερ", 10, 1, None),
    Among("γερ", 10, 1, None),
    Among("λουθηρ", -1, 1, None),
    Among("κορμορ", -1, 1, None),
    Among("σ", -1, 1, None),
    Among("σαρακατσ", 15, 1, None),
    Among("θυσ", 15, 1, None),
    Among("βασ", 15, 1, None),
    Among("πολισ", 15, 1, None),
    Among("καστ", -1, 1, None),
    Among("διατ", -1, 1, None),
    Among("πλατ", -1, 1, None),
    Among("τσαρλατ", -1, 1, None),
    Among("τετ", -1, 1, None),
    Among("πουριτ", -1, 1, None),
    Among("σουλτ", -1, 1, None),
    Among("ζωντ", -1, 1, None),
    Among("μαιντ", -1, 1, None),
    Among("φ", -1, 1, None),
    Among("πενταρφ", 29, 1, None),
    Among("κοιλαρφ", 29, 1, None),
    Among("ορφ", 29, 1, None),
    Among("διαφ", 29, 1, None),
    Among("στεφ", 29, 1, None),
    Among("φωτοστεφ", 34, 1, None),
    Among("περηφ", 29, 1, None),
    Among("υπερηφ", 36, 1, None),
    Among("χ", -1, 1, None),
    Among("πολυμηχ", 38, 1, None),
    Among("αμηχ", 38, 1, None),
    Among("βιομηχ", 38, 1, None),
    Among("μικροβιομηχ", 41, 1, None),
    Among("μεγλοβιομηχ", 41, 1, None),
    Among("καπνοβιομηχ", 41, 1, None),
    Among("λιχ", 38, 1, None),
    Among("ταβ", -1, 1, None),
    Among("νταβ", 46, 1, None),
    Among("ψηλοταβ", 46, 1, None),
    Among("λιβ", -1, 1, None),
    Among("κλιβ", 49, 1, None),
    Among("ξηροκλιβ", 50, 1, None),
    Among("γ", -1, 1, None),
    Among("ανοργ", 52, 1, None),
    Among("ενοργ", 52, 1, None),
    Among("αγ", 52, 1, None),
    Among("τραγ", 55, 1, None),
    Among("τσαγ", 55, 1, None),
    Among("τσιγγ", 52, 1, None),
    Among("ατσιγγ", 58, 1, None),
    Among("αθιγγ", 52, 1, None),
    Among("στεγ", 52, 1, None),
    Among("απηγ", 52, 1, None),
    Among("σιγ", 52, 1, None),
    Among("καλπουζ", -1, 1, None),
    Among("θ", -1, 1, None),
    Among("μωαμεθ", 65, 1, None),
    Among("πιθ", 65, 1, None),
    Among("απιθ", 67, 1, None),
    Among("βασκ", -1, 1, None),
    Among("βραχυκ", -1, 1, None),
    Among("δεκ", -1, 1, None),
    Among("πελεκ", -1, 1, None),
    Among("ικ", -1, 1, None),
    Among("ανικ", 73, 1, None),
    Among("βουλκ", -1, 1, None),
    Among("πλ", -1, 1, None),
    Among("διπλ", 76, 1, None),
    Among("ψυχοπλ", 76, 1, None),
    Among("λαοπλ", 76, 1, None),
    Among("ουλ", -1, 1, None),
    Among("γαλ", -1, 1, None),
    Among("βαθυγαλ", 81, 1, None),
    Among("καταγαλ", 81, 1, None),
    Among("ολογαλ", 81, 1, None),
    Among("καστελ", -1, 1, None),
    Among("μελ", -1, 1, None),
    Among("πορτολ", -1, 1, None),
    Among("μ", -1, 1, None),
    Among("δραδουμ", 88, 1, None),
    Among("βραχμ", 88, 1, None),
    Among("ολιγοδαμ", 88, 1, None),
    Among("μουσουλμ", 88, 1, None),
    Among("ν", -1, 1, None),
    Among("αμερικαν", 93, 1, None),
];

static A_40: &'static [Among<Context>; 31] = &[
    Among("πυρ", -1, 1, None),
    Among("ευρ", -1, 1, None),
    Among("χωρ", -1, 1, None),
    Among("βαρ", -1, 1, None),
    Among("βρ", -1, 1, None),
    Among("αιρ", -1, 1, None),
    Among("φορ", -1, 1, None),
    Among("νετ", -1, 1, None),
    Among("σχ", -1, 1, None),
    Among("συνδ", -1, 1, None),
    Among("ενδ", -1, 1, None),
    Among("οδ", -1, 1, None),
    Among("υπερθ", -1, 1, None),
    Among("σθ", -1, 1, None),
    Among("ευθ", -1, 1, None),
    Among("ραθ", -1, 1, None),
    Among("ταθ", -1, 1, None),
    Among("διαθ", -1, 1, None),
    Among("καθ", -1, 1, None),
    Among("τιθ", -1, 1, None),
    Among("εκθ", -1, 1, None),
    Among("συνθ", -1, 1, None),
    Among("ενθ", -1, 1, None),
    Among("ροθ", -1, 1, None),
    Among("αρκ", -1, 1, None),
    Among("ωφελ", -1, 1, None),
    Among("βολ", -1, 1, None),
    Among("συν", -1, 1, None),
    Among("αιν", -1, 1, None),
    Among("πον", -1, 1, None),
    Among("ρον", -1, 1, None),
];

static A_41: &'static [Among<Context>; 25] = &[
    Among("σερπ", -1, 1, None),
    Among("κοπ", -1, 1, None),
    Among("θαρρ", -1, 1, None),
    Among("ντρ", -1, 1, None),
    Among("αβαρ", -1, 1, None),
    Among("εναρ", -1, 1, None),
    Among("αβρ", -1, 1, None),
    Among("μπορ", -1, 1, None),
    Among("υ", -1, 1, None),
    Among("συρφ", -1, 1, None),
    Among("νιφ", -1, 1, None),
    Among("παγ", -1, 1, None),
    Among("δ", -1, 1, None),
    Among("αδ", 12, 1, None),
    Among("θ", -1, 1, None),
    Among("αθ", 14, 1, None),
    Among("σκ", -1, 1, None),
    Among("τοκ", -1, 1, None),
    Among("απλ", -1, 1, None),
    Among("παρακαλ", -1, 1, None),
    Among("σκελ", -1, 1, None),
    Among("εμ", -1, 1, None),
    Among("αν", -1, 1, None),
    Among("βεν", -1, 1, None),
    Among("βαρον", -1, 1, None),
];

static A_42: &'static [Among<Context>; 2] =
    &[Among("ωντασ", -1, 1, None), Among("οντασ", -1, 1, None)];

static A_43: &'static [Among<Context>; 2] =
    &[Among("ομαστε", -1, 1, None), Among("ιομαστε", 0, 1, None)];

static A_44: &'static [Among<Context>; 6] = &[
    Among("π", -1, 1, None),
    Among("απ", 0, 1, None),
    Among("ακαταπ", 1, 1, None),
    Among("συμπ", 0, 1, None),
    Among("ασυμπ", 3, 1, None),
    Among("αμεταμφ", -1, 1, None),
];

static A_45: &'static [Among<Context>; 9] = &[
    Among("αρ", -1, 1, None),
    Among("νισ", -1, 1, None),
    Among("ζ", -1, 1, None),
    Among("αλ", -1, 1, None),
    Among("παρακαλ", 3, 1, None),
    Among("εκτελ", -1, 1, None),
    Among("μ", -1, 1, None),
    Among("ξ", -1, 1, None),
    Among("προ", -1, 1, None),
];

static A_46: &'static [Among<Context>; 3] = &[
    Among("ηθηκεσ", -1, 1, None),
    Among("ηθηκα", -1, 1, None),
    Among("ηθηκε", -1, 1, None),
];

static A_47: &'static [Among<Context>; 6] = &[
    Among("σφ", -1, 1, None),
    Among("ναρθ", -1, 1, None),
    Among("πιθ", -1, 1, None),
    Among("οθ", -1, 1, None),
    Among("σκουλ", -1, 1, None),
    Among("σκωλ", -1, 1, None),
];

static A_48: &'static [Among<Context>; 5] = &[
    Among("θ", -1, 1, None),
    Among("προσθ", 0, 1, None),
    Among("παρακαταθ", 0, 1, None),
    Among("διαθ", 0, 1, None),
    Among("συνθ", 0, 1, None),
];

static A_49: &'static [Among<Context>; 3] = &[
    Among("ηκεσ", -1, 1, None),
    Among("ηκα", -1, 1, None),
    Among("ηκε", -1, 1, None),
];

static A_50: &'static [Among<Context>; 12] = &[
    Among("βλεπ", -1, 1, None),
    Among("ποδαρ", -1, 1, None),
    Among("πρωτ", -1, 1, None),
    Among("κυματ", -1, 1, None),
    Among("πανταχ", -1, 1, None),
    Among("λαχ", -1, 1, None),
    Among("φαγ", -1, 1, None),
    Among("ληγ", -1, 1, None),
    Among("φρυδ", -1, 1, None),
    Among("μαντιλ", -1, 1, None),
    Among("μαλλ", -1, 1, None),
    Among("ομ", -1, 1, None),
];

static A_51: &'static [Among<Context>; 25] = &[
    Among("εκλιπ", -1, 1, None),
    Among("ρ", -1, 1, None),
    Among("αναρρ", 1, 1, None),
    Among("ενδιαφερ", 1, 1, None),
    Among("πατ", -1, 1, None),
    Among("καθαρευ", -1, 1, None),
    Among("δευτερευ", -1, 1, None),
    Among("λεχ", -1, 1, None),
    Among("τσα", -1, 1, None),
    Among("χαδ", -1, 1, None),
    Among("μεδ", -1, 1, None),
    Among("λαμπιδ", -1, 1, None),
    Among("δε", -1, 1, None),
    Among("πλε", -1, 1, None),
    Among("μεσαζ", -1, 1, None),
    Among("δεσποζ", -1, 1, None),
    Among("αιθ", -1, 1, None),
    Among("φαρμακ", -1, 1, None),
    Among("αγκ", -1, 1, None),
    Among("ανηκ", -1, 1, None),
    Among("λ", -1, 1, None),
    Among("μ", -1, 1, None),
    Among("αμ", 21, 1, None),
    Among("βρομ", 21, 1, None),
    Among("υποτειν", -1, 1, None),
];

static A_52: &'static [Among<Context>; 3] = &[
    Among("ουσεσ", -1, 1, None),
    Among("ουσα", -1, 1, None),
    Among("ουσε", -1, 1, None),
];

static A_53: &'static [Among<Context>; 12] = &[
    Among("ρπ", -1, 1, None),
    Among("πρ", -1, 1, None),
    Among("φρ", -1, 1, None),
    Among("χορτ", -1, 1, None),
    Among("σφ", -1, 1, None),
    Among("οφ", -1, 1, None),
    Among("ψοφ", 5, -1, None),
    Among("λοχ", -1, 1, None),
    Among("ναυλοχ", 7, -1, None),
    Among("πελ", -1, 1, None),
    Among("λλ", -1, 1, None),
    Among("σμην", -1, 1, None),
];

static A_54: &'static [Among<Context>; 44] = &[
    Among("π", -1, 1, None),
    Among("ασπ", 0, 1, None),
    Among("ανυπ", 0, 1, None),
    Among("αρτιπ", 0, 1, None),
    Among("αειπ", 0, 1, None),
    Among("συμπ", 0, 1, None),
    Among("προσωποπ", 0, 1, None),
    Among("σιδηροπ", 0, 1, None),
    Among("δροσοπ", 0, 1, None),
    Among("νεοπ", 0, 1, None),
    Among("κροκαλοπ", 0, 1, None),
    Among("ολοπ", 0, 1, None),
    Among("ρ", -1, 1, None),
    Among("τρ", 12, 1, None),
    Among("ουρ", 12, 1, None),
    Among("ασπαρ", 12, 1, None),
    Among("χαρ", 12, 1, None),
    Among("αχαρ", 16, 1, None),
    Among("απερ", 12, 1, None),
    Among("τ", -1, 1, None),
    Among("ανυστ", 19, 1, None),
    Among("αβαστ", 19, 1, None),
    Among("προστ", 19, 1, None),
    Among("αιμοστ", 19, 1, None),
    Among("διατ", 19, 1, None),
    Among("επιτ", 19, 1, None),
    Among("συντ", 19, 1, None),
    Among("υποτ", 19, 1, None),
    Among("αποτ", 19, 1, None),
    Among("ομοτ", 19, 1, None),
    Among("νομοτ", 29, 1, None),
    Among("ναυ", -1, 1, None),
    Among("πολυφ", -1, 1, None),
    Among("αφ", -1, 1, None),
    Among("ξεφ", -1, 1, None),
    Among("αδηφ", -1, 1, None),
    Among("παμφ", -1, 1, None),
    Among("αμαλλι", -1, 1, None),
    Among("λ", -1, 1, None),
    Among("αμαλ", 38, 1, None),
    Among("μ", -1, 1, None),
    Among("ουλαμ", 40, 1, None),
    Among("εν", -1, 1, None),
    Among("δερβεν", 42, 1, None),
];

static A_55: &'static [Among<Context>; 3] = &[
    Among("αγεσ", -1, 1, None),
    Among("αγα", -1, 1, None),
    Among("αγε", -1, 1, None),
];

static A_56: &'static [Among<Context>; 3] = &[
    Among("ησου", -1, 1, None),
    Among("ησα", -1, 1, None),
    Among("ησε", -1, 1, None),
];

static A_57: &'static [Among<Context>; 6] = &[
    Among("ν", -1, 1, None),
    Among("επταν", 0, 1, None),
    Among("δωδεκαν", 0, 1, None),
    Among("χερσον", 0, 1, None),
    Among("μεγαλον", 0, 1, None),
    Among("ερημον", 0, 1, None),
];

static A_58: &'static [Among<Context>; 10] = &[
    Among("χρ", -1, 1, None),
    Among("δυσχρ", 0, 1, None),
    Among("ευχρ", 0, 1, None),
    Among("αχρ", 0, 1, None),
    Among("κοινοχρ", 0, 1, None),
    Among("παλιμψ", -1, 1, None),
    Among("σβ", -1, 1, None),
    Among("ασβ", 6, 1, None),
    Among("απλ", -1, 1, None),
    Among("αειμν", -1, 1, None),
];

static A_59: &'static [Among<Context>; 3] = &[
    Among("ουνε", -1, 1, None),
    Among("ησουνε", 0, 1, None),
    Among("ηθουνε", 0, 1, None),
];

static A_60: &'static [Among<Context>; 6] = &[
    Among("ρ", -1, 1, None),
    Among("στραβομουτσ", -1, 1, None),
    Among("κακομουτσ", -1, 1, None),
    Among("σπι", -1, 1, None),
    Among("ν", -1, 1, None),
    Among("εξων", 4, 1, None),
];

static A_61: &'static [Among<Context>; 3] = &[
    Among("ουμε", -1, 1, None),
    Among("ησουμε", 0, 1, None),
    Among("ηθουμε", 0, 1, None),
];

static A_62: &'static [Among<Context>; 7] = &[
    Among("ασουσ", -1, 1, None),
    Among("παρασουσ", 0, 1, None),
    Among("αλλοσουσ", -1, 1, None),
    Among("φ", -1, 1, None),
    Among("χ", -1, 1, None),
    Among("αζ", -1, 1, None),
    Among("ωριοπλ", -1, 1, None),
];

static A_63: &'static [Among<Context>; 3] = &[
    Among("ματοσ", -1, 1, None),
    Among("ματα", -1, 1, None),
    Among("ματων", -1, 1, None),
];

static A_64: &'static [Among<Context>; 84] = &[
    Among("υσ", -1, 1, None),
    Among("ουσ", 0, 1, None),
    Among("ασ", -1, 1, None),
    Among("εσ", -1, 1, None),
    Among("ησεσ", 3, 1, None),
    Among("ηδεσ", 3, 1, None),
    Among("ησ", -1, 1, None),
    Among("εισ", -1, 1, None),
    Among("ηθεισ", 7, 1, None),
    Among("οσ", -1, 1, None),
    Among("υ", -1, 1, None),
    Among("ου", 10, 1, None),
    Among("ω", -1, 1, None),
    Among("ησω", 12, 1, None),
    Among("αω", 12, 1, None),
    Among("ηθω", 12, 1, None),
    Among("α", -1, 1, None),
    Among("ιουμα", 16, 1, None),
    Among("οσουνα", 16, 1, None),
    Among("ιοσουνα", 18, 1, None),
    Among("ομουνα", 16, 1, None),
    Among("ιομουνα", 20, 1, None),
    Among("ε", -1, 1, None),
    Among("ιεσαστε", 22, 1, None),
    Among("οσαστε", 22, 1, None),
    Among("ιοσαστε", 24, 1, None),
    Among("ουμαστε", 22, 1, None),
    Among("ιουμαστε", 26, 1, None),
    Among("ιεμαστε", 22, 1, None),
    Among("ουσατε", 22, 1, None),
    Among("ησατε", 22, 1, None),
    Among("αγατε", 22, 1, None),
    Among("ηκατε", 22, 1, None),
    Among("ηθηκατε", 32, 1, None),
    Among("ειτε", 22, 1, None),
    Among("ηθειτε", 34, 1, None),
    Among("η", -1, 1, None),
    Among("ι", -1, 1, None),
    Among("ασαι", 37, 1, None),
    Among("εσαι", 37, 1, None),
    Among("ιεσαι", 39, 1, None),
    Among("αται", 37, 1, None),
    Among("εται", 37, 1, None),
    Among("ιεται", 42, 1, None),
    Among("ουνται", 37, 1, None),
    Among("ιουνται", 44, 1, None),
    Among("ονται", 37, 1, None),
    Among("ουμαι", 37, 1, None),
    Among("αμαι", 37, 1, None),
    Among("ιεμαι", 37, 1, None),
    Among("ομαι", 37, 1, None),
    Among("ει", 37, 1, None),
    Among("ησει", 51, 1, None),
    Among("αει", 51, 1, None),
    Among("ηθει", 51, 1, None),
    Among("οι", 37, 1, None),
    Among("ουν", -1, 1, None),
    Among("ησουν", 56, 1, None),
    Among("οσουν", 56, 1, None),
    Among("ιοσουν", 58, 1, None),
    Among("ηθουν", 56, 1, None),
    Among("ομουν", 56, 1, None),
    Among("ιομουν", 61, 1, None),
    Among("ων", -1, 1, None),
    Among("ηδων", 63, 1, None),
    Among("αν", -1, 1, None),
    Among("ουσαν", 65, 1, None),
    Among("οντουσαν", 66, 1, None),
    Among("ιοντουσαν", 67, 1, None),
    Among("ησαν", 65, 1, None),
    Among("οσασταν", 65, 1, None),
    Among("ιοσασταν", 70, 1, None),
    Among("ομασταν", 65, 1, None),
    Among("ιομασταν", 72, 1, None),
    Among("ουνταν", 65, 1, None),
    Among("ιουνταν", 74, 1, None),
    Among("ονταν", 65, 1, None),
    Among("ιονταν", 76, 1, None),
    Among("οταν", 65, 1, None),
    Among("ιοταν", 78, 1, None),
    Among("αγαν", 65, 1, None),
    Among("ηκαν", 65, 1, None),
    Among("ηθηκαν", 81, 1, None),
    Among("ο", -1, 1, None),
];

static A_65: &'static [Among<Context>; 8] = &[
    Among("εστερ", -1, 1, None),
    Among("υτερ", -1, 1, None),
    Among("ωτερ", -1, 1, None),
    Among("οτερ", -1, 1, None),
    Among("εστατ", -1, 1, None),
    Among("υτατ", -1, 1, None),
    Among("ωτατ", -1, 1, None),
    Among("οτατ", -1, 1, None),
];

static G_v: &'static [u8; 4] = &[81, 65, 16, 1];

static G_v2: &'static [u8; 4] = &[81, 65, 0, 1];

fn r_has_min_length(env: &mut SnowballEnv, context: &mut Context) -> bool {
    return (env.current.chars().count() as i32) >= 3;
}

fn r_tolower(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    'replab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: for _ in 0..1 {
            env.ket = env.cursor;
            among_var = env.find_among_b(A_0, context);
            env.bra = env.cursor;
            match among_var {
                1 => {
                    env.slice_from("α");
                }
                2 => {
                    env.slice_from("β");
                }
                3 => {
                    env.slice_from("γ");
                }
                4 => {
                    env.slice_from("δ");
                }
                5 => {
                    env.slice_from("ε");
                }
                6 => {
                    env.slice_from("ζ");
                }
                7 => {
                    env.slice_from("η");
                }
                8 => {
                    env.slice_from("θ");
                }
                9 => {
                    env.slice_from("ι");
                }
                10 => {
                    env.slice_from("κ");
                }
                11 => {
                    env.slice_from("λ");
                }
                12 => {
                    env.slice_from("μ");
                }
                13 => {
                    env.slice_from("ν");
                }
                14 => {
                    env.slice_from("ξ");
                }
                15 => {
                    env.slice_from("ο");
                }
                16 => {
                    env.slice_from("π");
                }
                17 => {
                    env.slice_from("ρ");
                }
                18 => {
                    env.slice_from("σ");
                }
                19 => {
                    env.slice_from("τ");
                }
                20 => {
                    env.slice_from("υ");
                }
                21 => {
                    env.slice_from("φ");
                }
                22 => {
                    env.slice_from("χ");
                }
                23 => {
                    env.slice_from("ψ");
                }
                24 => {
                    env.slice_from("ω");
                }
                25 => {
                    if env.cursor <= env.limit_backward {
                        break 'lab1;
                    }
                    env.previous_char();
                }
                _ => (),
            }
            continue 'replab0;
        }
        env.cursor = env.limit - v_1;
        break 'replab0;
    }
    return true;
}

fn r_step_1(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    among_var = env.find_among_b(A_1, context);
    if among_var == 0 {
        return false;
    }
    env.bra = env.cursor;
    match among_var {
        1 => {
            env.slice_from("φα");
        }
        2 => {
            env.slice_from("σκα");
        }
        3 => {
            env.slice_from("ολο");
        }
        4 => {
            env.slice_from("σο");
        }
        5 => {
            env.slice_from("τατο");
        }
        6 => {
            env.slice_from("κρε");
        }
        7 => {
            env.slice_from("περ");
        }
        8 => {
            env.slice_from("τερ");
        }
        9 => {
            env.slice_from("φω");
        }
        10 => {
            env.slice_from("καθεστ");
        }
        11 => {
            env.slice_from("γεγον");
        }
        _ => (),
    }
    context.b_test1 = false;
    return true;
}

fn r_step_s1(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if env.find_among_b(A_3, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    among_var = env.find_among_b(A_2, context);
    if among_var == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    match among_var {
        1 => {
            env.slice_from("ι");
        }
        2 => {
            env.slice_from("ιζ");
        }
        _ => (),
    }
    return true;
}

fn r_step_s2(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_5, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_4, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ων");
    return true;
}

fn r_step_s3(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            if !env.eq_s_b(&"ισα") {
                break 'lab1;
            }
            env.bra = env.cursor;
            if env.cursor > env.limit_backward {
                break 'lab1;
            }
            env.slice_from("ισ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        break 'lab0;
    }
    if env.find_among_b(A_7, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    among_var = env.find_among_b(A_6, context);
    if among_var == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    match among_var {
        1 => {
            env.slice_from("ι");
        }
        2 => {
            env.slice_from("ισ");
        }
        _ => (),
    }
    return true;
}

fn r_step_s4(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_9, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if (env.cursor - 3 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 >> 5 != 5 as u8
        || ((-2145255424 as i32
            >> (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 & 0x1f))
            & 1)
            == 0)
    {
        return false;
    }

    if env.find_among_b(A_8, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ι");
    return true;
}

fn r_step_s5(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if env.find_among_b(A_11, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    among_var = env.find_among_b(A_10, context);
    if among_var == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    match among_var {
        1 => {
            env.slice_from("ι");
        }
        2 => {
            env.slice_from("ιστ");
        }
        _ => (),
    }
    return true;
}

fn r_step_s6(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if env.find_among_b(A_14, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if (env.cursor - 3 <= env.limit_backward
                || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
            {
                break 'lab1;
            }

            among_var = env.find_among_b(A_12, context);
            if among_var == 0 {
                break 'lab1;
            }
            if env.cursor > env.limit_backward {
                break 'lab1;
            }
            match among_var {
                1 => {
                    env.slice_from("ισμ");
                }
                2 => {
                    env.slice_from("ι");
                }
                _ => (),
            }
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        if (env.cursor - 9 <= env.limit_backward
            || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 186 as u8
                && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
        {
            return false;
        }

        among_var = env.find_among_b(A_13, context);
        if among_var == 0 {
            return false;
        }
        env.bra = env.cursor;
        match among_var {
            1 => {
                env.slice_from("αγνωστ");
            }
            2 => {
                env.slice_from("ατομ");
            }
            3 => {
                env.slice_from("γνωστ");
            }
            4 => {
                env.slice_from("εθν");
            }
            5 => {
                env.slice_from("εκλεκτ");
            }
            6 => {
                env.slice_from("σκεπτ");
            }
            7 => {
                env.slice_from("τοπ");
            }
            8 => {
                env.slice_from("αλεξανδρ");
            }
            9 => {
                env.slice_from("βυζαντ");
            }
            10 => {
                env.slice_from("θεατρ");
            }
            _ => (),
        }
        break 'lab0;
    }
    return true;
}

fn r_step_s7(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 9 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 177 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 185 as u8))
    {
        return false;
    }

    if env.find_among_b(A_16, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if (env.cursor - 1 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 135 as u8))
    {
        return false;
    }

    if env.find_among_b(A_15, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("αρακ");
    return true;
}

fn r_step_s8(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if env.find_among_b(A_18, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            among_var = env.find_among_b(A_17, context);
            if among_var == 0 {
                break 'lab1;
            }
            if env.cursor > env.limit_backward {
                break 'lab1;
            }
            match among_var {
                1 => {
                    env.slice_from("ακ");
                }
                2 => {
                    env.slice_from("ιτσ");
                }
                _ => (),
            }
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if !env.eq_s_b(&"κορ") {
            return false;
        }
        env.slice_from("ιτσ");
        break 'lab0;
    }
    return true;
}

fn r_step_s9(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 >> 5 != 5 as u8
        || ((-1610481664 as i32
            >> (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 & 0x1f))
            & 1)
            == 0)
    {
        return false;
    }

    if env.find_among_b(A_21, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if env.find_among_b(A_19, context) == 0 {
                break 'lab1;
            }
            if env.cursor > env.limit_backward {
                break 'lab1;
            }
            env.slice_from("ιδ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if (env.cursor - 1 <= env.limit_backward
            || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8
                && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
        {
            return false;
        }

        if env.find_among_b(A_20, context) == 0 {
            return false;
        }
        env.slice_from("ιδ");
        break 'lab0;
    }
    return true;
}

fn r_step_s10(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_23, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_22, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ισκ");
    return true;
}

fn r_step_2a(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
    {
        return false;
    }

    if env.find_among_b(A_24, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        if env.find_among_b(A_25, context) == 0 {
            break 'lab0;
        }
        return false;
    }
    env.cursor = env.limit - v_1;
    let c = env.cursor;
    let (bra, ket) = (env.cursor, env.cursor);
    env.insert(bra, ket, "αδ");
    env.cursor = c;
    return true;
}

fn r_step_2b(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
    {
        return false;
    }

    if env.find_among_b(A_26, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    env.ket = env.cursor;
    env.bra = env.cursor;
    if (env.cursor - 3 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 128 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 187 as u8))
    {
        return false;
    }

    if env.find_among_b(A_27, context) == 0 {
        return false;
    }
    env.slice_from("εδ");
    return true;
}

fn r_step_2c(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 9 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
    {
        return false;
    }

    if env.find_among_b(A_28, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_29, context) == 0 {
        return false;
    }
    env.slice_from("ουδ");
    return true;
}

fn r_step_2d(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 5 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8))
    {
        return false;
    }

    if env.find_among_b(A_30, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_31, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ε");
    return true;
}

fn r_step_3(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_32, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if !env.in_grouping_b(G_v, 945, 969) {
        return false;
    }
    env.slice_from("ι");
    return true;
}

fn r_step_4(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_33, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if !env.in_grouping_b(G_v, 945, 969) {
                break 'lab1;
            }
            env.slice_from("ικ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        break 'lab0;
    }
    env.bra = env.cursor;
    if env.find_among_b(A_34, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ικ");
    return true;
}

fn r_step_5a(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if !env.eq_s_b(&"αγαμε") {
            break 'lab0;
        }
        env.bra = env.cursor;
        if env.cursor > env.limit_backward {
            break 'lab0;
        }
        env.slice_from("αγαμ");
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    let v_2 = env.limit - env.cursor;
    'lab1: loop {
        env.ket = env.cursor;
        if (env.cursor - 9 <= env.limit_backward
            || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
        {
            break 'lab1;
        }

        if env.find_among_b(A_35, context) == 0 {
            break 'lab1;
        }
        env.bra = env.cursor;
        env.slice_del();
        context.b_test1 = false;
        break 'lab1;
    }
    env.cursor = env.limit - v_2;
    env.ket = env.cursor;
    if !env.eq_s_b(&"αμε") {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_36, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("αμ");
    return true;
}

fn r_step_5b(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if (env.cursor - 9 <= env.limit_backward
            || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
        {
            break 'lab0;
        }

        if env.find_among_b(A_38, context) == 0 {
            break 'lab0;
        }
        env.bra = env.cursor;
        env.slice_del();
        context.b_test1 = false;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if (env.cursor - 3 <= env.limit_backward
            || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 129 as u8
                && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8))
        {
            break 'lab0;
        }

        if env.find_among_b(A_37, context) == 0 {
            break 'lab0;
        }
        if env.cursor > env.limit_backward {
            break 'lab0;
        }
        env.slice_from("αγαν");
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    env.ket = env.cursor;
    if !env.eq_s_b(&"ανε") {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab1: loop {
        let v_2 = env.limit - env.cursor;
        'lab2: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if !env.in_grouping_b(G_v2, 945, 969) {
                break 'lab2;
            }
            env.slice_from("αν");
            break 'lab1;
        }
        env.cursor = env.limit - v_2;
        env.ket = env.cursor;
        break 'lab1;
    }
    env.bra = env.cursor;
    if env.find_among_b(A_39, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("αν");
    return true;
}

fn r_step_5c(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if !env.eq_s_b(&"ησετε") {
            break 'lab0;
        }
        env.bra = env.cursor;
        env.slice_del();
        context.b_test1 = false;
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    env.ket = env.cursor;
    if !env.eq_s_b(&"ετε") {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab1: loop {
        let v_2 = env.limit - env.cursor;
        'lab2: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if !env.in_grouping_b(G_v2, 945, 969) {
                break 'lab2;
            }
            env.slice_from("ετ");
            break 'lab1;
        }
        env.cursor = env.limit - v_2;
        'lab3: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if env.find_among_b(A_40, context) == 0 {
                break 'lab3;
            }
            env.slice_from("ετ");
            break 'lab1;
        }
        env.cursor = env.limit - v_2;
        env.ket = env.cursor;
        break 'lab1;
    }
    env.bra = env.cursor;
    if env.find_among_b(A_41, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ετ");
    return true;
}

fn r_step_5d(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 9 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 131 as u8)
    {
        return false;
    }

    if env.find_among_b(A_42, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if !env.eq_s_b(&"αρχ") {
                break 'lab1;
            }
            if env.cursor > env.limit_backward {
                break 'lab1;
            }
            env.slice_from("οντ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if !env.eq_s_b(&"κρε") {
            return false;
        }
        env.slice_from("ωντ");
        break 'lab0;
    }
    return true;
}

fn r_step_5e(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 11 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
    {
        return false;
    }

    if env.find_among_b(A_43, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if !env.eq_s_b(&"ον") {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ομαστ");
    return true;
}

fn r_step_5f(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if !env.eq_s_b(&"ιεστε") {
            break 'lab0;
        }
        env.bra = env.cursor;
        env.slice_del();
        context.b_test1 = false;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if (env.cursor - 1 <= env.limit_backward
            || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 128 as u8
                && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 134 as u8))
        {
            break 'lab0;
        }

        if env.find_among_b(A_44, context) == 0 {
            break 'lab0;
        }
        if env.cursor > env.limit_backward {
            break 'lab0;
        }
        env.slice_from("ιεστ");
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    env.ket = env.cursor;
    if !env.eq_s_b(&"εστε") {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_45, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ιεστ");
    return true;
}

fn r_step_5g(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if env.find_among_b(A_46, context) == 0 {
            break 'lab0;
        }
        env.bra = env.cursor;
        env.slice_del();
        context.b_test1 = false;
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    env.ket = env.cursor;
    if env.find_among_b(A_49, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab1: loop {
        let v_2 = env.limit - env.cursor;
        'lab2: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if env.find_among_b(A_47, context) == 0 {
                break 'lab2;
            }
            env.slice_from("ηκ");
            break 'lab1;
        }
        env.cursor = env.limit - v_2;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if (env.cursor - 1 <= env.limit_backward
            || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 184 as u8)
        {
            return false;
        }

        if env.find_among_b(A_48, context) == 0 {
            return false;
        }
        if env.cursor > env.limit_backward {
            return false;
        }
        env.slice_from("ηκ");
        break 'lab1;
    }
    return true;
}

fn r_step_5h(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_52, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if env.find_among_b(A_50, context) == 0 {
                break 'lab1;
            }
            env.slice_from("ουσ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        env.ket = env.cursor;
        env.bra = env.cursor;
        if env.find_among_b(A_51, context) == 0 {
            return false;
        }
        if env.cursor > env.limit_backward {
            return false;
        }
        env.slice_from("ουσ");
        break 'lab0;
    }
    return true;
}

fn r_step_5i(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if env.find_among_b(A_55, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    'lab0: loop {
        let v_1 = env.limit - env.cursor;
        'lab1: loop {
            env.ket = env.cursor;
            env.bra = env.cursor;
            if !env.eq_s_b(&"κολλ") {
                break 'lab1;
            }
            env.slice_from("αγ");
            break 'lab0;
        }
        env.cursor = env.limit - v_1;
        'lab2: loop {
            let v_2 = env.limit - env.cursor;
            'lab3: loop {
                env.ket = env.cursor;
                env.bra = env.cursor;
                among_var = env.find_among_b(A_53, context);
                if among_var == 0 {
                    break 'lab3;
                }
                match among_var {
                    1 => {
                        env.slice_from("αγ");
                    }
                    _ => (),
                }
                break 'lab2;
            }
            env.cursor = env.limit - v_2;
            env.ket = env.cursor;
            env.bra = env.cursor;
            if env.find_among_b(A_54, context) == 0 {
                return false;
            }
            if env.cursor > env.limit_backward {
                return false;
            }
            env.slice_from("αγ");
            break 'lab2;
        }
        break 'lab0;
    }
    return true;
}

fn r_step_5j(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_56, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if (env.cursor - 1 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 189 as u8)
    {
        return false;
    }

    if env.find_among_b(A_57, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ησ");
    return true;
}

fn r_step_5k(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if !env.eq_s_b(&"ηστε") {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_58, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ηστ");
    return true;
}

fn r_step_5l(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
    {
        return false;
    }

    if env.find_among_b(A_59, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_60, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ουν");
    return true;
}

fn r_step_5m(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 181 as u8)
    {
        return false;
    }

    if env.find_among_b(A_61, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    context.b_test1 = false;
    env.ket = env.cursor;
    env.bra = env.cursor;
    if env.find_among_b(A_62, context) == 0 {
        return false;
    }
    if env.cursor > env.limit_backward {
        return false;
    }
    env.slice_from("ουμ");
    return true;
}

fn r_step_6(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let v_1 = env.limit - env.cursor;
    'lab0: loop {
        env.ket = env.cursor;
        if env.find_among_b(A_63, context) == 0 {
            break 'lab0;
        }
        env.bra = env.cursor;
        env.slice_from("μα");
        break 'lab0;
    }
    env.cursor = env.limit - v_1;
    if !context.b_test1 {
        return false;
    }
    env.ket = env.cursor;
    if env.find_among_b(A_64, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    return true;
}

fn r_step_7(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if (env.cursor - 7 <= env.limit_backward
        || (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 129 as u8
            && env.current.as_bytes()[(env.cursor - 1) as usize] as u8 != 132 as u8))
    {
        return false;
    }

    if env.find_among_b(A_65, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    return true;
}

pub fn stem(env: &mut SnowballEnv) -> bool {
    let mut context = &mut Context { b_test1: false };
    env.limit_backward = env.cursor;
    env.cursor = env.limit;
    let v_1 = env.limit - env.cursor;
    r_tolower(env, context);
    env.cursor = env.limit - v_1;
    if !r_has_min_length(env, context) {
        return false;
    }
    context.b_test1 = true;
    let v_2 = env.limit - env.cursor;
    r_step_1(env, context);
    env.cursor = env.limit - v_2;
    let v_3 = env.limit - env.cursor;
    r_step_s1(env, context);
    env.cursor = env.limit - v_3;
    let v_4 = env.limit - env.cursor;
    r_step_s2(env, context);
    env.cursor = env.limit - v_4;
    let v_5 = env.limit - env.cursor;
    r_step_s3(env, context);
    env.cursor = env.limit - v_5;
    let v_6 = env.limit - env.cursor;
    r_step_s4(env, context);
    env.cursor = env.limit - v_6;
    let v_7 = env.limit - env.cursor;
    r_step_s5(env, context);
    env.cursor = env.limit - v_7;
    let v_8 = env.limit - env.cursor;
    r_step_s6(env, context);
    env.cursor = env.limit - v_8;
    let v_9 = env.limit - env.cursor;
    r_step_s7(env, context);
    env.cursor = env.limit - v_9;
    let v_10 = env.limit - env.cursor;
    r_step_s8(env, context);
    env.cursor = env.limit - v_10;
    let v_11 = env.limit - env.cursor;
    r_step_s9(env, context);
    env.cursor = env.limit - v_11;
    let v_12 = env.limit - env.cursor;
    r_step_s10(env, context);
    env.cursor = env.limit - v_12;
    let v_13 = env.limit - env.cursor;
    r_step_2a(env, context);
    env.cursor = env.limit - v_13;
    let v_14 = env.limit - env.cursor;
    r_step_2b(env, context);
    env.cursor = env.limit - v_14;
    let v_15 = env.limit - env.cursor;
    r_step_2c(env, context);
    env.cursor = env.limit - v_15;
    let v_16 = env.limit - env.cursor;
    r_step_2d(env, context);
    env.cursor = env.limit - v_16;
    let v_17 = env.limit - env.cursor;
    r_step_3(env, context);
    env.cursor = env.limit - v_17;
    let v_18 = env.limit - env.cursor;
    r_step_4(env, context);
    env.cursor = env.limit - v_18;
    let v_19 = env.limit - env.cursor;
    r_step_5a(env, context);
    env.cursor = env.limit - v_19;
    let v_20 = env.limit - env.cursor;
    r_step_5b(env, context);
    env.cursor = env.limit - v_20;
    let v_21 = env.limit - env.cursor;
    r_step_5c(env, context);
    env.cursor = env.limit - v_21;
    let v_22 = env.limit - env.cursor;
    r_step_5d(env, context);
    env.cursor = env.limit - v_22;
    let v_23 = env.limit - env.cursor;
    r_step_5e(env, context);
    env.cursor = env.limit - v_23;
    let v_24 = env.limit - env.cursor;
    r_step_5f(env, context);
    env.cursor = env.limit - v_24;
    let v_25 = env.limit - env.cursor;
    r_step_5g(env, context);
    env.cursor = env.limit - v_25;
    let v_26 = env.limit - env.cursor;
    r_step_5h(env, context);
    env.cursor = env.limit - v_26;
    let v_27 = env.limit - env.cursor;
    r_step_5j(env, context);
    env.cursor = env.limit - v_27;
    let v_28 = env.limit - env.cursor;
    r_step_5i(env, context);
    env.cursor = env.limit - v_28;
    let v_29 = env.limit - env.cursor;
    r_step_5k(env, context);
    env.cursor = env.limit - v_29;
    let v_30 = env.limit - env.cursor;
    r_step_5l(env, context);
    env.cursor = env.limit - v_30;
    let v_31 = env.limit - env.cursor;
    r_step_5m(env, context);
    env.cursor = env.limit - v_31;
    let v_32 = env.limit - env.cursor;
    r_step_6(env, context);
    env.cursor = env.limit - v_32;
    let v_33 = env.limit - env.cursor;
    r_step_7(env, context);
    env.cursor = env.limit - v_33;
    env.cursor = env.limit_backward;
    return true;
}
