diff --git a/feature/plural/plural.go b/feature/plural/plural.go
index 41958c6..2b4cfe3 100644
--- a/feature/plural/plural.go
+++ b/feature/plural/plural.go
@@ -124,6 +124,22 @@
 	return matchPlural(p, index, n, f, scale)
 }
 
+func validForms(p *Rules, t language.Tag) (forms []Form) {
+	index, _ := language.CompactIndex(t)
+	offset := p.langToIndex[index]
+	rules := p.rules[p.index[offset]:p.index[offset+1]]
+
+	forms = append(forms, Other)
+	last := Other
+	for _, r := range rules {
+		if cat := Form(r.cat & formMask); cat != andNext && last != cat {
+			forms = append(forms, cat)
+			last = cat
+		}
+	}
+	return forms
+}
+
 func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form {
 	index, _ := language.CompactIndex(t)
 	return matchPlural(p, index, n, f, scale)
diff --git a/feature/plural/plural_test.go b/feature/plural/plural_test.go
index 9c75f6b..e5524c5 100644
--- a/feature/plural/plural_test.go
+++ b/feature/plural/plural_test.go
@@ -6,6 +6,7 @@
 
 import (
 	"fmt"
+	"reflect"
 	"strconv"
 	"strings"
 	"testing"
@@ -65,6 +66,25 @@
 	return b
 }
 
+func TestValidForms(t *testing.T) {
+	testCases := []struct {
+		tag  language.Tag
+		want []Form
+	}{
+		{language.AmericanEnglish, []Form{Other, One}},
+		{language.Portuguese, []Form{Other, One}},
+		{language.Latvian, []Form{Other, Zero, One}},
+		{language.Arabic, []Form{Other, Zero, One, Two, Few, Many}},
+		{language.Russian, []Form{Other, One, Few, Many}},
+	}
+	for _, tc := range testCases {
+		got := validForms(cardinal, tc.tag)
+		if !reflect.DeepEqual(got, tc.want) {
+			t.Errorf("validForms(%v): got %v; want %v", tc.tag, got, tc.want)
+		}
+	}
+}
+
 func TestOrdinal(t *testing.T) {
 	testPlurals(t, Ordinal, ordinalTests)
 }
