GrLiteral (@NotNull GrLiteral regex) { final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(regex.getProject()); if (regex instanceof GrRegex) { StringBuilder builder = new StringBuilder(); String quote = regex.getText().indexOf('\n') >= 0 ? TRIPLE_DOUBLE_QUOTES : DOUBLE_QUOTES; builder.append(quote); for (PsiElement child = regex.getFirstChild(); child!=null; child = child.getNextSibling()) { final IElementType type = child.getNode().getElementType(); if (type == GroovyTokenTypes.mREGEX_CONTENT || type == GroovyElementTypes.GSTRING_CONTENT) { builder.append(escapeSymbolsForGString(unescapeSlashyString(child.getText()), quote.equals(DOUBLE_QUOTES), true)); } else if (type == GroovyTokenTypes.mDOLLAR_SLASH_REGEX_CONTENT) { builder.append(escapeSymbolsForGString(unescapeDollarSlashyString(child.getText()), quote.equals(DOUBLE_QUOTES), true)); } else if (type == GroovyElementTypes.GSTRING_INJECTION) { builder.append(child.getText()); } } builder.append(quote); return (GrLiteral)factory.createExpressionFromText(builder.toString()); } else { Object value = regex.getValue(); LOG.assertTrue(value==null || value instanceof String); if (value == null) { value = removeQuotes(regex.getText()); } return factory.createLiteralFromValue(value); } }