void (PsiElement literal) { InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(literal.getProject()); String text; if (injectedLanguageManager.isInjectedFragment(literal.getContainingFile())) { text = injectedLanguageManager.getUnescapedText(literal); } else { text = literal.getText(); } assert text != null; StringBuilder builder = new StringBuilder(text.length()); String quote = GrStringUtil.getStartQuote(text); if (quote.isEmpty()) return; String substring = text.substring(quote.length()); if (!GrStringUtil.parseStringCharacters(substring, new StringBuilder(text.length()), null)) { myHolder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("illegal.escape.character.in.string.literal")).range(literal).create(); return; } int[] offsets = new int[substring.length() + 1]; boolean result = GrStringUtil.parseStringCharacters(substring, builder, offsets); LOG.assertTrue(result); if (!builder.toString().endsWith(quote) || substring.charAt(offsets[builder.length() - quote.length()]) == '\\') { myHolder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("string.end.expected")).create(); } }