CoffeeRuns that match the predicate */ public function thatAre(Predicate $matching); /** * @return CoffeeRun[] An array of CoffeeRuns */ public function asArray(); } we could have Predicate objects that can be translated to a MySQL statement, or anything else