@Nullable
  public static @Nls String getObviouslyNonNullExplanation(PsiExpression arg) {
    if (arg == null || ExpressionUtils.isNullLiteral(arg)) return null;
    if (arg instanceof PsiNewExpression) return JavaAnalysisBundle.message("dfa.find.cause.nonnull.expression.kind.newly.created.object");
    if (arg instanceof PsiLiteralExpression) return JavaAnalysisBundle.message("dfa.find.cause.nonnull.expression.kind.literal");
    if (arg.getType() instanceof PsiPrimitiveType) {
      return JavaAnalysisBundle.message("dfa.find.cause.nonnull.expression.kind.primitive.type", arg.getType().getCanonicalText());
    }
    if (arg instanceof PsiPolyadicExpression && ((PsiPolyadicExpression)arg).getOperationTokenType() == JavaTokenType.PLUS) {
      return JavaAnalysisBundle.message("dfa.find.cause.nonnull.expression.kind.concatenation");
    }
    if (arg instanceof PsiThisExpression) return JavaAnalysisBundle.message("dfa.find.cause.nonnull.expression.kind.this.object");
    return null;
  }
@Nullable
  public static @Nls String getObviouslyNonNullExplanation(PsiExpression arg)