DeclarationHolder (@Nullable AnnotationHint hint) { boolean mayUseCache = useCache(); if (hint == null) { if (mayUseCache || myAnnotationsCache.hasUpToDateValue() && myDeclarationsCache.hasUpToDateValue()) { return myAllCachedDeclarations; } } else if (hint.isAnnotationResolve()) { if (mayUseCache || myAnnotationsCache.hasUpToDateValue()) { return myAnnotationsCache.getValue(); } } else { if (mayUseCache || myDeclarationsCache.hasUpToDateValue()) { return myDeclarationsCache.getValue(); } } return this::processDeclarationsNoCache; }