public static @Nullable UPolyadicExpression getEnclosingLiteralConcatenation(@Nullable UExpression literalExpression) {
    if (literalExpression == null) {
      return null;
    }
    UExpression topExpression = UastUtils.getParentOfType(literalExpression, UPolyadicExpression.class, false);
    UStringConcatenationsFacade concatenation = null;
    while (topExpression != null) {
      UStringConcatenationsFacade nextConcatenation = UStringConcatenationsFacade.createFromTopConcatenation(topExpression);
      if (nextConcatenation != null) {
        concatenation = nextConcatenation;
      }
      UElement parent = topExpression.getUastParent();
      if (parent instanceof UParenthesizedExpression ||
          parent instanceof UIfExpression ||
          parent instanceof UPolyadicExpression && !UastExpressionUtils.isAssignment(parent)) {
        topExpression = (UExpression)parent;
      }
      else {
        break;
      }
    }

    if (concatenation != null) {
      PartiallyKnownString pks = concatenation.asPartiallyKnownString();
      if (pks.getSegments().size() == 1) {
        return null;
      }
      return (UPolyadicExpression)concatenation.getRootUExpression();
    }
    return null;
  }
public static @Nullable UPolyadicExpression getEnclosingLiteralConcatenation(@Nullable UExpression literalExpression)