a workaround for a concurrent modification issue

@kiril as discussed, there's an issue here if predicates mutate in a non-idempotent way. But
if someone writes a predicate like that, they should be shot.