private static HighlightInfo.Builder checkAssignability(@Nullable PsiType lType,
                                                          @Nullable PsiType rType,
                                                          @Nullable PsiExpression expression,
                                                          @NotNull TextRange textRange,
                                                          int navigationShift) {
    if (lType == rType) return null;
    if (expression == null) {
      if (rType == null || lType == null || TypeConversionUtil.isAssignable(lType, rType)) return null;
    }
    else if (TypeConversionUtil.areTypesAssignmentCompatible(lType, expression) || PsiTreeUtil.hasErrorElements(expression)) {
      return null;
    }
    if (rType == null) {
      rType = expression.getType();
    }
    if (lType == null || lType == PsiTypes.nullType()) {
      return null;
    }
    if (expression != null && IncompleteModelUtil.isIncompleteModel(expression) &&
        IncompleteModelUtil.isPotentiallyConvertible(lType, expression)) {
      return null;
    }
    HighlightInfo.Builder highlightInfo = createIncompatibleTypeHighlightInfo(lType, rType, textRange, navigationShift);
    AddTypeArgumentsConditionalFix.register(highlightInfo, expression, lType);
    if (rType != null && expression != null && isCastIntentionApplicable(expression, lType)) {
      IntentionAction action = getFixFactory().createAddTypeCastFix(lType, expression);
      highlightInfo.registerFix(action, null, null, null, null);
    }
    if (expression != null) {
      AdaptExpressionTypeFixUtil.registerExpectedTypeFixes(highlightInfo, textRange, expression, lType, rType);
      if (!(expression.getParent() instanceof PsiConditionalExpression && PsiTypes.voidType().equals(lType))) {
        HighlightFixUtil.registerChangeReturnTypeFix(highlightInfo, expression, lType);
      }
    }
    ChangeNewOperatorTypeFix.register(highlightInfo, expression, lType);
    return highlightInfo;
  }
private static HighlightInfo.Builder checkAssignability(@Nullable PsiType lType,
                                                          @Nullable PsiType rType,
                                                          @Nullable PsiExpression expression,
                                                          @NotNull TextRange textRange,
                                                          int navigationShift)