public GrLiteralImpl handleContentChange(GrLiteral expr, TextRange range, String newContent)
      throws IncorrectOperationException {
    if (!(expr.getValue() instanceof String))
      throw new IncorrectOperationException("cannot handle content change");

    LOG.assertTrue(expr instanceof GrLiteralImpl);

    String oldText = expr.getText();
    final String quote = GrStringUtil.getStartQuote(oldText);

    if (quote.startsWith("'")) {
      newContent = GrStringUtil.escapeSymbolsForString(newContent, !quote.equals("'''"), false);
    } else if (quote.startsWith("\"")) {
      newContent = GrStringUtil.escapeSymbolsForGString(newContent, !quote.equals("\"\"\""), true);
    } else if ("/".equals(quote)) {
      newContent = GrStringUtil.escapeSymbolsForSlashyStrings(newContent);
    } else if ("$/".equals(quote)) {
      newContent = GrStringUtil.escapeSymbolsForDollarSlashyStrings(newContent);
    }

    String newText =
        oldText.substring(0, range.getStartOffset())
            + newContent
            + oldText.substring(range.getEndOffset());
    return ((GrLiteralImpl) expr).updateText(newText);
  }
 public TextRange getRangeInElement(final GrLiteral element) {
   final String text = element.getText();
   if (!(element.getValue() instanceof String)) {
     return super.getRangeInElement(element);
   }
   return getLiteralRange(text);
 }
 public void processIntention(@NotNull PsiElement element) throws IncorrectOperationException {
   final GrLiteral exp = (GrLiteral) element;
   @NonNls String textString = exp.getText();
   final int textLength = textString.length();
   final char lastChar = textString.charAt(textLength - 1);
   final boolean isLong = lastChar == 'l' || lastChar == 'L';
   if (isLong) {
     textString = textString.substring(0, textLength - 1);
   }
   final BigInteger val;
   if (textString.startsWith("0x")) {
     final String rawTextString = textString.substring(2);
     val = new BigInteger(rawTextString, 16);
   } else {
     val = new BigInteger(textString, 10);
   }
   String octString = '0' + val.toString(8);
   if (isLong) {
     octString += 'L';
   }
   IntentionUtils.replaceExpression(octString, exp);
 }