@SuppressWarnings("unchecked")
  default <T extends SemElement, V extends PsiElement> void registerRepeatableSemElementProvider(SemKey<T> key,
                                                                                                 ElementPattern<? extends V> place,
                                                                                                 Function<? super V, ? extends @Nullable Collection<T>> provider) {
    registerSemProvider(key, (element, context) -> {
      if (place.accepts(element, context)) {
        return provider.apply((V)element);
      }
      return null;
    });
  }
@SuppressWarnings("unchecked")
  default <T extends SemElement, V extends PsiElement> void registerRepeatableSemElementProvider(SemKey<T> key,
                                                                                                 ElementPattern<? extends V> place,
                                                                                                 Function<? super V, ? extends @Nullable Collection<T>> provider)