if multiple threads access concurrently this predicate must be thread safe i think.