@Override
  public @NotNull <T extends SemElement> List<T> getSemElements(@NotNull SemKey<T> key, @NotNull PsiElement psi) {
    var state = ensureInitialized();

    IntObjectMap<List<SemElement>> chunk = getUpToDate(getCacheHolder(psi));
    List<T> cached = findCached(state, key, chunk);
    return cached != null ? cached : collectSemElements(state, key, psi, chunk);
  }
@Override
  public @NotNull <T extends SemElement> List<T> getSemElements(@NotNull SemKey<T> key, @NotNull PsiElement psi)