func step3(w *snowballword.SnowballWord) bool {
	suffix, suffixRunes := w.FirstSuffix(
		"ational", "tional", "alize", "icate", "ative",
		"iciti", "ical", "ful", "ness",
	)
	if suffix == "" || len(suffixRunes) > len(w.RS)-w.R1start {
		return false
	}
	if suffix == "ative" {
		if len(w.RS)-w.R2start >= 5 {
			w.RemoveLastNRunes(len(suffixRunes))
			return true
		}
		return false
	}
	var repl string
	switch suffix {
	case "ational":
		repl = "ate"
	case "tional":
		repl = "tion"
	case "alize":
		repl = "al"
	case "icate", "iciti", "ical":
		repl = "ic"
	case "ful", "ness":
		repl = ""
	}
	w.ReplaceSuffixRunes(suffixRunes, []rune(repl), true)
	return true
}
Step 3 is the stemming of various longer sufficies
found in R1.
package english
import (
	"github.com/kljensen/snowball/snowballword"
)