@Override
    public int getValue() {
        final ASTNode node = getNode();
        final IElementType type = node.getFirstChildNode().getElementType();
        if (type == RegExpTT.BAD_OCT_VALUE ||
            type == RegExpTT.BAD_HEX_VALUE ||
            type == RegExpTT.BAD_CHARACTER ||
            type == StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN) {
            return -1;
        }
        final String text = getUnescapedText();
        if (text.length() == 1 && (type == RegExpTT.CHARACTER ||  type == RegExpTT.CTRL_CHARACTER)) {
            return text.codePointAt(0);
        }
        else if (type == RegExpTT.UNICODE_CHAR) {
            final int i = text.indexOf('\\', 1);
            if (i >= 0) return Character.toCodePoint((char)unescapeChar(text.substring(0, i)), (char)unescapeChar(text.substring(i)));
        }
        return unescapeChar(text);
    }
@Override
    public int getValue()