@SafeVarargs
  @Contract("null, _, _, _ -> null")
  public static @Nullable <T extends PsiElement> T getContextOfType(@Nullable PsiElement element,
                                                                    @NotNull Class<T> aClass,
                                                                    boolean strict,
                                                                    @NotNull Class<? extends PsiElement> @NotNull ... stopAt) {
    if (element == null) return null;
    if (strict) {
      element = element.getContext();
    }
@SafeVarargs
  @Contract("null, _, _, _ -> null")
  public static @Nullable <T extends PsiElement> T getContextOfType(@Nullable PsiElement element,
                                                                    @NotNull Class<T> aClass,
                                                                    boolean strict,
                                                                    @NotNull Class<? extends PsiElement> @NotNull ... stopAt) {
    if (element == null) return null;
    if (strict)