public void visitLiteral(PsiElement literal) { final PsiElement l2 = myGlobalVisitor.getElement(); MatchingHandler handler = (MatchingHandler) literal.getUserData(CompiledPattern.HANDLER_KEY); if (handler instanceof SubstitutionHandler) { int offset = 0; int length = l2.getTextLength(); final String text = l2.getText(); if (length > 2 && (text.charAt(0) == '"' && text.charAt(length - 1) == '"') || (text.charAt(0) == '\'' && text.charAt(length - 1) == '\'')) { length--; offset++; } myGlobalVisitor.setResult( ((SubstitutionHandler) handler) .handle(l2, offset, length, myGlobalVisitor.getMatchContext())); } else if (handler != null) { myGlobalVisitor.setResult(handler.match(literal, l2, myGlobalVisitor.getMatchContext())); } else { myGlobalVisitor.setResult(literal.textMatches(l2)); } }