Taking an example from out codebase,I had to write code like this

```
        NSArray *mapPoints = [[highlighted reject:^BOOL(PartnerShow *show) {
            return show.fairLocation.mapPoints.count == 0;
        }] map:^id(PartnerShow *show) {
            return show.fairLocation.mapPoints.firstObject;
        }];
```

when my initial implementation was to write

```
        NSArray *mapPoints = [[highlighted map:^id(PartnerShow *show) {
            return show.fairLocation.mapPoints.firstObject;
        }];
```

As I expected that if it found nothing, it would return nothing. Sort of like how I wouldn't write `if(self && self.artwork)` because I know that if self is nil it would pass on. But there's the case that you gave where I'd have the mental model of wanting the exact results I got back. 

I think a `-map:withOptions:` might well be the right way to go here.