NullabilityAnnotationDataHolder () { return CachedValuesManager.getManager(myProject).getCachedValue(myProject, () -> { Map<String, Nullability> result = new HashMap<>(); for (String qName : myDefaultAll) { result.put(qName, null); } for (String qName : getNotNulls()) { result.put(qName, Nullability.NOT_NULL); } for (String qName : getNullables()) { result.put(qName, Nullability.NULLABLE); } for (String qName : myDefaultUnknowns.keySet()) { result.put(qName, Nullability.UNKNOWN); } for (PsiClass aClass : getAllNullabilityNickNames()) { String qName = aClass.getQualifiedName(); if (qName != null) { result.putIfAbsent(qName, Jsr305Support.getNickNamedNullability(aClass)); } } NullabilityAnnotationDataHolder holder = new NullabilityAnnotationDataHolder() { @Override public Set<String> qualifiedNames() { return result.keySet(); } @Override public @Nullable Nullability getNullability(String annotation) { return result.get(annotation); } }; return CachedValueProvider.Result.create(holder, PsiModificationTracker.MODIFICATION_COUNT); }); }