List<GrField> (final PsiMethod constructor, final GrTypeDefinition clazz) { final CachedValue<List<GrField>> value = constructor.getUserData(FIELD_CANDIDATES); if (value != null && value.getValue() != null) return value.getValue(); final CachedValue<List<GrField>> cachedValue = CachedValuesManager.getManager(constructor.getProject()).createCachedValue( () -> CachedValueProvider.Result.create(findCandidates(constructor, clazz), PsiModificationTracker.MODIFICATION_COUNT), false); constructor.putUserData(FIELD_CANDIDATES, cachedValue); return cachedValue.getValue(); }