removing set operation interface from abstract iterator in favor of predicate composition