static boolean areBoundsSaturated(@NotNull VarianceCandidate candidate, boolean isExtends) {
    if (!(candidate.type instanceof PsiClassType)) return true;
    PsiClass aClass = ((PsiClassType)candidate.type).resolve();
    if (aClass == null) return true;
    if (isExtends) {
      return aClass.hasModifierProperty(PsiModifier.FINAL) || CommonClassNames.JAVA_LANG_OBJECT.equals(aClass.getQualifiedName());
    }
    return TypeUtils.isJavaLangObject(candidate.type);
  }
static boolean areBoundsSaturated(@NotNull VarianceCandidate candidate, boolean isExtends)