go-criteria-pattern Exploring a general pattern that avoids selecting objects based on several checks