I agree that this is not empty, but not that concurrent calls will create conflicting annotations or conflicting annotations states – not as the model stands anyway : occurrences and PC output (which is errors and warnings) operate on disjoint sets of annotations. Nonetheless, future-proofing that annotations update with a lock seems reasonable.