@Nullable
  private static UBinaryExpression breakStringLiteral(@NotNull UInjectionHost literalExpression,
                                                      UastCodeGenerationPlugin generationPlugin,
                                                      UastElementFactory elementFactory,
                                                      int offset) throws IncorrectOperationException {
    PsiElement sourcePsi = literalExpression.getSourcePsi();
    if (sourcePsi == null) {
      return null;
    }
    TextRange literalRange = sourcePsi.getTextRange();
    String value = literalExpression.evaluateToString();
    if (literalRange.getStartOffset() + 1 >= offset || offset >= literalRange.getEndOffset() - 1 || value == null) {
      return null;
    }
    int breakIndex = offset - literalRange.getStartOffset() - 1;
    String lsubstring = value.substring(0, breakIndex);
    String rsubstring = value.substring(breakIndex);
    UExpression left = elementFactory.createStringLiteralExpression(lsubstring, sourcePsi);
    UExpression right = elementFactory.createStringLiteralExpression(rsubstring, sourcePsi);
    if (left == null || right == null) {
      return null;
    }
    UBinaryExpression binaryExpression = elementFactory.createBinaryExpression(left, right, UastBinaryOperator.PLUS, sourcePsi);
    if (binaryExpression == null) {
      return null;
    }
    return generationPlugin.replace(literalExpression, binaryExpression, UBinaryExpression.class);
  }
@Nullable
  private static UBinaryExpression breakStringLiteral(@NotNull UInjectionHost literalExpression,
                                                      UastCodeGenerationPlugin generationPlugin,
                                                      UastElementFactory elementFactory,
                                                      int offset)