private static boolean distinguishFromTypeParam(PsiTypeParameter typeParam,
                                                  PsiType type1,
                                                  PsiType type2) {
    final PsiClassType[] paramBounds = typeParam.getExtendsListTypes();
    if (paramBounds.length == 0) return !(type1 instanceof PsiClassType);
    return ContainerUtil.exists(paramBounds, paramBound -> !TypeConversionUtil.isAssignable(paramBound.rawType(), type2));
  }
private static boolean distinguishFromTypeParam(PsiTypeParameter typeParam,
                                                  PsiType type1,
                                                  PsiType type2)