+ PsiElement(CHARACTER)('c')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('p')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('e')
+ RegExpCharImpl: <">
+ PsiElement(CHARACTER)('"')
+ RegExpCharImpl: <>>
+ PsiElement(CHARACTER)('>')
+ RegExpCharImpl: <\ >
+ PsiElement(REDUNDANT_ESCAPE)('\ ')
+ RegExpCharImpl: <<>
+ PsiElement(CHARACTER)('<')
+ RegExpCharImpl: >
+ PsiElement(CHARACTER)('/')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('w')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('e')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('k')
+ RegExpCharImpl: <_>
+ PsiElement(CHARACTER)('_')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('w')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('r')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('n')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('i')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('n')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('g')
+ RegExpCharImpl: <>>
+ PsiElement(CHARACTER)('>')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Bug9.txt b/RegExpSupport/testData/psi/Bug9.txt
new file mode 100644
index 000000000000..35bf17b931a1
--- /dev/null
+++ b/RegExpSupport/testData/psi/Bug9.txt
@@ -0,0 +1,32 @@
+REGEXP_FILE
+ RegExpPatternImpl: <(^|\.)\*(?=(\.|$))>
+ RegExpBranchImpl: <(^|\.)\*(?=(\.|$))>
+ RegExpGroupImpl: <(^|\.)>
+ PsiElement(GROUP_BEGIN)('(')
+ RegExpPatternImpl: <^|\.>
+ RegExpBranchImpl: <^>
+ RegExpBoundaryImpl: <^>
+ PsiElement(CARET)('^')
+ PsiElement(UNION)('|')
+ RegExpBranchImpl: <\.>
+ RegExpCharImpl: <\.>
+ PsiElement(ESC_CHARACTER)('\.')
+ PsiElement(GROUP_END)(')')
+ RegExpCharImpl: <\*>
+ PsiElement(ESC_CHARACTER)('\*')
+ RegExpGroupImpl: <(?=(\.|$))>
+ PsiElement(POS_LOOKAHEAD)('(?=')
+ RegExpPatternImpl: <(\.|$)>
+ RegExpBranchImpl: <(\.|$)>
+ RegExpGroupImpl: <(\.|$)>
+ PsiElement(GROUP_BEGIN)('(')
+ RegExpPatternImpl: <\.|$>
+ RegExpBranchImpl: <\.>
+ RegExpCharImpl: <\.>
+ PsiElement(ESC_CHARACTER)('\.')
+ PsiElement(UNION)('|')
+ RegExpBranchImpl: <$>
+ RegExpBoundaryImpl: <$>
+ PsiElement(DOLLAR)('$')
+ PsiElement(GROUP_END)(')')
+ PsiElement(GROUP_END)(')')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses1.txt b/RegExpSupport/testData/psi/Charclasses1.txt
new file mode 100644
index 000000000000..82ab2547804c
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses1.txt
@@ -0,0 +1,15 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[bc]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpUnionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('c')
+ PsiElement(CLASS_END)(']')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('d')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses10.txt b/RegExpSupport/testData/psi/Charclasses10.txt
new file mode 100644
index 000000000000..4afc1e58f52f
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses10.txt
@@ -0,0 +1,14 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b&&-]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(ANDAND)('&&')
+ RegExpCharImpl: <->
+ PsiElement(MINUS)('-')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses11.txt b/RegExpSupport/testData/psi/Charclasses11.txt
new file mode 100644
index 000000000000..e91dcd2e0c0b
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses11.txt
@@ -0,0 +1,17 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b&&-b]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(ANDAND)('&&')
+ RegExpUnionImpl: <-b>
+ RegExpCharImpl: <->
+ PsiElement(MINUS)('-')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses12.txt b/RegExpSupport/testData/psi/Charclasses12.txt
new file mode 100644
index 000000000000..31d006657c64
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses12.txt
@@ -0,0 +1,8 @@
+REGEXP_FILE
+ RegExpPatternImpl: <[&&]>
+ RegExpBranchImpl: <[&&]>
+ RegExpClassImpl: <[&&]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl: <&&>
+ PsiElement(ANDAND)('&&')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses13.txt b/RegExpSupport/testData/psi/Charclasses13.txt
new file mode 100644
index 000000000000..01c7f2789161
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses13.txt
@@ -0,0 +1,14 @@
+REGEXP_FILE
+ RegExpPatternImpl: <[&&[^\d]]>
+ RegExpBranchImpl: <[&&[^\d]]>
+ RegExpClassImpl: <[&&[^\d]]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl: <&&[^\d]>
+ PsiElement(ANDAND)('&&')
+ RegExpClassImpl: <[^\d]>
+ PsiElement(CLASS_BEGIN)('[')
+ PsiElement(CARET)('^')
+ RegExpSimpleClassImpl: <\d>
+ PsiElement(CHAR_CLASS)('\d')
+ PsiElement(CLASS_END)(']')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses14.txt b/RegExpSupport/testData/psi/Charclasses14.txt
new file mode 100644
index 000000000000..85a66ba2f4d8
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses14.txt
@@ -0,0 +1,10 @@
+REGEXP_FILE
+ RegExpPatternImpl: <[a&&]>
+ RegExpBranchImpl: <[a&&]>
+ RegExpClassImpl: <[a&&]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ PsiElement(ANDAND)('&&')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses15.txt b/RegExpSupport/testData/psi/Charclasses15.txt
new file mode 100644
index 000000000000..d9723a318e8e
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses15.txt
@@ -0,0 +1,17 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b&&c&&d]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(ANDAND)('&&')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('c')
+ PsiElement(ANDAND)('&&')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('d')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses16.txt b/RegExpSupport/testData/psi/Charclasses16.txt
new file mode 100644
index 000000000000..717220c4c5e2
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses16.txt
@@ -0,0 +1,24 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b&&c&&d-e&&f]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(ANDAND)('&&')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('c')
+ PsiElement(ANDAND)('&&')
+ RegExpCharRangeImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('d')
+ PsiElement(MINUS)('-')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('e')
+ PsiElement(ANDAND)('&&')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('f')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses17.txt b/RegExpSupport/testData/psi/Charclasses17.txt
new file mode 100644
index 000000000000..85a66ba2f4d8
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses17.txt
@@ -0,0 +1,10 @@
+REGEXP_FILE
+ RegExpPatternImpl: <[a&&]>
+ RegExpBranchImpl: <[a&&]>
+ RegExpClassImpl: <[a&&]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpIntersectionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ PsiElement(ANDAND)('&&')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses18.txt b/RegExpSupport/testData/psi/Charclasses18.txt
new file mode 100644
index 000000000000..7bbc99f361d7
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses18.txt
@@ -0,0 +1,21 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[a[b][c]]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpUnionImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('b')
+ PsiElement(CLASS_END)(']')
+ RegExpClassImpl: <[c]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('c')
+ PsiElement(CLASS_END)(']')
+ PsiElement(CLASS_END)(']')
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses19.txt b/RegExpSupport/testData/psi/Charclasses19.txt
new file mode 100644
index 000000000000..c50dc2e10420
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses19.txt
@@ -0,0 +1,16 @@
+REGEXP_FILE
+ RegExpPatternImpl: <[a-[]]>
+ RegExpBranchImpl: <[a-[]]>
+ RegExpClassImpl: <[a-[]]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpCharImpl: <->
+ PsiElement(MINUS)('-')
+ RegExpClassImpl: <[]]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpCharImpl: <]>
+ PsiElement(CHARACTER)(']')
+ PsiElement(CLASS_END)(']')
+ PsiErrorElement:Unclosed character class
+
\ No newline at end of file
diff --git a/RegExpSupport/testData/psi/Charclasses2.txt b/RegExpSupport/testData/psi/Charclasses2.txt
new file mode 100644
index 000000000000..c2f6db289f7f
--- /dev/null
+++ b/RegExpSupport/testData/psi/Charclasses2.txt
@@ -0,0 +1,16 @@
+REGEXP_FILE
+ RegExpPatternImpl:
+ RegExpBranchImpl:
+ RegExpCharImpl:
+ PsiElement(CHARACTER)('a')
+ RegExpClassImpl: <[b-d]>
+ PsiElement(CLASS_BEGIN)('[')
+ RegExpCharRangeImpl:
+ RegExpCharImpl: