Optional<A> Function(Optional<A>) filter<A, B>(final Predicate<A> filter) { return (a) => a.filter(filter); }