<NME> Operators.txt
<BEF> ADDFILE
<MSG> Add ref/resolve support for operator decls

<DFF> @@ -0,0 +1,132 @@
+Elm File
+  ElmTypeAnnotation(TYPE_ANNOTATION)
+    PsiElement(LEFT_PARENTHESIS)('(')
+    PsiElement(OPERATOR_IDENTIFIER)('**')
+    PsiElement(RIGHT_PARENTHESIS)(')')
+    PsiWhiteSpace(' ')
+    PsiElement(COLON)(':')
+    PsiWhiteSpace(' ')
+    ElmTypeRef(TYPE_REF)
+      ElmTypeVariableRef(TYPE_VARIABLE_REF)
+        PsiElement(LOWER_CASE_IDENTIFIER)('number')
+      PsiWhiteSpace(' ')
+      PsiElement(ARROW)('->')
+      PsiWhiteSpace(' ')
+      ElmTypeVariableRef(TYPE_VARIABLE_REF)
+        PsiElement(LOWER_CASE_IDENTIFIER)('number')
+      PsiWhiteSpace(' ')
+      PsiElement(ARROW)('->')
+      PsiWhiteSpace(' ')
+      ElmTypeVariableRef(TYPE_VARIABLE_REF)
+        PsiElement(LOWER_CASE_IDENTIFIER)('number')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmOperatorDeclarationLeft(OPERATOR_DECLARATION_LEFT)
+      PsiElement(LEFT_PARENTHESIS)('(')
+      PsiElement(OPERATOR_IDENTIFIER)('**')
+      PsiElement(RIGHT_PARENTHESIS)(')')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        ElmOperatorAsFunction(OPERATOR_AS_FUNCTION)
+          PsiElement(LEFT_PARENTHESIS)('(')
+          PsiElement(OPERATOR_IDENTIFIER)('^')
+          PsiElement(RIGHT_PARENTHESIS)(')')
+  PsiWhiteSpace('\n')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmOperatorConfig(OPERATOR_CONFIG)
+    PsiElement(INFIXL)('infixl')
+    PsiWhiteSpace(' ')
+    PsiElement(NUMBER_LITERAL)('0')
+    PsiWhiteSpace(' ')
+    PsiElement(OPERATOR_IDENTIFIER)('**')
+  PsiWhiteSpace('\n')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('f1')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        PsiElement(NUMBER_LITERAL)('2')
+      PsiWhiteSpace(' ')
+      ElmOperator(OPERATOR)
+        PsiElement(OPERATOR_IDENTIFIER)('**')
+      PsiWhiteSpace(' ')
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        PsiElement(NUMBER_LITERAL)('3')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('f2')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        ElmOperatorAsFunction(OPERATOR_AS_FUNCTION)
+          PsiElement(LEFT_PARENTHESIS)('(')
+          PsiElement(OPERATOR_IDENTIFIER)('**')
+          PsiElement(RIGHT_PARENTHESIS)(')')
+        PsiWhiteSpace(' ')
+        PsiElement(NUMBER_LITERAL)('2')
+        PsiWhiteSpace(' ')
+        PsiElement(NUMBER_LITERAL)('3')
+  PsiWhiteSpace('\n')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('g1')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        PsiElement(OPERATOR_IDENTIFIER)('-')
+        ElmValueExpr(VALUE_EXPR)
+          ElmValueQID(VALUE_QID)
+            PsiElement(LOWER_CASE_IDENTIFIER)('f1')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('g2')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        PsiElement(NUMBER_LITERAL)('8')
+      PsiWhiteSpace(' ')
+      ElmOperator(OPERATOR)
+        PsiElement(OPERATOR_IDENTIFIER)('-')
+      PsiWhiteSpace(' ')
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        ElmValueExpr(VALUE_EXPR)
+          ElmValueQID(VALUE_QID)
+            PsiElement(LOWER_CASE_IDENTIFIER)('f1')
+  PsiWhiteSpace('\n')
+  PsiElement(VIRTUAL_END_DECL)('\n')
+  ElmValueDeclaration(VALUE_DECLARATION)
+    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
+      PsiElement(LOWER_CASE_IDENTIFIER)('h1')
+    PsiWhiteSpace(' ')
+    PsiElement(EQ)('=')
+    PsiWhiteSpace(' ')
+    ElmExpression(EXPRESSION)
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        PsiElement(STRING_LITERAL)('"hello"')
+      PsiWhiteSpace(' ')
+      ElmOperator(OPERATOR)
+        PsiElement(OPERATOR_IDENTIFIER)('::')
+      PsiWhiteSpace(' ')
+      ElmListOfOperands(LIST_OF_OPERANDS)
+        ElmList(LIST)
+          PsiElement(LEFT_SQUARE_BRACKET)('[')
+          ElmExpression(EXPRESSION)
+            ElmListOfOperands(LIST_OF_OPERANDS)
+              PsiElement(STRING_LITERAL)('"world"')
+          PsiElement(RIGHT_SQUARE_BRACKET)(']')
\ No newline at end of file

Add ref/resolve support for operator decls