public int stem(char s[], int len) {assert s.length >= len + 1 : "this stemmer requires an oversized array of at least 1";len = plural.apply(s, len);len = unification.apply(s, len);len = adverb.apply(s, len);int oldlen;do {oldlen = len;len = augmentative.apply(s, len);} while (len != oldlen);oldlen = len;len = noun.apply(s, len);if (len == oldlen) { len = verb.apply(s, len);}len = vowel.apply(s, len);for (int i = 0; i < len; i++)switch(s[i]) {case 'á': s[i] = 'a'; break;case 'é':case 'ê': s[i] = 'e'; break;case 'í': s[i] = 'i'; break;case 'ó': s[i] = 'o'; break;case 'ú': s[i] = 'u'; break;}return len;}

public virtual int Stem(char[] s, int len){Debug.Assert(s.Length >= len + 1, "this stemmer requires an oversized array of at least 1");len = plural.Apply(s, len);len = unification.Apply(s, len);len = adverb.Apply(s, len);int oldlen;do{oldlen = len;len = augmentative.Apply(s, len);} while (len != oldlen);oldlen = len;len = noun.Apply(s, len);if (len == oldlen) {len = verb.Apply(s, len);}len = vowel.Apply(s, len);for (int i = 0; i < len; i++){switch (s[i]){case 'á':s[i] = 'a';break;case 'é':case 'ê':s[i] = 'e';break;case 'í':s[i] = 'i';break;case 'ó':s[i] = 'o';break;case 'ú':s[i] = 'u';break;}}return len;}
