diff --git a/src/plugins/qmleditor/parser/qmljs.g b/src/plugins/qmleditor/parser/qmljs.g
index 41d6e2de2f6239202513d7b045e0172ccd690ab3..211887b4f48bb799e2c8facac018ac08d2864471 100644
--- a/src/plugins/qmleditor/parser/qmljs.g
+++ b/src/plugins/qmleditor/parser/qmljs.g
@@ -89,6 +89,7 @@
 
 --- feed tokens
 %token T_FEED_UI_PROGRAM
+%token T_FEED_UI_OBJECT_MEMBER
 %token T_FEED_JS_STATEMENT
 %token T_FEED_JS_EXPRESSION
 
@@ -285,6 +286,7 @@ public:
     bool parse() { return parse(T_FEED_UI_PROGRAM); }
     bool parseStatement() { return parse(T_FEED_JS_STATEMENT); }
     bool parseExpression() { return parse(T_FEED_JS_EXPRESSION); }
+    bool parseUiObjectMember() { return parse(T_FEED_UI_OBJECT_MEMBER); }
 
     AST::UiProgram *ast() const
     { return AST::cast<AST::UiProgram *>(program); }
@@ -305,6 +307,14 @@ public:
         return program->expressionCast();
     }
 
+    AST::UiObjectMember *uiObjectMember() const
+    {
+        if (! program)
+            return 0;
+
+        return program->uiObjectMemberCast();
+    }
+
     QList<DiagnosticMessage> diagnosticMessages() const
     { return diagnostic_messages; }
 
@@ -550,6 +560,14 @@ case $rule_number: {
 } break;
 ./
 
+TopLevel: T_FEED_UI_OBJECT_MEMBER UiObjectMember ;
+/.
+case $rule_number: {
+  sym(1).Node = sym(2).Node;
+  program = sym(1).Node;
+} break;
+./
+
 UiProgram: UiImportListOpt UiRootMember ;
 /.
 case $rule_number: {
@@ -850,6 +868,21 @@ case $rule_number: {
 }   break;
 ./
 
+UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_SEMICOLON ;
+/.
+case $rule_number: {
+    AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
+    node->typeModifier = sym(2).sval;
+    node->propertyToken = loc(1);
+    node->typeModifierToken = loc(2);
+    node->typeToken = loc(4);
+    node->identifierToken = loc(6);
+    node->semicolonToken = loc(7);
+    sym(1).Node = node;
+}   break;
+./
+
 UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_AUTOMATIC_SEMICOLON ;
 UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_SEMICOLON ;
 /.
diff --git a/src/plugins/qmleditor/parser/qmljsast.cpp b/src/plugins/qmleditor/parser/qmljsast.cpp
index 64fe99c551570dd053298f0467e7b13481359e06..4c45bc89d9eeee28410dab67608575e68f1d430a 100644
--- a/src/plugins/qmleditor/parser/qmljsast.cpp
+++ b/src/plugins/qmleditor/parser/qmljsast.cpp
@@ -75,6 +75,11 @@ Statement *Node::statementCast()
     return 0;
 }
 
+UiObjectMember *Node::uiObjectMemberCast()
+{
+    return 0;
+}
+
 ExpressionNode *ExpressionNode::expressionCast()
 {
     return this;
@@ -90,6 +95,11 @@ Statement *Statement::statementCast()
     return this;
 }
 
+UiObjectMember *UiObjectMember::uiObjectMemberCast()
+{
+    return this;
+}
+
 void NestedExpression::accept0(Visitor *visitor)
 {
     if (visitor->visit(this)) {
diff --git a/src/plugins/qmleditor/parser/qmljsast_p.h b/src/plugins/qmleditor/parser/qmljsast_p.h
index bacf70f4c10391857f6a6dcd00bb9ceac77e0a4f..ef8a66bd949f62bd345cc35f1db73109becd8411 100644
--- a/src/plugins/qmleditor/parser/qmljsast_p.h
+++ b/src/plugins/qmleditor/parser/qmljsast_p.h
@@ -228,6 +228,7 @@ public:
     virtual ExpressionNode *expressionCast();
     virtual BinaryExpression *binaryExpressionCast();
     virtual Statement *statementCast();
+    virtual UiObjectMember *uiObjectMemberCast();
 
     void accept(Visitor *visitor);
     static void accept(Node *node, Visitor *visitor);
@@ -2356,6 +2357,8 @@ class UiObjectMember: public Node
 public:
     virtual SourceLocation firstSourceLocation() const = 0;
     virtual SourceLocation lastSourceLocation() const = 0;
+
+    virtual UiObjectMember *uiObjectMemberCast();
 };
 
 class UiObjectMemberList: public Node
@@ -2481,13 +2484,13 @@ public:
 
     UiPublicMember(NameId *memberType,
                    NameId *name)
-        : type(Property), memberType(memberType), name(name), expression(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
+        : type(Property), typeModifier(0), memberType(memberType), name(name), expression(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
     { kind = K; }
 
     UiPublicMember(NameId *memberType,
                    NameId *name,
                    ExpressionNode *expression)
-        : type(Property), memberType(memberType), name(name), expression(expression), isDefaultMember(false), isReadonlyMember(false), parameters(0)
+        : type(Property), typeModifier(0), memberType(memberType), name(name), expression(expression), isDefaultMember(false), isReadonlyMember(false), parameters(0)
     { kind = K; }
 
     virtual SourceLocation firstSourceLocation() const
@@ -2509,6 +2512,7 @@ public:
 
 // attributes
     enum { Signal, Property } type;
+    NameId *typeModifier;
     NameId *memberType;
     NameId *name;
     ExpressionNode *expression;
@@ -2518,6 +2522,7 @@ public:
     SourceLocation defaultToken;
     SourceLocation readonlyToken;
     SourceLocation propertyToken;
+    SourceLocation typeModifierToken;
     SourceLocation typeToken;
     SourceLocation identifierToken;
     SourceLocation colonToken;
diff --git a/src/plugins/qmleditor/parser/qmljsastvisitor.cpp b/src/plugins/qmleditor/parser/qmljsastvisitor.cpp
index d3a1d5306824446887c6601aefc70dd660f37b5a..642bcee26b9818a524f6c1067c65163e047f7e04 100644
--- a/src/plugins/qmleditor/parser/qmljsastvisitor.cpp
+++ b/src/plugins/qmleditor/parser/qmljsastvisitor.cpp
@@ -41,7 +41,7 @@
 
 #include "qmljsastvisitor_p.h"
 
-QT_QML_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE
 
 namespace QmlJS { namespace AST {
 
@@ -55,4 +55,4 @@ Visitor::~Visitor()
 
 } } // namespace QmlJS::AST
 
-QT_QML_END_NAMESPACE
+QT_END_NAMESPACE
diff --git a/src/plugins/qmleditor/parser/qmljsgrammar.cpp b/src/plugins/qmleditor/parser/qmljsgrammar.cpp
index 868c421a7ac917155e18d1bb94bebced4b8736b3..67f14032fa7c5d3cad96bd8c89f41b2d12a43a22 100644
--- a/src/plugins/qmleditor/parser/qmljsgrammar.cpp
+++ b/src/plugins/qmleditor/parser/qmljsgrammar.cpp
@@ -2,6 +2,7 @@
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of the QtCore module of the Qt Toolkit.
@@ -21,10 +22,9 @@
 ** ensure the GNU Lesser General Public License version 2.1 requirements
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
-** In addition, as a special exception, Nokia gives you certain
-** additional rights.  These rights are described in the Nokia Qt LGPL
-** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 **
 ** If you have questions regarding the use of this file, please contact
 ** Nokia at qt-info@nokia.com.
@@ -52,673 +52,718 @@ const char *const QmlJSGrammar::spell [] = {
   ")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch", 
   "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", 
   "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", "public", 
-  "import", "as", 0, 0, 0, 0, 0};
+  "import", "as", 0, 0, 0, 0, 0, 0};
 
 const int QmlJSGrammar::lhs [] = {
-  97, 97, 97, 98, 101, 101, 104, 104, 106, 105, 
-  105, 105, 105, 105, 105, 105, 105, 108, 103, 102, 
-  111, 111, 113, 113, 114, 114, 110, 112, 112, 112, 
-  112, 112, 112, 112, 120, 120, 120, 121, 121, 122, 
-  122, 112, 112, 112, 112, 112, 112, 112, 112, 112, 
-  112, 112, 112, 112, 112, 112, 112, 109, 109, 109, 
-  109, 125, 125, 125, 125, 125, 125, 125, 125, 125, 
-  125, 125, 125, 125, 125, 125, 125, 125, 125, 115, 
-  127, 127, 127, 127, 126, 126, 129, 129, 131, 131, 
-  131, 131, 131, 131, 132, 132, 132, 132, 132, 132, 
-  132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 
-  132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 
-  132, 132, 132, 132, 132, 133, 133, 107, 107, 107, 
-  107, 107, 136, 136, 137, 137, 137, 137, 135, 135, 
-  138, 138, 139, 139, 140, 140, 140, 141, 141, 141, 
-  141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 
-  142, 143, 143, 143, 144, 144, 144, 144, 145, 145, 
-  145, 145, 145, 145, 145, 146, 146, 146, 146, 146, 
-  146, 147, 147, 147, 147, 147, 148, 148, 148, 148, 
-  148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 
-  153, 154, 154, 155, 155, 156, 156, 157, 157, 158, 
-  158, 159, 159, 160, 160, 130, 130, 161, 161, 162, 
-  162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 
-  162, 100, 100, 163, 163, 164, 164, 165, 165, 99, 
-  99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 
-  99, 99, 99, 99, 116, 177, 177, 176, 176, 124, 
-  124, 178, 178, 179, 179, 181, 181, 180, 182, 185, 
-  183, 183, 186, 184, 184, 117, 118, 118, 119, 119, 
-  166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 
-  167, 168, 168, 168, 168, 169, 169, 170, 172, 187, 
-  187, 190, 190, 188, 188, 191, 189, 171, 171, 171, 
-  173, 173, 174, 174, 174, 192, 193, 175, 175, 123, 
-  134, 197, 197, 194, 194, 195, 195, 198, 199, 199, 
-  200, 200, 196, 196, 128, 128, 201};
+  98, 98, 98, 98, 99, 103, 103, 106, 106, 108, 
+  107, 107, 107, 107, 107, 107, 107, 107, 110, 105, 
+  104, 113, 113, 114, 114, 115, 115, 112, 102, 102, 
+  102, 102, 102, 102, 102, 121, 121, 121, 122, 122, 
+  123, 123, 102, 102, 102, 102, 102, 102, 102, 102, 
+  102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 
+  111, 111, 111, 111, 126, 126, 126, 126, 126, 126, 
+  126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+  126, 126, 116, 128, 128, 128, 128, 127, 127, 130, 
+  130, 132, 132, 132, 132, 132, 132, 133, 133, 133, 
+  133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 
+  133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 
+  133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 
+  109, 109, 109, 109, 109, 137, 137, 138, 138, 138, 
+  138, 136, 136, 139, 139, 140, 140, 141, 141, 141, 
+  142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
+  143, 143, 143, 143, 144, 144, 144, 145, 145, 145, 
+  145, 146, 146, 146, 146, 146, 146, 146, 147, 147, 
+  147, 147, 147, 147, 148, 148, 148, 148, 148, 149, 
+  149, 149, 149, 149, 150, 150, 151, 151, 152, 152, 
+  153, 153, 154, 154, 155, 155, 156, 156, 157, 157, 
+  158, 158, 159, 159, 160, 160, 161, 161, 131, 131, 
+  162, 162, 163, 163, 163, 163, 163, 163, 163, 163, 
+  163, 163, 163, 163, 101, 101, 164, 164, 165, 165, 
+  166, 166, 100, 100, 100, 100, 100, 100, 100, 100, 
+  100, 100, 100, 100, 100, 100, 100, 117, 178, 178, 
+  177, 177, 125, 125, 179, 179, 180, 180, 182, 182, 
+  181, 183, 186, 184, 184, 187, 185, 185, 118, 119, 
+  119, 120, 120, 167, 167, 167, 167, 167, 167, 167, 
+  168, 168, 168, 168, 169, 169, 169, 169, 170, 170, 
+  171, 173, 188, 188, 191, 191, 189, 189, 192, 190, 
+  172, 172, 172, 174, 174, 175, 175, 175, 193, 194, 
+  176, 176, 124, 135, 198, 198, 195, 195, 196, 196, 
+  199, 200, 200, 201, 201, 197, 197, 129, 129, 202};
 
 const int QmlJSGrammar:: rhs[] = {
-  2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 
-  2, 3, 3, 5, 5, 4, 4, 2, 0, 1, 
-  1, 2, 1, 3, 2, 3, 2, 1, 5, 4, 
-  3, 3, 3, 3, 1, 1, 1, 0, 1, 2, 
-  4, 6, 6, 3, 3, 4, 4, 5, 5, 6, 
-  6, 7, 7, 7, 7, 1, 1, 1, 1, 1, 
+  2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 
+  2, 2, 3, 3, 5, 5, 4, 4, 2, 0, 
+  1, 1, 2, 1, 3, 2, 3, 2, 1, 5, 
+  4, 3, 3, 3, 3, 1, 1, 1, 0, 1, 
+  2, 4, 6, 6, 3, 3, 7, 7, 4, 4, 
+  5, 5, 6, 6, 7, 7, 7, 7, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-  1, 2, 3, 3, 4, 5, 3, 4, 3, 1, 
-  1, 2, 3, 4, 1, 2, 3, 5, 1, 1, 
+  1, 1, 1, 1, 2, 3, 3, 4, 5, 3, 
+  4, 3, 1, 1, 2, 3, 4, 1, 2, 3, 
+  5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 
-  3, 5, 1, 2, 4, 4, 4, 3, 0, 1, 
-  1, 3, 1, 1, 1, 2, 2, 1, 2, 2, 
-  2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 
-  3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 
-  3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 
-  3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 
-  3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 
-  3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 
-  3, 1, 5, 1, 5, 1, 3, 1, 3, 1, 
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-  1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-  1, 1, 1, 1, 3, 1, 2, 0, 1, 3, 
-  3, 1, 1, 1, 3, 1, 3, 2, 2, 2, 
-  0, 1, 2, 0, 1, 1, 2, 2, 7, 5, 
-  7, 7, 5, 9, 10, 7, 8, 2, 2, 3, 
-  3, 2, 2, 3, 3, 3, 3, 5, 5, 3, 
-  5, 1, 2, 0, 1, 4, 3, 3, 3, 3, 
-  3, 3, 3, 3, 4, 5, 2, 2, 2, 8, 
-  8, 1, 3, 0, 1, 0, 1, 1, 1, 2, 
-  1, 1, 0, 1, 0, 1, 2};
+  1, 1, 4, 3, 5, 1, 2, 4, 4, 4, 
+  3, 0, 1, 1, 3, 1, 1, 1, 2, 2, 
+  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
+  1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 
+  3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 
+  3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 
+  3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 
+  1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 
+  1, 3, 1, 3, 1, 5, 1, 5, 1, 3, 
+  1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 
+  1, 1, 1, 1, 1, 3, 0, 1, 1, 3, 
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+  1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 
+  0, 1, 3, 3, 1, 1, 1, 3, 1, 3, 
+  2, 2, 2, 0, 1, 2, 0, 1, 1, 2, 
+  2, 7, 5, 7, 7, 5, 9, 10, 7, 8, 
+  2, 2, 3, 3, 2, 2, 3, 3, 3, 3, 
+  5, 5, 3, 5, 1, 2, 0, 1, 4, 3, 
+  3, 3, 3, 3, 3, 3, 3, 4, 5, 2, 
+  2, 2, 8, 8, 1, 3, 0, 1, 0, 1, 
+  1, 1, 2, 1, 1, 0, 1, 0, 1, 2};
 
 const int QmlJSGrammar::action_default [] = {
-  0, 0, 0, 19, 0, 165, 232, 196, 204, 200, 
-  144, 216, 192, 3, 129, 63, 145, 208, 212, 133, 
-  162, 143, 148, 128, 182, 169, 0, 70, 71, 66, 
-  333, 58, 335, 0, 0, 0, 0, 68, 0, 0, 
-  64, 67, 0, 0, 59, 61, 60, 69, 62, 0, 
-  65, 0, 0, 158, 0, 0, 145, 164, 147, 146, 
-  0, 0, 0, 160, 161, 159, 163, 0, 193, 0, 
-  0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 
-  173, 0, 0, 0, 167, 168, 166, 171, 175, 174, 
-  172, 170, 185, 184, 186, 0, 201, 0, 197, 0, 
-  0, 139, 126, 138, 127, 95, 96, 97, 122, 98, 
-  123, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
-  108, 109, 110, 111, 124, 112, 113, 114, 115, 116, 
-  117, 118, 119, 120, 121, 125, 0, 0, 137, 233, 
-  140, 0, 141, 0, 142, 136, 0, 229, 222, 220, 
-  227, 228, 226, 225, 231, 224, 223, 221, 230, 217, 
-  0, 205, 0, 0, 209, 0, 0, 213, 0, 0, 
-  139, 131, 0, 130, 0, 135, 149, 0, 334, 324, 
-  325, 0, 322, 0, 323, 0, 326, 240, 247, 246, 
-  254, 242, 0, 243, 327, 0, 332, 244, 245, 250, 
-  248, 329, 328, 331, 251, 0, 262, 0, 0, 0, 
-  0, 333, 58, 0, 335, 59, 234, 276, 60, 0, 
-  0, 0, 263, 0, 0, 252, 253, 0, 241, 249, 
-  277, 278, 321, 330, 0, 292, 293, 294, 295, 0, 
-  288, 289, 290, 291, 318, 319, 0, 0, 0, 0, 
-  0, 281, 282, 238, 236, 198, 206, 202, 218, 194, 
-  239, 0, 145, 210, 214, 187, 176, 0, 0, 195, 
-  0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 
-  180, 178, 181, 179, 177, 190, 189, 191, 0, 203, 
-  0, 199, 0, 237, 145, 0, 219, 234, 235, 0, 
-  234, 0, 0, 284, 0, 0, 0, 286, 0, 207, 
-  0, 0, 211, 0, 0, 215, 274, 0, 266, 275, 
-  269, 0, 273, 0, 234, 267, 0, 234, 0, 0, 
-  285, 0, 0, 0, 287, 334, 324, 0, 0, 326, 
-  0, 320, 0, 310, 0, 0, 0, 280, 0, 279, 
-  0, 336, 0, 94, 256, 259, 0, 95, 262, 98, 
-  123, 100, 101, 66, 105, 106, 58, 107, 110, 64, 
-  67, 59, 234, 60, 69, 113, 62, 115, 65, 117, 
-  118, 263, 120, 121, 125, 0, 87, 0, 0, 89, 
-  93, 91, 78, 90, 92, 0, 88, 77, 257, 255, 
-  133, 134, 139, 0, 132, 0, 309, 0, 296, 297, 
-  0, 308, 0, 0, 0, 299, 304, 302, 305, 0, 
-  0, 303, 304, 0, 300, 0, 301, 258, 307, 0, 
-  258, 306, 0, 311, 312, 0, 258, 313, 314, 0, 
-  0, 315, 0, 0, 0, 316, 317, 151, 150, 0, 
-  0, 0, 283, 0, 0, 0, 298, 271, 264, 0, 
-  272, 268, 0, 270, 260, 0, 261, 265, 81, 0, 
-  0, 85, 72, 0, 74, 83, 0, 75, 84, 86, 
-  76, 82, 73, 0, 79, 155, 153, 157, 154, 152, 
-  156, 2, 5, 0, 7, 0, 6, 0, 1, 18, 
-  9, 0, 0, 0, 10, 0, 11, 0, 16, 17, 
-  0, 12, 13, 0, 14, 15, 8, 80, 20, 0, 
-  4, 0, 27, 56, 0, 59, 25, 61, 60, 28, 
-  21, 0, 0, 57, 0, 37, 36, 35, 0, 0, 
-  48, 0, 49, 0, 54, 55, 0, 0, 46, 0, 
-  47, 0, 50, 51, 0, 0, 0, 0, 0, 52, 
-  53, 0, 44, 38, 45, 39, 0, 0, 0, 0, 
-  41, 0, 42, 43, 40, 26, 22, 0, 31, 32, 
-  33, 34, 133, 258, 0, 0, 95, 262, 98, 123, 
-  100, 101, 66, 105, 106, 58, 107, 110, 64, 67, 
-  59, 234, 60, 69, 113, 62, 115, 65, 117, 118, 
-  263, 120, 121, 125, 133, 0, 23, 0, 29, 24, 
-  30, 337};
+  0, 0, 0, 0, 20, 0, 168, 235, 199, 207, 
+  203, 147, 219, 195, 3, 132, 66, 148, 211, 215, 
+  136, 165, 146, 151, 131, 185, 172, 0, 73, 74, 
+  69, 336, 61, 338, 0, 0, 0, 0, 71, 0, 
+  0, 67, 70, 0, 0, 62, 64, 63, 72, 65, 
+  0, 68, 0, 0, 161, 0, 0, 148, 167, 150, 
+  149, 0, 0, 0, 163, 164, 162, 166, 0, 196, 
+  0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 
+  0, 176, 0, 0, 0, 170, 171, 169, 174, 178, 
+  177, 175, 173, 188, 187, 189, 0, 204, 0, 200, 
+  0, 0, 142, 129, 141, 130, 98, 99, 100, 125, 
+  101, 126, 102, 103, 104, 105, 106, 107, 108, 109, 
+  110, 111, 112, 113, 114, 127, 115, 116, 117, 118, 
+  119, 120, 121, 122, 123, 124, 128, 0, 0, 140, 
+  236, 143, 0, 144, 0, 145, 139, 0, 232, 225, 
+  223, 230, 231, 229, 228, 234, 227, 226, 224, 233, 
+  220, 0, 208, 0, 0, 212, 0, 0, 216, 0, 
+  0, 142, 134, 0, 133, 0, 138, 152, 0, 337, 
+  327, 328, 0, 325, 0, 326, 0, 329, 243, 250, 
+  249, 257, 245, 0, 246, 330, 0, 335, 247, 248, 
+  253, 251, 332, 331, 334, 254, 0, 265, 0, 0, 
+  0, 0, 336, 61, 0, 338, 62, 237, 279, 63, 
+  0, 0, 0, 266, 0, 0, 255, 256, 0, 244, 
+  252, 280, 281, 324, 333, 0, 295, 296, 297, 298, 
+  0, 291, 292, 293, 294, 321, 322, 0, 0, 0, 
+  0, 0, 284, 285, 241, 239, 201, 209, 205, 221, 
+  197, 242, 0, 148, 213, 217, 190, 179, 0, 0, 
+  198, 0, 0, 0, 0, 191, 0, 0, 0, 0, 
+  0, 183, 181, 184, 182, 180, 193, 192, 194, 0, 
+  206, 0, 202, 0, 240, 148, 0, 222, 237, 238, 
+  0, 237, 0, 0, 287, 0, 0, 0, 289, 0, 
+  210, 0, 0, 214, 0, 0, 218, 277, 0, 269, 
+  278, 272, 0, 276, 0, 237, 270, 0, 237, 0, 
+  0, 288, 0, 0, 0, 290, 337, 327, 0, 0, 
+  329, 0, 323, 0, 313, 0, 0, 0, 283, 0, 
+  282, 0, 339, 0, 97, 259, 262, 0, 98, 265, 
+  101, 126, 103, 104, 69, 108, 109, 61, 110, 113, 
+  67, 70, 62, 237, 63, 72, 116, 65, 118, 68, 
+  120, 121, 266, 123, 124, 128, 0, 90, 0, 0, 
+  92, 96, 94, 81, 93, 95, 0, 91, 80, 260, 
+  258, 136, 137, 142, 0, 135, 0, 312, 0, 299, 
+  300, 0, 311, 0, 0, 0, 302, 307, 305, 308, 
+  0, 0, 306, 307, 0, 303, 0, 304, 261, 310, 
+  0, 261, 309, 0, 314, 315, 0, 261, 316, 317, 
+  0, 0, 318, 0, 0, 0, 319, 320, 154, 153, 
+  0, 0, 0, 286, 0, 0, 0, 301, 274, 267, 
+  0, 275, 271, 0, 273, 263, 0, 264, 268, 84, 
+  0, 0, 88, 75, 0, 77, 86, 0, 78, 87, 
+  89, 79, 85, 76, 0, 82, 158, 156, 160, 157, 
+  155, 159, 2, 59, 83, 0, 0, 62, 64, 63, 
+  29, 4, 0, 60, 0, 38, 37, 36, 0, 0, 
+  51, 0, 52, 0, 57, 58, 0, 38, 0, 0, 
+  0, 0, 0, 47, 48, 0, 49, 0, 50, 0, 
+  53, 54, 0, 0, 0, 0, 0, 55, 56, 0, 
+  45, 39, 46, 40, 0, 0, 0, 0, 42, 0, 
+  43, 44, 41, 0, 0, 28, 32, 33, 34, 35, 
+  136, 261, 0, 0, 98, 265, 101, 126, 103, 104, 
+  69, 108, 109, 61, 110, 113, 67, 70, 62, 237, 
+  63, 72, 116, 65, 118, 68, 120, 121, 266, 123, 
+  124, 128, 136, 0, 24, 0, 0, 30, 25, 31, 
+  26, 22, 0, 27, 23, 6, 0, 8, 0, 7, 
+  0, 1, 19, 10, 0, 11, 0, 12, 0, 17, 
+  18, 0, 13, 14, 0, 15, 16, 9, 21, 5, 
+  340};
 
 const int QmlJSGrammar::goto_default [] = {
-  4, 498, 354, 192, 497, 520, 492, 496, 494, 499, 
-  19, 495, 15, 529, 531, 530, 615, 522, 519, 187, 
-  191, 193, 197, 546, 566, 565, 196, 228, 23, 470, 
-  469, 352, 351, 6, 350, 353, 103, 14, 141, 21, 
-  10, 140, 16, 22, 53, 20, 5, 25, 24, 265, 
-  12, 259, 7, 255, 9, 257, 8, 256, 17, 263, 
-  18, 264, 11, 258, 254, 295, 407, 260, 261, 198, 
-  189, 188, 200, 229, 199, 204, 225, 226, 190, 356, 
-  355, 227, 459, 458, 317, 318, 461, 320, 460, 319, 
-  415, 419, 422, 418, 417, 437, 438, 181, 195, 177, 
-  180, 194, 202, 201, 0};
+  5, 611, 355, 193, 501, 610, 629, 605, 609, 607, 
+  612, 20, 608, 16, 500, 602, 593, 555, 502, 188, 
+  192, 194, 198, 518, 544, 543, 197, 229, 24, 471, 
+  470, 353, 352, 7, 351, 354, 104, 15, 142, 22, 
+  11, 141, 17, 23, 54, 21, 6, 26, 25, 266, 
+  13, 260, 8, 256, 10, 258, 9, 257, 18, 264, 
+  19, 265, 12, 259, 255, 296, 408, 261, 262, 199, 
+  190, 189, 201, 230, 200, 205, 226, 227, 191, 357, 
+  356, 228, 460, 459, 318, 319, 462, 321, 461, 320, 
+  416, 420, 423, 419, 418, 438, 439, 182, 196, 178, 
+  181, 195, 203, 202, 0};
 
 const int QmlJSGrammar::action_index [] = {
-  128, 1036, 2026, -39, 49, 73, -97, 54, 10, -69, 
-  243, -97, 285, 1, -97, -97, 503, 29, 75, 246, 
-  202, -97, -97, -97, 477, 288, 1036, -97, -97, -97, 
-  289, -97, 1840, 1476, 1036, 1036, 1036, -97, 691, 1036, 
-  -97, -97, 1036, 1036, -97, -97, -97, -97, -97, 1036, 
-  -97, 1036, 1036, -97, 1036, 1036, 86, 211, -97, -97, 
-  1036, 1036, 1036, -97, -97, -97, 197, 1036, 245, 1036, 
-  1036, 1036, 1036, 438, 1036, 1036, 1036, 1036, 1036, 1036, 
-  288, 1036, 1036, 1036, 133, 129, 132, 288, 288, 288, 
-  288, 288, 410, 420, 386, 1036, -6, 1036, 62, 1747, 
-  1036, 1036, -97, -97, -97, -97, -97, -97, -97, -97, 
-  -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, 
-  -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, 
-  -97, -97, -97, -97, -97, -97, 112, 1036, -97, -97, 
-  18, -38, -97, 1036, -97, -97, 1036, -97, -97, -97, 
-  -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, 
-  1036, -47, 1036, 1036, 35, 34, 1036, -97, 1747, 1036, 
-  1036, -97, 118, -97, -46, -97, -97, 60, -97, 295, 
-  89, 50, -97, 298, -97, 38, 2119, -97, -97, -97, 
-  -97, -97, 205, -97, -97, 14, -97, -97, -97, -97, 
-  -97, -97, 2119, -97, -97, 346, -97, 512, 83, 2026, 
-  30, 280, 100, 70, 2305, 93, 1036, -97, 80, 66, 
-  1036, 65, -97, 59, 67, -97, -97, 276, -97, -97, 
-  -97, -97, -97, -97, 79, -97, -97, -97, -97, 87, 
-  -97, -97, -97, -97, -97, -97, 44, 48, 1036, 106, 
-  76, -97, -97, 1212, -97, 77, 42, -9, -97, 331, 
-  69, 32, 523, 78, 131, 444, 288, 292, 1036, 277, 
-  1036, 1036, 1036, 1036, 444, 1036, 1036, 1036, 1036, 1036, 
-  288, 288, 288, 288, 288, 349, 355, 359, 1036, -12, 
-  1036, 82, 1036, -97, 606, 1036, -97, 1036, 64, 31, 
-  1036, 16, 2026, -97, 1036, 122, 2026, -97, 1036, 57, 
-  1036, 1036, 84, 81, 1036, -97, 68, 135, 63, -97, 
-  -97, 1036, -97, 244, 1036, -97, -41, 1036, -42, 2026, 
-  -97, 1036, 151, 2026, -97, -17, 226, -37, -8, 2119, 
-  -28, -97, 2026, -97, 1036, 110, 2026, 5, 2026, -97, 
-  -5, -4, -55, -97, -97, 2026, -22, 424, 46, 421, 
-  99, 1036, 2026, 40, 20, 369, 52, 26, 768, 47, 
-  41, -97, 1126, -97, 27, 2, 23, 1036, 22, 6, 
-  1036, 127, 1036, 9, 7, 1036, -97, 1933, 28, -97, 
-  -97, -97, -97, -97, -97, 1036, -97, -97, -97, -97, 
-  204, -97, 1036, -3, -97, 2026, -97, 85, -97, -97, 
-  2026, -97, 1036, 103, -25, -97, 37, -97, 37, 98, 
-  1036, -97, 37, -2, -97, 13, -97, 2026, -97, 108, 
-  2026, -97, 189, -97, -97, 130, 2026, 12, -97, 25, 
-  11, -97, 273, -10, 19, -97, -97, -97, -97, 1036, 
-  216, 2026, -97, 1036, 147, 2026, -97, -1, -97, 154, 
-  -97, -97, 1036, -97, -97, 240, -97, -97, -97, 119, 
-  1387, -97, -97, 1654, -97, -97, 1565, -97, -97, -97, 
-  -97, -97, -97, 134, -97, -97, -97, -97, -97, -97, 
-  -97, -97, -97, 776, -97, 223, -11, 663, -97, -97, 
-  120, 776, 176, 163, -97, 117, -97, 90, -97, -97, 
-  303, -97, -97, 61, -97, -97, -97, 97, -97, 58, 
-  -97, 863, -97, -97, 43, 157, -97, 51, 36, -97, 
-  -97, 950, 125, -97, 158, -97, -97, -97, -26, 164, 
-  -97, 1036, -97, 156, -97, -97, 45, 191, -97, 1036, 
-  -97, 180, -97, -97, 160, 53, 74, 1036, 187, -97, 
-  -97, 166, -97, 170, -97, 56, 15, 233, 161, 268, 
-  -97, 95, -97, -97, -97, -97, -97, 1298, -97, -97, 
-  -97, -97, 283, 2212, 1476, 71, 397, 94, 437, 115, 
-  1036, 2026, 92, -19, 364, 8, -24, 691, 21, 17, 
-  -97, 1126, -97, 4, -30, 0, 1036, 39, 3, 1036, 
-  33, 1036, -23, 24, 370, 111, -97, 584, -97, -97, 
-  -97, -97, 
+  251, 1237, 2238, 974, -45, 51, 122, -98, 52, -11, 
+  -39, 182, -98, 389, 36, -98, -98, 628, 58, 75, 
+  246, 228, -98, -98, -98, 438, 309, 1237, -98, -98, 
+  -98, 348, -98, 2050, 1772, 1237, 1237, 1237, -98, 800, 
+  1237, -98, -98, 1237, 1237, -98, -98, -98, -98, -98, 
+  1237, -98, 1237, 1237, -98, 1237, 1237, 97, 226, -98, 
+  -98, 1237, 1237, 1237, -98, -98, -98, 200, 1237, 389, 
+  1237, 1237, 1237, 1237, 418, 1237, 1237, 1237, 1237, 1237, 
+  1237, 212, 1237, 1237, 1237, 144, 121, 71, 309, 309, 
+  164, 156, 179, 448, 428, 408, 1237, -51, 1237, 101, 
+  1956, 1237, 1237, -98, -98, -98, -98, -98, -98, -98, 
+  -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, 
+  -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, 
+  -98, -98, -98, -98, -98, -98, -98, 236, 1237, -98, 
+  -98, 31, 16, -98, 1237, -98, -98, 1237, -98, -98, 
+  -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, 
+  -98, 1237, 2, 1237, 1237, 41, 35, 1237, -98, 1956, 
+  1237, 1237, -98, 102, -98, 6, -98, -98, 20, -98, 
+  299, 53, 14, -98, 321, -98, -22, 2332, -98, -98, 
+  -98, -98, -98, 216, -98, -98, -28, -98, -98, -98, 
+  -98, -98, -98, 2332, -98, -98, 469, -98, 533, 115, 
+  2238, -2, 335, -3, -36, 2520, 50, 1237, -98, 64, 
+  33, 1237, 21, -98, 5, -14, -98, -98, 306, -98, 
+  -98, -98, -98, -98, -98, 74, -98, -98, -98, -98, 
+  117, -98, -98, -98, -98, -98, -98, -57, -18, 1237, 
+  140, 109, -98, -98, 1324, -98, 104, 67, 27, -98, 
+  330, 84, 29, 585, 80, 92, 464, 171, 295, 1237, 
+  314, 1237, 1237, 1237, 1237, 346, 1237, 1237, 1237, 1237, 
+  1237, 309, 309, 309, 309, 309, 386, 464, 464, 1237, 
+  27, 1237, 87, 1237, -98, 529, 1237, -98, 1237, 83, 
+  38, 1237, 48, 2238, -98, 1237, 143, 2238, -98, 1237, 
+  30, 1237, 1237, 81, 77, 1237, -98, 56, 126, 90, 
+  -98, -98, 1237, -98, 290, 1237, -98, 42, 1237, 44, 
+  2238, -98, 1237, 133, 2238, -98, 22, 285, -37, -9, 
+  2332, -30, -98, 2238, -98, 1237, 141, 2238, 10, 2238, 
+  -98, 26, 24, -24, -98, -98, 2238, 25, 453, 23, 
+  533, 106, 1237, 2238, 9, -29, 361, -4, -31, 800, 
+  -6, 55, -98, 1415, -98, -1, -23, 8, 1237, 7, 
+  -21, 1237, 1, 1237, -27, -19, 1237, -98, 2144, 28, 
+  -98, -98, -98, -98, -98, -98, 1237, -98, -98, -98, 
+  -98, 211, -98, 1237, 17, -98, 2238, -98, 98, -98, 
+  -98, 2238, -98, 1237, 105, 37, -98, 63, -98, 62, 
+  99, 1237, -98, 60, 57, -98, 4, -98, 2238, -98, 
+  116, 2238, -98, 180, -98, -98, 112, 2238, 18, -98, 
+  11, 13, -98, 325, 3, 19, -98, -98, -98, -98, 
+  1237, 132, 2238, -98, 1237, 139, 2238, -98, 32, -98, 
+  174, -98, -98, 1237, -98, -98, 229, -98, -98, -98, 
+  108, 1682, -98, -98, 1862, -98, -98, 1505, -98, -98, 
+  -98, -98, -98, -98, 125, -98, -98, -98, -98, -98, 
+  -98, -98, -98, -98, 111, 46, 792, 184, 34, 85, 
+  -98, -98, 136, -98, 185, -98, -98, -98, 65, 204, 
+  -98, 1237, -98, 207, -98, -98, 193, 61, 43, 225, 
+  73, 88, 66, -98, -98, 214, -98, 1237, -98, 158, 
+  -98, -98, 181, 91, 72, 1237, 172, -98, -98, 187, 
+  -98, 157, -98, 47, -50, 274, 178, 250, -98, 113, 
+  -98, -98, -98, 1592, 1062, -98, -98, -98, -98, -98, 
+  271, 2426, 1772, 15, 461, 146, 445, 76, 1237, 2238, 
+  -5, 0, 370, 12, -15, 706, 89, 78, -98, 1415, 
+  -98, 100, 59, 82, 1237, 86, 54, 1237, 79, 1237, 
+  45, 39, 279, 149, -98, 68, 617, -98, -98, -98, 
+  -98, -98, 1150, -98, -98, -98, 886, -98, 240, -61, 
+  714, -98, -98, 129, 259, -98, 190, -98, 69, -98, 
+  -98, 255, -98, -98, 94, -98, -98, -98, -98, -98, 
+  -98, 
 
-  -105, 8, 11, -105, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, -105, -105, -105, -50, -105, -105, -105, 
-  -105, -105, -105, -105, -105, -105, 104, -105, -105, -105, 
-  35, -105, -105, -4, 34, 85, 75, -105, 164, 167, 
-  -105, -105, 171, 170, -105, -105, -105, -105, -105, 160, 
-  -105, 166, 163, -105, 154, 177, -105, -105, -105, -105, 
-  174, 108, 116, -105, -105, -105, -105, 122, -105, 121, 
-  114, 109, 111, -105, 123, 124, 143, 147, 153, 151, 
-  -105, 146, 138, 131, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, -105, -105, 137, -105, 126, -105, 90, 
-  52, 41, -105, -105, -105, -105, -105, -105, -105, -105, 
+  -105, 23, 25, 216, -105, -105, -105, -105, -105, -105, 
+  -105, -105, -105, -105, -105, -105, -105, -44, -105, -105, 
+  -105, -105, -105, -105, -105, -105, -105, 70, -105, -105, 
+  -105, 28, -105, -105, 20, 39, 97, 163, -105, 178, 
+  159, -105, -105, 156, 164, -105, -105, -105, -105, -105, 
+  132, -105, 153, 135, -105, 139, 140, -105, -105, -105, 
+  -105, 103, 92, 144, -105, -105, -105, -105, 125, -105, 
+  154, 162, 83, 84, -105, 88, 82, 81, 75, 66, 
+  122, -105, 116, 98, 104, -105, -105, -105, -105, -105, 
+  -105, -105, -105, -105, -105, -105, 106, -105, 113, -105, 
+  86, 80, 52, -105, -105, -105, -105, -105, -105, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, -105, -105, -105, -105, 58, -105, -105, 
-  -105, -105, -105, 59, -105, -105, 38, -105, -105, -105, 
+  -105, -105, -105, -105, -105, -105, -105, -105, 34, -105, 
+  -105, -105, -105, -105, 38, -105, -105, 43, -105, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  175, -105, 139, -26, -105, -105, 37, -105, 227, 29, 
-  76, -105, -105, -105, -105, -105, -105, -105, -105, -10, 
-  -105, -105, -105, 30, -105, -105, 4, -105, -105, -105, 
+  -105, 136, -105, 91, -29, -105, -105, 3, -105, 225, 
+  37, 71, -105, -105, -105, -105, -105, -105, -105, -105, 
+  -3, -105, -105, -105, 18, -105, -105, 27, -105, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, -105, 83, -105, -105, 39, -105, 54, -105, 60, 
-  -105, 49, -105, -105, -105, -105, 46, -105, -105, -105, 
-  65, 68, -105, -105, -105, -105, -105, 9, -105, -105, 
+  -105, -105, -105, 87, -105, -105, 62, -105, 56, -105, 
+  50, -105, 31, -105, -105, -105, -105, 59, -105, -105, 
+  -105, 47, 69, -105, -105, -105, -105, -105, 67, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, -105, -105, -105, -105, -105, 24, -105, 
-  -105, -105, -105, 107, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, -105, -105, -105, -105, 21, 223, -105, 
-  219, 211, 230, 234, -105, 96, 93, 74, 95, 97, 
-  -105, -105, -105, -105, -105, -105, -105, -105, 179, -105, 
-  183, -105, 195, -105, -105, 209, -105, 184, -105, -105, 
-  101, -105, 7, -105, 16, -105, 15, -105, 191, -105, 
-  193, 185, -105, -105, 182, -105, -105, -105, -105, -105, 
-  -105, 233, -105, 91, 203, -105, -105, 198, -105, 62, 
-  -105, 57, -105, 173, -105, -105, 86, -105, -105, 84, 
-  -105, -105, 56, -105, 45, -105, 55, -105, 80, -105, 
-  -105, -105, -105, -105, -105, 77, -105, 12, -105, 63, 
-  -105, 82, 61, -105, -105, 47, -105, -105, 102, -105, 
-  -105, -105, 13, -105, -105, -105, -105, 36, -105, 22, 
-  71, -105, 92, -105, -105, -33, -105, -24, -105, -105, 
-  -105, -105, -105, -105, -105, -19, -105, -105, -105, -105, 
-  -105, -105, 73, -105, -105, 3, -105, -105, -105, -105, 
-  70, -105, 42, -105, -105, -105, -105, -105, -58, -105, 
-  64, -105, -56, -105, -105, -105, -105, -45, -105, -105, 
-  -41, -105, -105, -105, -105, -105, -105, -31, -105, -105, 
-  50, -105, 66, -105, 69, -105, -105, -105, -105, 81, 
-  -105, 44, -105, 53, -105, 51, -105, -105, -105, -105, 
-  -105, -105, 48, -105, -105, 78, -105, -105, -105, -105, 
-  40, -105, -105, 249, -105, -105, 43, -105, -105, -105, 
+  -105, -105, -105, -105, -105, -105, -105, -105, -105, 30, 
+  -105, -105, -105, -105, 96, -105, -105, -105, -105, -105, 
+  -105, -105, -105, -105, -105, -105, -105, -105, 10, 184, 
+  -105, 222, 226, 232, 202, -105, 124, 114, 112, 110, 
+  95, -105, -105, -105, -105, -105, -105, -105, -105, 212, 
+  -105, 192, -105, 177, -105, -105, 208, -105, 107, -105, 
+  -105, 255, -105, 11, -105, 13, -105, 44, -105, 206, 
+  -105, 169, 176, -105, -105, 183, -105, -105, -105, -105, 
+  -105, -105, 173, -105, 167, 117, -105, -105, 191, -105, 
+  54, -105, 55, -105, 58, -105, -105, 102, -105, -105, 
+  89, -105, -105, 57, -105, 46, -105, 45, -105, 49, 
+  -105, -105, -105, -105, -105, -105, 77, -105, 64, -105, 
+  51, -105, 109, 61, -105, -105, 48, -105, -105, 152, 
+  -105, -105, -105, 79, -105, -105, -105, -105, 4, -105, 
+  -16, 153, -105, 74, -105, -105, -11, -105, 0, -105, 
+  -105, -105, -105, -105, -105, -105, -5, -105, -105, -105, 
+  -105, -105, -105, 68, -105, -105, 41, -105, -105, -105, 
+  -105, 90, -105, -1, -105, -105, -105, -105, -105, -93, 
+  -105, 32, -105, -4, -105, -105, -105, -105, -22, -105, 
+  -105, -14, -105, -105, -105, -105, -105, -105, -26, -105, 
+  -105, -2, -105, 60, -105, 53, -105, -105, -105, -105, 
+  65, -105, 76, -105, 78, -105, 72, -105, -105, -105, 
+  -105, -105, -105, 21, -105, -105, 85, -105, -105, -105, 
+  -105, 22, -105, -105, 180, -105, -105, 33, -105, -105, 
   -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, -105, -105, 67, -105, -105, 72, 110, -105, -105, 
-  -105, 2, -105, 6, -105, -105, -105, -105, -105, -105, 
-  10, -105, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, 344, -105, -105, -105, -105, -105, -105, -105, -105, 
-  -105, 274, -105, -105, -22, -105, -105, -105, -105, -105, 
-  -105, 1, -105, -105, -105, -105, -105, -105, -105, 5, 
-  -105, -105, -105, -105, -20, -105, -105, 17, -105, -105, 
-  -105, -105, -105, 31, -105, -105, -105, 28, 27, 32, 
-  -105, -105, -105, -105, -105, -105, -105, 284, -105, -105, 
-  -105, -105, -105, -105, 210, 26, 14, -105, 18, -105, 
-  88, 23, -105, -105, 19, -105, -105, 79, -105, -105, 
-  -105, 25, -105, -105, -105, -105, 20, -105, 33, 103, 
-  -105, 89, -105, -105, -105, -105, -105, 87, -105, -105, 
-  -105, -105};
+  -105, -105, -105, -105, -105, -105, 73, -105, -105, -105, 
+  -105, -105, -105, -105, 63, -105, -105, -105, -105, -105, 
+  -105, 12, -105, -105, -105, -105, -105, -105, -105, -12, 
+  -105, -105, -105, -105, -105, -105, -105, 6, -105, -105, 
+  -105, -105, -15, -105, -105, 9, -105, -105, -105, -105, 
+  -105, -9, -105, -105, -105, -7, -18, -13, -105, -105, 
+  -105, -105, -105, 277, 266, -105, -105, -105, -105, -105, 
+  -105, -105, 269, 2, 26, -105, 24, -105, 170, 16, 
+  -105, -105, 19, -105, -105, 182, -105, -105, -105, 35, 
+  -105, -105, -105, -105, 42, -105, 29, 153, -105, 128, 
+  -105, -105, -105, -105, -105, -105, 349, -105, -105, -105, 
+  -105, -105, 274, -105, -105, -105, 14, -105, -105, 15, 
+  218, -105, -105, -105, 7, -105, -105, -105, -105, -105, 
+  -105, 17, -105, -105, -105, -105, -105, -105, -105, -105, 
+  -105};
 
 const int QmlJSGrammar::action_info [] = {
-  397, 95, 385, 539, 387, 427, 412, -114, 416, 137, 
-  97, -92, 344, 449, 175, -89, 462, 253, 329, 336, 
-  327, 348, 145, 338, -93, 339, 143, 341, -111, -116, 
-  -114, 160, 440, 399, -92, 395, 436, 160, 412, 436, 
-  -119, 166, 420, 453, 436, 449, -116, -103, -93, 621, 
-  444, 493, 436, -122, -111, 67, 253, 404, 95, -89, 
-  453, 442, 344, 67, 568, 561, 253, 290, 426, 232, 
-  290, 186, 137, 97, 547, 571, 302, 292, 268, 493, 
-  308, 557, 556, 268, 248, 321, 308, 410, 314, 0, 
-  288, 521, 300, 297, 331, 449, 179, 183, 436, -103, 
-  405, -122, 412, 453, 521, 288, 344, 342, 423, 534, 
-  185, 137, 168, 54, 137, 430, 137, 554, 137, 617, 
-  137, 247, 515, 514, 55, 162, 137, 473, 58, 163, 
-  137, 169, 577, 0, -119, 168, 439, 252, 251, 59, 
-  238, 237, 137, 323, 245, 244, 409, 408, 243, 242, 
-  440, 509, 508, 424, 169, 137, 573, 572, 521, 137, 
-  245, 244, 465, 414, 137, 0, 250, 618, 138, 54, 
-  346, 541, 54, 54, 173, 474, 245, 244, 512, 511, 
-  55, 310, 306, 55, 55, 311, 535, 535, 137, 535, 
-  535, 168, 31, 0, 484, 137, 324, 137, 549, 535, 
-  0, 0, 563, 0, 0, 0, 0, 455, 510, 60, 
-  169, 333, 402, 137, 60, 466, 464, 545, 544, 168, 
-  3, 2, 1, 60, 137, 542, 540, 564, 562, 44, 
-  46, 45, 537, 537, 0, 537, 537, 0, 169, 0, 
-  402, 553, 552, 536, 536, 537, 536, 536, 560, 559, 
-  434, 433, 550, 548, 61, 31, 536, 0, 99, 61, 
-  62, 168, 31, 69, 70, 62, 231, 230, 61, 31, 
-  505, 0, 0, 31, 62, 0, 451, 100, 0, 101, 
-  169, 0, 170, 0, 506, 504, 0, 0, 0, 0, 
-  71, 72, 44, 46, 45, 270, 271, 31, 168, 44, 
-  46, 45, 31, 69, 70, 31, 44, 46, 45, 31, 
-  44, 46, 45, 81, 503, 82, -80, 169, 31, 170, 
-  0, 31, 272, 273, 31, 0, 83, 31, 0, 0, 
-  71, 72, 31, 0, 44, 46, 45, 0, 0, 44, 
-  46, 45, 44, 46, 45, 0, 44, 46, 45, 270, 
-  271, 0, 0, 0, 0, 44, 46, 45, 44, 46, 
-  45, 44, 46, 45, 44, 46, 45, 0, 0, 44, 
-  46, 45, 275, 276, 0, 31, 272, 273, 275, 276, 
-  0, 277, 275, 276, 278, 168, 279, 277, 0, 0, 
-  278, 277, 279, 31, 278, 0, 279, 0, 31, 0, 
-  -333, 0, 0, -80, 169, -333, 170, 236, 235, 74, 
-  75, 0, 44, 46, 45, 0, 0, 76, 77, 0, 
-  0, 78, 0, 79, 0, 0, 31, 0, 0, 0, 
-  44, 46, 45, 74, 75, 44, 46, 45, 0, 0, 
-  0, 76, 77, 74, 75, 78, 0, 79, 0, 0, 
-  31, 76, 77, 31, 0, 78, 0, 79, 236, 235, 
-  0, 74, 75, 44, 46, 45, 31, 275, 276, 76, 
-  77, 0, 0, 78, 0, 79, 277, 0, 0, 278, 
-  0, 279, 241, 240, 0, 236, 235, 44, 46, 45, 
-  44, 46, 45, 0, 0, 0, 0, 0, 241, 240, 
-  74, 75, 0, 44, 46, 45, 147, 0, 76, 77, 
-  0, 0, 78, 0, 79, 0, 148, 0, 0, 0, 
-  149, 0, 0, 0, 0, 0, 147, 0, 0, 150, 
-  0, 151, 0, 0, 0, 0, 148, 0, 0, 0, 
-  149, 31, 152, 0, 153, 58, 0, 0, 0, 150, 
-  0, 151, 154, 0, 304, 155, 59, 0, 0, 0, 
-  0, 156, 152, 0, 153, 58, 0, 157, 0, 0, 
-  0, 0, 154, 241, 240, 155, 59, 0, 44, 46, 
-  45, 156, 0, 158, 0, 0, 0, 157, 0, 0, 
-  0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 
-  0, 0, 0, 158, 0, 0, 30, 0, 0, 147, 
-  0, 0, 0, 31, 0, 0, 0, 32, 33, 148, 
-  34, 0, 0, 149, 0, 0, 0, 501, 0, 0, 
-  0, 41, 150, 0, 151, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 152, 0, 153, 58, 47, 
-  44, 46, 45, 0, 48, 154, 0, 0, 155, 59, 
-  0, 0, 0, 0, 156, 40, 50, 29, 0, 0, 
-  157, 37, 0, 0, 0, 27, 28, 0, 0, 0, 
-  0, 0, 0, 0, 0, 30, 158, 0, 0, 0, 
-  0, 0, 31, 0, 0, 0, 32, 33, 0, 34, 
-  0, 0, 0, 27, 28, 0, 501, 0, 0, 0, 
-  41, 0, 0, 30, 0, 0, 0, 0, 0, 0, 
-  31, 0, 0, 0, 32, 33, 0, 34, 47, 44, 
-  46, 45, 0, 48, 38, 0, 0, 0, 41, 0, 
-  0, 0, 0, 0, 40, 50, 29, 0, 0, 0, 
-  37, 0, 0, 0, 0, 0, 47, 44, 46, 45, 
-  0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 40, 50, 29, 0, 0, 0, 37, 0, 
-  27, 28, 0, 0, 0, 0, 0, 0, 27, 28, 
-  30, 0, 0, 0, 0, 0, 0, 31, 30, 0, 
-  0, 32, 33, 0, 34, 31, 0, 0, 0, 32, 
-  33, 38, 34, 0, 0, 41, 0, 0, 0, 501, 
-  0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 47, 44, 46, 45, 0, 48, 0, 
-  0, 47, 44, 46, 45, 0, 48, 0, 0, 40, 
-  50, 29, 0, 0, 0, 37, 0, 40, 50, 29, 
-  0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 524, 0, 27, 28, 0, 0, 0, 
-  0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 
-  0, 0, 31, 0, 0, 0, 32, 33, 0, 34, 
-  0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 
-  41, 0, 0, 0, 0, 0, 0, 0, 526, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0, 47, 525, 
-  528, 527, 0, 48, 0, 0, 0, 0, 222, 0, 
-  0, 0, 0, 0, 40, 50, 29, 206, 0, 0, 
-  37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  524, 0, 27, 28, 0, 0, 0, 0, 0, 0, 
-  0, 0, 211, 0, 0, 0, 0, 0, 0, 31, 
-  0, 0, 0, 32, 33, 0, 34, 0, 0, 0, 
-  0, 0, 0, 501, 0, 0, 0, 41, 0, 0, 
-  0, 0, 0, 0, 0, 575, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 47, 525, 528, 527, 0, 
-  48, 0, 0, 0, 0, 222, 0, 0, 0, 0, 
-  0, 40, 50, 29, 206, 0, 0, 37, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 
-  0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 
-  0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 
-  33, 0, 34, 0, 0, 0, 35, 0, 36, 38, 
-  39, 0, 0, 41, 0, 0, 0, 42, 0, 43, 
+  345, -114, -106, -92, 343, 345, -95, 254, -122, 450, 
+  549, 187, 437, 413, -119, -117, -106, 454, 249, -92, 
+  248, 345, 454, 339, 340, 342, 349, 233, 98, 606, 
+  -125, 398, 388, 386, 254, 396, 254, 96, 441, 144, 
+  98, 450, 167, 161, 138, 606, 437, 443, 554, 463, 
+  96, 630, 437, 68, 437, 546, 180, 406, 337, 427, 
+  161, 184, -96, 445, 428, 421, 176, 421, 421, 413, 
+  417, 411, 525, 322, 186, 454, 146, 405, 289, 535, 
+  400, 450, 309, 309, 315, -96, -122, 437, 269, -117, 
+  298, 138, 293, -119, 509, 413, -114, 521, 519, 301, 
+  532, 554, 68, 328, 330, 269, 291, -95, 303, 424, 
+  138, 55, 504, 138, 539, 289, 474, 522, 440, 0, 
+  534, 332, 56, 431, 138, 163, 169, 524, 523, 164, 
+  620, 619, 441, 138, 324, 239, 238, 246, 245, 59, 
+  138, 138, 311, 553, 169, 170, 312, 138, 138, 138, 
+  60, 138, 0, -125, 425, 626, 625, 596, 174, 410, 
+  409, 55, 55, 170, 475, 415, 138, 246, 245, 554, 
+  253, 252, 56, 56, 551, 550, 246, 245, 244, 243, 
+  138, 82, 466, 83, 55, 485, 505, 325, 138, 82, 
+  0, 83, 452, 334, 84, 56, 82, 100, 83, 456, 
+  251, 347, 84, 307, 82, 597, 83, 505, 169, 84, 
+  505, 511, 61, 517, 505, 138, 101, 84, 102, 531, 
+  530, 527, 0, 541, 138, 0, 169, 170, 0, 403, 
+  0, 0, 507, 538, 537, 467, 465, 82, 61, 83, 
+  61, 435, 434, 506, 138, 170, 0, 403, 542, 540, 
+  84, 623, 622, 507, 505, 0, 507, 62, 32, 507, 
+  507, 169, 0, 63, 506, 512, 510, 506, 515, 514, 
+  506, 506, 0, 0, 0, 528, 526, 232, 231, 32, 
+  170, 621, 171, 62, 32, 62, 169, 616, 32, 63, 
+  0, 63, 139, 0, 169, 45, 47, 46, 0, 0, 
+  507, 617, 615, 32, -83, 170, 0, 171, 0, 0, 
+  0, 506, -83, 170, 32, 171, 45, 47, 46, 32, 
+  0, 45, 47, 46, 32, 45, 47, 46, 32, 0, 
+  0, 614, 271, 272, 82, 32, 83, 0, 0, 0, 
+  45, 47, 46, 4, 3, 2, 1, 84, 271, 272, 
+  32, 45, 47, 46, 32, 0, 45, 47, 46, 273, 
+  274, 45, 47, 46, 32, 45, 47, 46, 0, 276, 
+  277, 0, 45, 47, 46, 273, 274, 32, 278, 0, 
+  0, 279, 0, 280, 0, 0, 0, 45, 47, 46, 
+  32, 45, 47, 46, 0, 0, 0, -336, 0, 32, 
+  0, 45, 47, 46, 0, 0, -336, 70, 71, 276, 
+  277, 0, 0, 0, 45, 47, 46, 0, 278, 0, 
+  0, 279, 0, 280, 0, 0, 0, 45, 47, 46, 
+  0, 75, 76, 0, 72, 73, 45, 47, 46, 77, 
+  78, 75, 76, 79, 0, 80, 0, 0, 0, 77, 
+  78, 75, 76, 79, 0, 80, 0, 0, 0, 77, 
+  78, 75, 76, 79, 0, 80, 0, 0, 0, 77, 
+  78, 75, 76, 79, 32, 80, 0, 0, 0, 77, 
+  78, 0, 32, 79, 0, 80, 0, 276, 277, 0, 
+  32, 0, 0, 0, 0, 0, 278, 0, 32, 279, 
+  0, 280, 0, 0, 0, 0, 242, 241, 0, 0, 
+  0, 45, 47, 46, 237, 236, 0, 0, 0, 45, 
+  47, 46, 237, 236, 0, 0, 0, 45, 47, 46, 
+  237, 236, 148, 0, 0, 45, 47, 46, 0, 0, 
+  0, 0, 149, 0, 0, 0, 150, 0, 0, 0, 
+  0, 0, 0, 0, 0, 151, 0, 152, 0, 0, 
+  0, 0, 32, 0, 0, 0, 0, 0, 153, 0, 
+  154, 59, 0, 0, 0, 0, 0, 0, 155, 0, 
+  0, 156, 60, 0, 0, 0, 0, 157, 148, 0, 
+  0, 0, 0, 158, 242, 241, 0, 0, 149, 45, 
+  47, 46, 150, 0, 0, 0, 0, 0, 0, 159, 
+  0, 151, 0, 152, 0, 0, 305, 0, 0, 0, 
+  0, 0, 0, 0, 153, 0, 154, 59, 0, 28, 
+  29, 148, 0, 0, 155, 0, 0, 156, 60, 31, 
+  0, 149, 0, 157, 0, 150, 32, 0, 0, 158, 
+  33, 34, 0, 35, 151, 0, 152, 0, 0, 0, 
+  496, 0, 0, 0, 42, 159, 0, 153, 0, 154, 
+  59, 0, 0, 0, 0, 0, 0, 155, 0, 0, 
+  156, 60, 48, 45, 47, 46, 157, 49, 0, 0, 
+  0, 0, 158, 0, 0, 0, 0, 0, 41, 51, 
+  30, 0, 0, 0, 38, 0, 0, 0, 159, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 
+  0, 0, 0, 0, 0, 0, 28, 29, 31, 0, 
+  0, 0, 0, 0, 0, 32, 31, 0, 0, 33, 
+  34, 0, 35, 32, 0, 0, 0, 33, 34, 39, 
+  35, 0, 0, 42, 0, 0, 0, 496, 0, 0, 
+  0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 48, 45, 47, 46, 0, 49, 0, 0, 48, 
+  45, 47, 46, 0, 49, 0, 0, 41, 51, 30, 
+  0, 0, 0, 38, 0, 41, 51, 30, 0, 0, 
+  0, 38, 0, 0, 28, 29, 0, 0, 0, 0, 
+  0, 0, 28, 29, 31, 0, 0, 0, 0, 0, 
+  0, 32, 31, 0, 0, 33, 34, 0, 35, 32, 
+  0, 0, 0, 33, 34, 496, 35, 0, 0, 42, 
+  0, 0, 0, 39, 0, 0, 0, 42, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 48, 45, 47, 
+  46, 0, 49, 0, 0, 48, 45, 47, 46, 0, 
+  49, 0, 0, 41, 51, 30, 0, 0, 0, 38, 
+  0, 41, 51, 30, 0, 0, 0, 38, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 
+  0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 
+  0, 0, 0, 0, 0, 32, 0, 0, 0, 33, 
+  34, 0, 35, 0, 0, 0, 0, 0, 0, 496, 
+  0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 47, 44, 46, 45, 0, 48, 0, 49, 0, 
-  51, 0, 52, 0, 0, 0, 0, 40, 50, 29, 
-  0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, -112, 0, 0, 0, 26, 27, 28, 
-  0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 
-  0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 
-  33, 0, 34, 0, 0, 0, 35, 0, 36, 38, 
-  39, 0, 0, 41, 0, 0, 0, 42, 0, 43, 
+  0, 48, 45, 47, 46, 0, 49, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 41, 51, 30, 
+  0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 495, 0, 28, 29, 0, 0, 
+  0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 
+  0, 0, 0, 32, 0, 0, 0, 33, 34, 0, 
+  35, 0, 0, 0, 0, 0, 0, 496, 0, 0, 
+  0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 
+  497, 499, 498, 0, 49, 0, 0, 0, 0, 223, 
+  0, 0, 0, 0, 0, 41, 51, 30, 207, 0, 
+  0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 495, 0, 28, 29, 0, 0, 0, 0, 
+  0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 
+  0, 32, 0, 0, 0, 33, 34, 0, 35, 0, 
+  0, 0, 0, 0, 0, 496, 0, 0, 0, 42, 
+  0, 0, 0, 0, 0, 0, 0, 600, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 48, 497, 499, 
+  498, 0, 49, 0, 0, 0, 0, 223, 0, 0, 
+  0, 0, 0, 41, 51, 30, 207, 0, 0, 38, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 47, 44, 46, 45, 0, 48, 0, 49, 0, 
-  51, 0, 52, 0, 0, 0, 0, 40, 50, 29, 
-  0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 26, 27, 28, 0, 0, 0, 0, 
-  0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 
-  0, 31, 0, 0, 0, 32, 33, 0, 34, 0, 
-  0, 0, 35, 0, 36, 38, 39, 0, 0, 41, 
-  0, 0, 0, 42, 0, 43, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 47, 44, 46, 
-  45, 0, 48, 0, 49, 0, 51, 267, 52, 0, 
-  0, 0, 0, 40, 50, 29, 0, 0, 0, 37, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 
-  27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 
-  30, 0, 0, 0, 0, 0, 0, 31, 213, 0, 
-  0, 583, 584, 0, 34, 0, 0, 0, 35, 0, 
-  36, 38, 39, 0, 0, 41, 0, 0, 0, 42, 
-  0, 43, 0, 0, 0, 0, 0, 0, 0, 217, 
-  0, 0, 0, 47, 44, 46, 45, 0, 48, 0, 
-  49, 0, 51, 0, 52, 0, 0, 0, 0, 40, 
-  50, 29, 0, 0, 0, 37, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 479, 0, 0, 26, 27, 
-  28, 0, 0, 0, 0, 0, 0, 0, 0, 30, 
+  495, 0, 28, 29, 0, 0, 0, 0, 0, 0, 
+  0, 0, 212, 0, 0, 0, 0, 0, 0, 32, 
+  0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 
+  0, 0, 0, 496, 0, 0, 0, 42, 0, 0, 
+  0, 0, 0, 0, 0, 603, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 48, 497, 499, 498, 0, 
+  49, 0, 0, 0, 0, 223, 0, 0, 0, 0, 
+  0, 41, 51, 30, 207, 0, 0, 38, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 
+  29, 0, 0, 0, 0, 0, 0, 0, 0, 31, 
+  0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 
+  33, 34, 0, 35, 0, 0, 0, 36, 0, 37, 
+  39, 40, 0, 0, 42, 0, 0, 0, 43, 0, 
+  44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 48, 45, 47, 46, 0, 49, 0, 50, 
+  0, 52, 0, 53, 0, 0, 0, 0, 41, 51, 
+  30, 0, 0, 0, 38, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 27, 28, 29, 0, 0, 
   0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 
-  32, 33, 0, 34, 0, 0, 0, 35, 0, 36, 
-  38, 39, 0, 0, 41, 0, 0, 0, 42, 0, 
-  43, 0, 0, 482, 0, 0, 0, 0, 0, 0, 
-  0, 0, 47, 44, 46, 45, 0, 48, 0, 49, 
-  0, 51, 0, 52, 0, 0, 0, 0, 40, 50, 
-  29, 0, 0, 0, 37, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 471, 0, 0, 26, 27, 28, 
-  0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 
-  0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 
-  33, 0, 34, 0, 0, 0, 35, 0, 36, 38, 
-  39, 0, 0, 41, 0, 0, 0, 42, 0, 43, 
-  0, 0, 472, 0, 0, 0, 0, 0, 0, 0, 
-  0, 47, 44, 46, 45, 0, 48, 0, 49, 0, 
-  51, 0, 52, 0, 0, 0, 0, 40, 50, 29, 
-  0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 479, 0, 0, 26, 27, 28, 0, 
-  0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 
-  0, 0, 0, 0, 31, 0, 0, 0, 32, 33, 
-  0, 34, 0, 0, 0, 35, 0, 36, 38, 39, 
-  0, 0, 41, 0, 0, 0, 42, 0, 43, 0, 
-  0, 480, 0, 0, 0, 0, 0, 0, 0, 0, 
-  47, 44, 46, 45, 0, 48, 0, 49, 0, 51, 
-  0, 52, 0, 0, 0, 0, 40, 50, 29, 0, 
-  0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 471, 0, 0, 26, 27, 28, 0, 0, 
-  0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 
-  0, 0, 0, 31, 0, 0, 0, 32, 33, 0, 
-  34, 0, 0, 0, 35, 0, 36, 38, 39, 0, 
-  0, 41, 0, 0, 0, 42, 0, 43, 0, 0, 
-  477, 0, 0, 0, 0, 0, 0, 0, 0, 47, 
-  44, 46, 45, 0, 48, 0, 49, 0, 51, 0, 
-  52, 0, 0, 0, 0, 40, 50, 29, 0, 0, 
-  0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 105, 106, 107, 0, 0, 109, 111, 112, 0, 
-  0, 113, 0, 114, 0, 0, 0, 116, 117, 118, 
-  0, 0, 0, 0, 0, 0, 31, 119, 120, 121, 
+  0, 0, 0, 32, 0, 0, 0, 33, 34, 0, 
+  35, 0, 0, 0, 36, 0, 37, 39, 40, 0, 
+  0, 42, 0, 0, 0, 43, 0, 44, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 
+  45, 47, 46, 0, 49, 0, 50, 0, 52, 268, 
+  53, 0, 0, 0, 0, 41, 51, 30, 0, 0, 
+  0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, -115, 0, 0, 0, 27, 28, 29, 0, 
+  0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 
+  0, 0, 0, 0, 32, 0, 0, 0, 33, 34, 
+  0, 35, 0, 0, 0, 36, 0, 37, 39, 40, 
+  0, 0, 42, 0, 0, 0, 43, 0, 44, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  48, 45, 47, 46, 0, 49, 0, 50, 0, 52, 
+  0, 53, 0, 0, 0, 0, 41, 51, 30, 0, 
+  0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 480, 0, 0, 27, 28, 29, 0, 
+  0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 
+  0, 0, 0, 0, 32, 0, 0, 0, 33, 34, 
+  0, 35, 0, 0, 0, 36, 0, 37, 39, 40, 
+  0, 0, 42, 0, 0, 0, 43, 0, 44, 0, 
+  0, 481, 0, 0, 0, 0, 0, 0, 0, 0, 
+  48, 45, 47, 46, 0, 49, 0, 50, 0, 52, 
+  0, 53, 0, 0, 0, 0, 41, 51, 30, 0, 
+  0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 27, 28, 29, 0, 0, 0, 0, 
+  0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 
+  0, 32, 214, 0, 0, 561, 562, 0, 35, 0, 
+  0, 0, 36, 0, 37, 39, 40, 0, 0, 42, 
+  0, 0, 0, 43, 0, 44, 0, 0, 0, 0, 
+  0, 0, 0, 218, 0, 0, 0, 48, 45, 47, 
+  46, 0, 49, 0, 50, 0, 52, 0, 53, 0, 
+  0, 0, 0, 41, 51, 30, 0, 0, 0, 38, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  480, 0, 0, 27, 28, 29, 0, 0, 0, 0, 
+  0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 
+  0, 32, 0, 0, 0, 33, 34, 0, 35, 0, 
+  0, 0, 36, 0, 37, 39, 40, 0, 0, 42, 
+  0, 0, 0, 43, 0, 44, 0, 0, 483, 0, 
+  0, 0, 0, 0, 0, 0, 0, 48, 45, 47, 
+  46, 0, 49, 0, 50, 0, 52, 0, 53, 0, 
+  0, 0, 0, 41, 51, 30, 0, 0, 0, 38, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  472, 0, 0, 27, 28, 29, 0, 0, 0, 0, 
+  0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 
+  0, 32, 0, 0, 0, 33, 34, 0, 35, 0, 
+  0, 0, 36, 0, 37, 39, 40, 0, 0, 42, 
+  0, 0, 0, 43, 0, 44, 0, 0, 473, 0, 
+  0, 0, 0, 0, 0, 0, 0, 48, 45, 47, 
+  46, 0, 49, 0, 50, 0, 52, 0, 53, 0, 
+  0, 0, 0, 41, 51, 30, 0, 0, 0, 38, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  472, 0, 0, 27, 28, 29, 0, 0, 0, 0, 
+  0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 
+  0, 32, 0, 0, 0, 33, 34, 0, 35, 0, 
+  0, 0, 36, 0, 37, 39, 40, 0, 0, 42, 
+  0, 0, 0, 43, 0, 44, 0, 0, 478, 0, 
+  0, 0, 0, 0, 0, 0, 0, 48, 45, 47, 
+  46, 0, 49, 0, 50, 0, 52, 0, 53, 0, 
+  0, 0, 0, 41, 51, 30, 0, 0, 0, 38, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  106, 107, 108, 0, 0, 110, 112, 113, 0, 0, 
+  114, 0, 115, 0, 0, 0, 117, 118, 119, 0, 
+  0, 0, 0, 0, 0, 32, 120, 121, 122, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 
-  0, 0, 0, 44, 46, 45, 126, 127, 128, 0, 
-  130, 131, 132, 133, 134, 135, 0, 0, 123, 129, 
-  115, 108, 110, 124, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 105, 106, 107, 0, 0, 109, 
-  111, 112, 0, 0, 113, 0, 114, 0, 0, 0, 
-  116, 117, 118, 0, 0, 0, 0, 0, 0, 389, 
-  119, 120, 121, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 122, 0, 0, 0, 390, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 
-  0, 0, 0, 0, 0, 394, 391, 393, 0, 126, 
-  127, 128, 0, 130, 131, 132, 133, 134, 135, 0, 
-  0, 123, 129, 115, 108, 110, 124, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 
-  0, 0, 109, 111, 112, 0, 0, 113, 0, 114, 
-  0, 0, 0, 116, 117, 118, 0, 0, 0, 0, 
-  0, 0, 389, 119, 120, 121, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 
-  390, 0, 0, 0, 0, 0, 0, 0, 392, 0, 
-  0, 0, 125, 0, 0, 0, 0, 0, 394, 391, 
-  393, 0, 126, 127, 128, 0, 130, 131, 132, 133, 
-  134, 135, 0, 0, 123, 129, 115, 108, 110, 124, 
+  0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 
+  0, 0, 45, 47, 46, 127, 128, 129, 0, 131, 
+  132, 133, 134, 135, 136, 0, 0, 124, 130, 116, 
+  109, 111, 125, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 106, 107, 108, 0, 0, 110, 
+  112, 113, 0, 0, 114, 0, 115, 0, 0, 0, 
+  117, 118, 119, 0, 0, 0, 0, 0, 0, 390, 
+  120, 121, 122, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 123, 0, 0, 0, 391, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 
+  0, 0, 0, 0, 0, 395, 392, 394, 0, 127, 
+  128, 129, 0, 131, 132, 133, 134, 135, 136, 0, 
+  0, 124, 130, 116, 109, 111, 125, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 106, 107, 
+  108, 0, 0, 110, 112, 113, 0, 0, 114, 0, 
+  115, 0, 0, 0, 117, 118, 119, 0, 0, 0, 
+  0, 0, 0, 390, 120, 121, 122, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 
+  0, 391, 0, 0, 0, 0, 0, 0, 0, 393, 
+  0, 0, 0, 126, 0, 0, 0, 0, 0, 395, 
+  392, 394, 0, 127, 128, 129, 0, 131, 132, 133, 
+  134, 135, 136, 0, 0, 124, 130, 116, 109, 111, 
+  125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 206, 0, 0, 0, 0, 208, 0, 27, 
+  28, 29, 210, 0, 0, 0, 0, 0, 0, 211, 
+  31, 0, 0, 0, 0, 0, 0, 213, 214, 0, 
+  0, 215, 34, 0, 35, 0, 0, 0, 36, 0, 
+  37, 39, 40, 0, 0, 42, 0, 0, 0, 43, 
+  0, 44, 0, 0, 0, 0, 0, 217, 0, 218, 
+  0, 0, 0, 48, 216, 219, 46, 220, 49, 221, 
+  50, 222, 52, 223, 53, 224, 225, 0, 0, 41, 
+  51, 30, 207, 209, 0, 38, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 
+  0, 208, 0, 27, 28, 29, 210, 0, 0, 0, 
+  0, 0, 0, 211, 212, 0, 0, 0, 0, 0, 
+  0, 213, 214, 0, 0, 215, 34, 0, 35, 0, 
+  0, 0, 36, 0, 37, 39, 40, 0, 0, 42, 
+  0, 0, 0, 43, 0, 44, 0, 0, 0, 0, 
+  0, 217, 0, 218, 0, 0, 0, 48, 216, 219, 
+  46, 220, 49, 221, 50, 222, 52, 223, 53, 224, 
+  225, 0, 0, 41, 51, 30, 207, 209, 0, 38, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  205, 0, 0, 0, 0, 207, 0, 26, 27, 28, 
-  209, 0, 0, 0, 0, 0, 0, 210, 30, 0, 
-  0, 0, 0, 0, 0, 212, 213, 0, 0, 214, 
-  33, 0, 34, 0, 0, 0, 35, 0, 36, 38, 
-  39, 0, 0, 41, 0, 0, 0, 42, 0, 43, 
-  0, 0, 0, 0, 0, 216, 0, 217, 0, 0, 
-  0, 47, 215, 218, 45, 219, 48, 220, 49, 221, 
-  51, 222, 52, 223, 224, 0, 0, 40, 50, 29, 
-  206, 208, 0, 37, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 205, 0, 0, 0, 0, 207, 0, 
-  26, 27, 28, 209, 0, 0, 0, 0, 0, 0, 
-  210, 211, 0, 0, 0, 0, 0, 0, 212, 213, 
-  0, 0, 214, 33, 0, 34, 0, 0, 0, 35, 
-  0, 36, 38, 39, 0, 0, 41, 0, 0, 0, 
-  42, 0, 43, 0, 0, 0, 0, 0, 216, 0, 
-  217, 0, 0, 0, 47, 215, 218, 45, 219, 48, 
-  220, 49, 221, 51, 222, 52, 223, 224, 0, 0, 
-  40, 50, 29, 206, 208, 0, 37, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 586, 106, 107, 0, 
-  0, 588, 111, 590, 27, 28, 591, 0, 114, 0, 
-  0, 0, 116, 593, 594, 0, 0, 0, 0, 0, 
-  0, 595, 596, 120, 121, 214, 33, 0, 34, 0, 
-  0, 0, 35, 0, 36, 597, 39, 0, 0, 599, 
-  0, 0, 0, 42, 0, 43, 0, 0, 0, 0, 
-  0, 601, 0, 217, 0, 0, 0, 603, 600, 602, 
-  45, 604, 605, 606, 49, 608, 609, 610, 611, 612, 
-  613, 0, 0, 598, 607, 592, 587, 589, 124, 37, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 
-  106, 107, 0, 0, 359, 111, 361, 27, 28, 362, 
-  0, 114, 0, 0, 0, 116, 364, 365, 0, 0, 
-  0, 0, 0, 0, 366, 367, 120, 121, 214, 33, 
-  0, 34, 0, 0, 0, 35, 0, 36, 368, 39, 
-  0, 0, 370, 0, 0, 0, 42, 0, 43, 0, 
-  -258, 0, 0, 0, 372, 0, 217, 0, 0, 0, 
-  374, 371, 373, 45, 375, 376, 377, 49, 379, 380, 
-  381, 382, 383, 384, 0, 0, 369, 378, 363, 358, 
-  360, 124, 37, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 
+  564, 107, 108, 0, 0, 566, 112, 568, 28, 29, 
+  569, 0, 115, 0, 0, 0, 117, 571, 572, 0, 
+  0, 0, 0, 0, 0, 573, 574, 121, 122, 215, 
+  34, 0, 35, 0, 0, 0, 36, 0, 37, 575, 
+  40, 0, 0, 577, 0, 0, 0, 43, 0, 44, 
+  0, 0, 0, 0, 0, 579, 0, 218, 0, 0, 
+  0, 581, 578, 580, 46, 582, 583, 584, 50, 586, 
+  587, 588, 589, 590, 591, 0, 0, 576, 585, 570, 
+  565, 567, 125, 38, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 358, 107, 108, 0, 0, 360, 
+  112, 362, 28, 29, 363, 0, 115, 0, 0, 0, 
+  117, 365, 366, 0, 0, 0, 0, 0, 0, 367, 
+  368, 121, 122, 215, 34, 0, 35, 0, 0, 0, 
+  36, 0, 37, 369, 40, 0, 0, 371, 0, 0, 
+  0, 43, 0, 44, 0, -261, 0, 0, 0, 373, 
+  0, 218, 0, 0, 0, 375, 372, 374, 46, 376, 
+  377, 378, 50, 380, 381, 382, 383, 384, 385, 0, 
+  0, 370, 379, 364, 359, 361, 125, 38, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 
 
-  386, 538, 182, 555, 543, 406, 203, 165, 551, 303, 
-  388, 13, 502, 491, 396, 146, 298, 307, 507, 305, 
-  558, 457, 513, 432, 234, 246, 234, 249, 298, 468, 
-  239, 178, 172, 316, 428, 425, 421, 483, 431, 432, 
-  574, 435, 184, 620, 570, 413, 452, 178, 345, 298, 
-  569, 234, 435, 456, 567, 136, 454, 347, 343, 178, 
-  332, 335, 246, 246, 330, 441, 239, 429, 432, 446, 
-  167, 159, 411, 481, 142, 239, 478, 500, 443, 398, 
-  516, 463, 349, 0, 450, 203, 203, 435, 445, 400, 
-  457, 139, 144, 0, 0, 0, 0, 517, 182, 0, 
-  619, 0, 102, 316, 298, 0, 142, 0, 0, 142, 
-  0, 403, 400, 56, 174, 447, 56, 56, 401, 486, 
-  517, 282, 0, 518, 56, 104, 176, 56, 0, 485, 
-  56, 56, 176, 448, 56, 56, 448, 56, 56, 56, 
-  281, 401, 283, 280, 284, 56, 56, 447, 176, 262, 
-  56, 56, 64, 56, 266, 0, 56, 93, 56, 94, 
-  65, 467, 92, 56, 56, 56, 56, 301, 56, 73, 
-  80, 87, 68, 56, 400, 334, 325, 86, 98, 56, 
-  56, 56, 340, 337, 85, 56, 233, 298, 56, 56, 
-  88, 96, 84, 56, 89, 56, 56, 164, 91, 57, 
-  90, 298, 56, 401, 490, 56, 298, 448, 56, 56, 
-  447, 487, 56, 56, 489, 488, 56, 56, 63, 56, 
-  614, 56, 66, 616, 294, 56, 266, 294, 0, 266, 
-  266, 161, 266, 56, 289, 56, 291, 294, 266, 102, 
-  266, 0, 266, 468, 0, 0, 315, 0, 309, 313, 
-  299, 294, 312, 56, 0, 0, 266, 0, 266, 293, 
-  285, 56, 104, 171, 328, 56, 266, 0, 274, 326, 
-  266, 0, 56, 296, 269, 294, 56, 266, 476, 286, 
-  266, 266, 475, 287, 517, 0, 0, 0, 0, 576, 
-  0, 0, 532, 0, 582, 0, 0, 322, 0, 0, 
-  523, 533, 585, 578, 579, 580, 581, 0, 0, 0, 
+  548, 422, 414, 436, 166, 547, 552, 433, 533, 529, 
+  183, 520, 536, 304, 545, 513, 306, 447, 247, 599, 
+  618, 147, 387, 317, 627, 613, 14, 492, 397, 204, 
+  624, 185, 179, 250, 389, 430, 168, 240, 299, 235, 
+  173, 179, 484, 407, 336, 433, 308, 348, 436, 346, 
+  433, 350, 247, 469, 464, 482, 331, 429, 333, 344, 
+  335, 179, 299, 247, 240, 432, 479, 140, 451, 240, 
+  442, 145, 446, 444, 457, 235, 160, 235, 453, 399, 
+  458, 455, 299, 137, 516, 143, 508, 426, 436, 204, 
+  0, 204, 412, 0, 0, 0, 0, 0, 458, 103, 
+  0, 143, 0, 0, 143, 0, 404, 0, 57, 175, 
+  299, 0, 57, 91, 177, 183, 57, 57, 449, 0, 
+  299, 105, 90, 57, 57, 57, 57, 0, 89, 88, 
+  57, 94, 95, 57, 57, 81, 65, 57, 263, 57, 
+  57, 486, 285, 267, 86, 57, 57, 64, 57, 165, 
+  87, 57, 57, 177, 57, 57, 57, 284, 57, 283, 
+  97, 282, 85, 401, 57, 99, 57, 57, 468, 92, 
+  57, 281, 449, 300, 57, 69, 491, 57, 57, 449, 
+  317, 57, 57, 327, 58, 67, 57, 341, 66, 401, 
+  234, 402, 162, 401, 299, 57, 57, 448, 57, 338, 
+  489, 57, 74, 488, 57, 57, 57, 487, 490, 477, 
+  93, 57, 57, 476, 177, 295, 267, 402, 295, 295, 
+  267, 402, 0, 267, 267, 295, 57, 494, 313, 494, 
+  267, 267, 628, 0, 57, 270, 595, 323, 103, 267, 
+  314, 294, 493, 503, 57, 292, 0, 316, 57, 267, 
+  295, 288, 326, 267, 57, 267, 0, 329, 299, 267, 
+  105, 172, 0, 310, 57, 0, 0, 290, 57, 267, 
+  601, 275, 297, 267, 57, 286, 0, 494, 604, 267, 
+  592, 287, 0, 594, 0, 494, 0, 595, 560, 0, 
+  0, 0, 493, 503, 0, 563, 556, 557, 558, 559, 
+  493, 503, 469, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 302, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 517, 0, 0, 0, 0, 0, 
-  0, 0, 532, 0, 0, 0, 0, 0, 0, 0, 
-  523, 533, 0, 0, 0, 0, 0, 0, 0, 0, 
+  494, 0, 0, 598, 0, 0, 0, 595, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0};
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0};
 
 const int QmlJSGrammar::action_check [] = {
-  55, 48, 7, 29, 8, 7, 36, 7, 33, 8, 
-  79, 7, 36, 36, 60, 7, 17, 36, 60, 36, 
-  61, 16, 60, 60, 7, 33, 8, 55, 7, 7, 
-  7, 2, 20, 55, 7, 7, 33, 2, 36, 33, 
-  7, 7, 5, 36, 33, 36, 7, 7, 7, 0, 
-  60, 90, 33, 7, 7, 1, 36, 60, 48, 7, 
-  36, 36, 36, 1, 8, 29, 36, 79, 55, 55, 
-  79, 33, 8, 79, 29, 60, 60, 8, 1, 90, 
-  2, 7, 29, 1, 36, 17, 2, 7, 7, -1, 
-  48, 33, 61, 61, 31, 36, 36, 8, 33, 7, 
-  7, 7, 36, 36, 33, 48, 36, 7, 10, 66, 
-  60, 8, 15, 40, 8, 7, 8, 66, 8, 8, 
-  8, 77, 61, 62, 51, 50, 8, 8, 42, 54, 
-  8, 34, 7, -1, 7, 15, 6, 61, 62, 53, 
-  61, 62, 8, 8, 61, 62, 61, 62, 61, 62, 
-  20, 61, 62, 55, 34, 8, 61, 62, 33, 8, 
-  61, 62, 8, 60, 8, -1, 60, 56, 56, 40, 
-  60, 7, 40, 40, 56, 56, 61, 62, 61, 62, 
-  51, 50, 60, 51, 51, 54, 29, 29, 8, 29, 
-  29, 15, 29, -1, 60, 8, 61, 8, 7, 29, 
-  -1, -1, 36, -1, -1, -1, -1, 60, 91, 12, 
-  34, 60, 36, 8, 12, 61, 62, 61, 62, 15, 
-  92, 93, 94, 12, 8, 61, 62, 61, 62, 66, 
-  67, 68, 75, 75, -1, 75, 75, -1, 34, -1, 
-  36, 61, 62, 86, 86, 75, 86, 86, 61, 62, 
-  61, 62, 61, 62, 57, 29, 86, -1, 15, 57, 
-  63, 15, 29, 18, 19, 63, 61, 62, 57, 29, 
-  47, -1, -1, 29, 63, -1, 60, 34, -1, 36, 
-  34, -1, 36, -1, 61, 62, -1, -1, -1, -1, 
-  45, 46, 66, 67, 68, 18, 19, 29, 15, 66, 
-  67, 68, 29, 18, 19, 29, 66, 67, 68, 29, 
-  66, 67, 68, 25, 91, 27, 33, 34, 29, 36, 
-  -1, 29, 45, 46, 29, -1, 38, 29, -1, -1, 
-  45, 46, 29, -1, 66, 67, 68, -1, -1, 66, 
-  67, 68, 66, 67, 68, -1, 66, 67, 68, 18, 
-  19, -1, -1, -1, -1, 66, 67, 68, 66, 67, 
-  68, 66, 67, 68, 66, 67, 68, -1, -1, 66, 
-  67, 68, 23, 24, -1, 29, 45, 46, 23, 24, 
-  -1, 32, 23, 24, 35, 15, 37, 32, -1, -1, 
-  35, 32, 37, 29, 35, -1, 37, -1, 29, -1, 
-  36, -1, -1, 33, 34, 36, 36, 61, 62, 23, 
-  24, -1, 66, 67, 68, -1, -1, 31, 32, -1, 
-  -1, 35, -1, 37, -1, -1, 29, -1, -1, -1, 
-  66, 67, 68, 23, 24, 66, 67, 68, -1, -1, 
-  -1, 31, 32, 23, 24, 35, -1, 37, -1, -1, 
-  29, 31, 32, 29, -1, 35, -1, 37, 61, 62, 
-  -1, 23, 24, 66, 67, 68, 29, 23, 24, 31, 
-  32, -1, -1, 35, -1, 37, 32, -1, -1, 35, 
-  -1, 37, 61, 62, -1, 61, 62, 66, 67, 68, 
-  66, 67, 68, -1, -1, -1, -1, -1, 61, 62, 
-  23, 24, -1, 66, 67, 68, 3, -1, 31, 32, 
-  -1, -1, 35, -1, 37, -1, 13, -1, -1, -1, 
-  17, -1, -1, -1, -1, -1, 3, -1, -1, 26, 
-  -1, 28, -1, -1, -1, -1, 13, -1, -1, -1, 
-  17, 29, 39, -1, 41, 42, -1, -1, -1, 26, 
-  -1, 28, 49, -1, 31, 52, 53, -1, -1, -1, 
-  -1, 58, 39, -1, 41, 42, -1, 64, -1, -1, 
-  -1, -1, 49, 61, 62, 52, 53, -1, 66, 67, 
-  68, 58, -1, 80, -1, -1, -1, 64, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, 
-  -1, -1, -1, 80, -1, -1, 22, -1, -1, 3, 
-  -1, -1, -1, 29, -1, -1, -1, 33, 34, 13, 
-  36, -1, -1, 17, -1, -1, -1, 43, -1, -1, 
-  -1, 47, 26, -1, 28, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 39, -1, 41, 42, 65, 
-  66, 67, 68, -1, 70, 49, -1, -1, 52, 53, 
-  -1, -1, -1, -1, 58, 81, 82, 83, -1, -1, 
-  64, 87, -1, -1, -1, 12, 13, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 22, 80, -1, -1, -1, 
-  -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, 
-  -1, -1, -1, 12, 13, -1, 43, -1, -1, -1, 
-  47, -1, -1, 22, -1, -1, -1, -1, -1, -1, 
-  29, -1, -1, -1, 33, 34, -1, 36, 65, 66, 
-  67, 68, -1, 70, 43, -1, -1, -1, 47, -1, 
-  -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 
-  87, -1, -1, -1, -1, -1, 65, 66, 67, 68, 
-  -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, 
-  12, 13, -1, -1, -1, -1, -1, -1, 12, 13, 
-  22, -1, -1, -1, -1, -1, -1, 29, 22, -1, 
-  -1, 33, 34, -1, 36, 29, -1, -1, -1, 33, 
-  34, 43, 36, -1, -1, 47, -1, -1, -1, 43, 
+  36, 7, 7, 7, 7, 36, 7, 36, 7, 36, 
+  60, 33, 33, 36, 7, 7, 7, 36, 36, 7, 
+  77, 36, 36, 60, 33, 55, 16, 55, 79, 90, 
+  7, 55, 8, 7, 36, 7, 36, 48, 20, 8, 
+  79, 36, 7, 2, 8, 90, 33, 36, 33, 17, 
+  48, 0, 33, 1, 33, 8, 36, 7, 36, 55, 
+  2, 8, 7, 60, 7, 5, 60, 5, 5, 36, 
+  33, 7, 29, 17, 60, 36, 60, 60, 48, 7, 
+  55, 36, 2, 2, 7, 7, 7, 33, 1, 7, 
+  61, 8, 8, 7, 29, 36, 7, 24, 37, 61, 
+  66, 33, 1, 61, 60, 1, 79, 7, 60, 10, 
+  8, 40, 66, 8, 29, 48, 8, 29, 6, -1, 
+  29, 31, 51, 7, 8, 50, 15, 61, 62, 54, 
+  61, 62, 20, 8, 8, 61, 62, 61, 62, 42, 
+  8, 8, 50, 7, 15, 34, 54, 8, 8, 8, 
+  53, 8, -1, 7, 55, 61, 62, 8, 56, 61, 
+  62, 40, 40, 34, 56, 60, 8, 61, 62, 33, 
+  61, 62, 51, 51, 61, 62, 61, 62, 61, 62, 
+  8, 25, 8, 27, 40, 60, 29, 61, 8, 25, 
+  -1, 27, 60, 60, 38, 51, 25, 15, 27, 60, 
+  60, 60, 38, 60, 25, 56, 27, 29, 15, 38, 
+  29, 7, 12, 29, 29, 8, 34, 38, 36, 61, 
+  62, 7, -1, 36, 8, -1, 15, 34, -1, 36, 
+  -1, -1, 75, 61, 62, 61, 62, 25, 12, 27, 
+  12, 61, 62, 86, 8, 34, -1, 36, 61, 62, 
+  38, 61, 62, 75, 29, -1, 75, 57, 29, 75, 
+  75, 15, -1, 63, 86, 61, 62, 86, 61, 62, 
+  86, 86, -1, -1, -1, 61, 62, 61, 62, 29, 
+  34, 91, 36, 57, 29, 57, 15, 47, 29, 63, 
+  -1, 63, 56, -1, 15, 66, 67, 68, -1, -1, 
+  75, 61, 62, 29, 33, 34, -1, 36, -1, -1, 
+  -1, 86, 33, 34, 29, 36, 66, 67, 68, 29, 
+  -1, 66, 67, 68, 29, 66, 67, 68, 29, -1, 
+  -1, 91, 18, 19, 25, 29, 27, -1, -1, -1, 
+  66, 67, 68, 92, 93, 94, 95, 38, 18, 19, 
+  29, 66, 67, 68, 29, -1, 66, 67, 68, 45, 
+  46, 66, 67, 68, 29, 66, 67, 68, -1, 23, 
+  24, -1, 66, 67, 68, 45, 46, 29, 32, -1, 
+  -1, 35, -1, 37, -1, -1, -1, 66, 67, 68, 
+  29, 66, 67, 68, -1, -1, -1, 36, -1, 29, 
+  -1, 66, 67, 68, -1, -1, 36, 18, 19, 23, 
+  24, -1, -1, -1, 66, 67, 68, -1, 32, -1, 
+  -1, 35, -1, 37, -1, -1, -1, 66, 67, 68, 
+  -1, 23, 24, -1, 45, 46, 66, 67, 68, 31, 
+  32, 23, 24, 35, -1, 37, -1, -1, -1, 31, 
+  32, 23, 24, 35, -1, 37, -1, -1, -1, 31, 
+  32, 23, 24, 35, -1, 37, -1, -1, -1, 31, 
+  32, 23, 24, 35, 29, 37, -1, -1, -1, 31, 
+  32, -1, 29, 35, -1, 37, -1, 23, 24, -1, 
+  29, -1, -1, -1, -1, -1, 32, -1, 29, 35, 
+  -1, 37, -1, -1, -1, -1, 61, 62, -1, -1, 
+  -1, 66, 67, 68, 61, 62, -1, -1, -1, 66, 
+  67, 68, 61, 62, -1, -1, -1, 66, 67, 68, 
+  61, 62, 3, -1, -1, 66, 67, 68, -1, -1, 
+  -1, -1, 13, -1, -1, -1, 17, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 26, -1, 28, -1, -1, 
+  -1, -1, 29, -1, -1, -1, -1, -1, 39, -1, 
+  41, 42, -1, -1, -1, -1, -1, -1, 49, -1, 
+  -1, 52, 53, -1, -1, -1, -1, 58, 3, -1, 
+  -1, -1, -1, 64, 61, 62, -1, -1, 13, 66, 
+  67, 68, 17, -1, -1, -1, -1, -1, -1, 80, 
+  -1, 26, -1, 28, -1, -1, 31, -1, -1, -1, 
+  -1, -1, -1, -1, 39, -1, 41, 42, -1, 12, 
+  13, 3, -1, -1, 49, -1, -1, 52, 53, 22, 
+  -1, 13, -1, 58, -1, 17, 29, -1, -1, 64, 
+  33, 34, -1, 36, 26, -1, 28, -1, -1, -1, 
+  43, -1, -1, -1, 47, 80, -1, 39, -1, 41, 
+  42, -1, -1, -1, -1, -1, -1, 49, -1, -1, 
+  52, 53, 65, 66, 67, 68, 58, 70, -1, -1, 
+  -1, -1, 64, -1, -1, -1, -1, -1, 81, 82, 
+  83, -1, -1, -1, 87, -1, -1, -1, 80, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 12, 13, 
+  -1, -1, -1, -1, -1, -1, 12, 13, 22, -1, 
+  -1, -1, -1, -1, -1, 29, 22, -1, -1, 33, 
+  34, -1, 36, 29, -1, -1, -1, 33, 34, 43, 
+  36, -1, -1, 47, -1, -1, -1, 43, -1, -1, 
+  -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 65, 66, 67, 68, -1, 70, -1, -1, 65, 
+  66, 67, 68, -1, 70, -1, -1, 81, 82, 83, 
+  -1, -1, -1, 87, -1, 81, 82, 83, -1, -1, 
+  -1, 87, -1, -1, 12, 13, -1, -1, -1, -1, 
+  -1, -1, 12, 13, 22, -1, -1, -1, -1, -1, 
+  -1, 29, 22, -1, -1, 33, 34, -1, 36, 29, 
+  -1, -1, -1, 33, 34, 43, 36, -1, -1, 47, 
+  -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, -1, 65, 66, 67, 68, -1, 
+  70, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
+  -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 12, 13, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 
+  -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 
+  34, -1, 36, -1, -1, -1, -1, -1, -1, 43, 
   -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 
-  -1, 65, 66, 67, 68, -1, 70, -1, -1, 81, 
-  82, 83, -1, -1, -1, 87, -1, 81, 82, 83, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 65, 66, 67, 68, -1, 70, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, 
   -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, 
-  -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, 
-  -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 
-  47, -1, -1, -1, -1, -1, -1, -1, 55, -1, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 
-  67, 68, -1, 70, -1, -1, -1, -1, 75, -1, 
-  -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, 
-  87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 10, -1, 12, 13, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
+  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
+  36, -1, -1, -1, -1, -1, -1, 43, -1, -1, 
+  -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
+  66, 67, 68, -1, 70, -1, -1, -1, -1, 75, 
+  -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, 
+  -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
+  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, 
+  -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, -1, -1, -1, 75, -1, -1, 
+  -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   10, -1, 12, 13, -1, -1, -1, -1, -1, -1, 
   -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, 
   -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
@@ -727,59 +772,33 @@ const int QmlJSGrammar::action_check [] = {
   -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 
   70, -1, -1, -1, -1, 75, -1, -1, -1, -1, 
   -1, 81, 82, 83, 84, -1, -1, 87, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 11, 12, 13, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 
-  -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 
-  34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 
-  44, -1, -1, 47, -1, -1, -1, 51, -1, 53, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 
-  74, -1, 76, -1, -1, -1, -1, 81, 82, 83, 
-  -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 7, -1, -1, -1, 11, 12, 13, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 
-  -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 
-  34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 
-  44, -1, -1, 47, -1, -1, -1, 51, -1, 53, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 
-  74, -1, 76, -1, -1, -1, -1, 81, 82, 83, 
-  -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
-  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
-  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
-  -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
-  68, -1, 70, -1, 72, -1, 74, 75, 76, -1, 
-  -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, 
-  12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 
-  22, -1, -1, -1, -1, -1, -1, 29, 30, -1, 
-  -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 
-  42, 43, 44, -1, -1, 47, -1, -1, -1, 51, 
-  -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, 
-  -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 
-  72, -1, 74, -1, 76, -1, -1, -1, -1, 81, 
-  82, 83, -1, -1, -1, 87, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, 
   13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 
   -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 
   33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 
   43, 44, -1, -1, 47, -1, -1, -1, 51, -1, 
-  53, -1, -1, 56, -1, -1, -1, -1, -1, -1, 
+  53, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, 
   -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 
   83, -1, -1, -1, 87, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 8, -1, -1, 11, 12, 13, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 
-  -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 
-  34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 
-  44, -1, -1, 47, -1, -1, -1, 51, -1, 53, 
-  -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 
-  74, -1, 76, -1, -1, -1, -1, 81, 82, 83, 
-  -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 11, 12, 13, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
+  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
+  36, -1, -1, -1, 40, -1, 42, 43, 44, -1, 
+  -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
+  66, 67, 68, -1, 70, -1, 72, -1, 74, 75, 
+  76, -1, -1, -1, -1, 81, 82, 83, -1, -1, 
+  -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 7, -1, -1, -1, 11, 12, 13, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 
+  -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, 
+  -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, 
+  -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  65, 66, 67, 68, -1, 70, -1, 72, -1, 74, 
+  -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, 
+  -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, 
   -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 
   -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, 
@@ -789,24 +808,51 @@ const int QmlJSGrammar::action_check [] = {
   65, 66, 67, 68, -1, 70, -1, 72, -1, 74, 
   -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, 
   -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
-  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
-  36, -1, -1, -1, 40, -1, 42, 43, 44, -1, 
-  -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, 
-  56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
-  66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 
-  76, -1, -1, -1, -1, 81, 82, 83, -1, -1, 
-  -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, 
-  -1, 14, -1, 16, -1, -1, -1, 20, 21, 22, 
-  -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 
+  -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
+  -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
+  -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, 
+  -1, -1, -1, 61, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, 72, -1, 74, -1, 76, -1, 
+  -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  8, -1, -1, 11, 12, 13, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
+  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
+  -1, -1, -1, 51, -1, 53, -1, -1, 56, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, 72, -1, 74, -1, 76, -1, 
+  -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  43, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 
-  -1, -1, -1, 66, 67, 68, 69, 70, 71, -1, 
-  73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 
-  83, 84, 85, 86, -1, -1, -1, -1, -1, -1, 
+  8, -1, -1, 11, 12, 13, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
+  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
+  -1, -1, -1, 51, -1, 53, -1, -1, 56, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, 72, -1, 74, -1, 76, -1, 
+  -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  8, -1, -1, 11, 12, 13, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
+  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
+  -1, -1, -1, 51, -1, 53, -1, -1, 56, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
+  68, -1, 70, -1, 72, -1, 74, -1, 76, -1, 
+  -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  4, 5, 6, -1, -1, 9, 10, 11, -1, -1, 
+  14, -1, 16, -1, -1, -1, 20, 21, 22, -1, 
+  -1, -1, -1, -1, -1, 29, 30, 31, 32, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 
+  -1, -1, 66, 67, 68, 69, 70, 71, -1, 73, 
+  74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 
+  84, 85, 86, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, 
   10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 
   20, 21, 22, -1, -1, -1, -1, -1, -1, 29, 
@@ -816,98 +862,99 @@ const int QmlJSGrammar::action_check [] = {
   -1, -1, -1, -1, -1, 65, 66, 67, -1, 69, 
   70, 71, -1, 73, 74, 75, 76, 77, 78, -1, 
   -1, 81, 82, 83, 84, 85, 86, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, 
-  -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, 
-  -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, 
-  -1, -1, 29, 30, 31, 32, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 
-  47, -1, -1, -1, -1, -1, -1, -1, 55, -1, 
-  -1, -1, 59, -1, -1, -1, -1, -1, 65, 66, 
-  67, -1, 69, 70, 71, -1, 73, 74, 75, 76, 
-  77, 78, -1, -1, 81, 82, 83, 84, 85, 86, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 
+  6, -1, -1, 9, 10, 11, -1, -1, 14, -1, 
+  16, -1, -1, -1, 20, 21, 22, -1, -1, -1, 
+  -1, -1, -1, 29, 30, 31, 32, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, 
+  -1, 47, -1, -1, -1, -1, -1, -1, -1, 55, 
+  -1, -1, -1, 59, -1, -1, -1, -1, -1, 65, 
+  66, 67, -1, 69, 70, 71, -1, 73, 74, 75, 
+  76, 77, 78, -1, -1, 81, 82, 83, 84, 85, 
+  86, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, 
+  12, 13, 14, -1, -1, -1, -1, -1, -1, 21, 
+  22, -1, -1, -1, -1, -1, -1, 29, 30, -1, 
+  -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 
+  42, 43, 44, -1, -1, 47, -1, -1, -1, 51, 
+  -1, 53, -1, -1, -1, -1, -1, 59, -1, 61, 
+  -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, 
+  72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 
+  82, 83, 84, 85, -1, 87, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 
+  -1, 9, -1, 11, 12, 13, 14, -1, -1, -1, 
+  -1, -1, -1, 21, 22, -1, -1, -1, -1, -1, 
+  -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, 
+  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
+  -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, 
+  -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, 
+  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
+  78, -1, -1, 81, 82, 83, 84, 85, -1, 87, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  4, -1, -1, -1, -1, 9, -1, 11, 12, 13, 
-  14, -1, -1, -1, -1, -1, -1, 21, 22, -1, 
-  -1, -1, -1, -1, -1, 29, 30, -1, -1, 33, 
+  4, 5, 6, -1, -1, 9, 10, 11, 12, 13, 
+  14, -1, 16, -1, -1, -1, 20, 21, 22, -1, 
+  -1, -1, -1, -1, -1, 29, 30, 31, 32, 33, 
   34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 
   44, -1, -1, 47, -1, -1, -1, 51, -1, 53, 
   -1, -1, -1, -1, -1, 59, -1, 61, -1, -1, 
   -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
   74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 
-  84, 85, -1, 87, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 
-  11, 12, 13, 14, -1, -1, -1, -1, -1, -1, 
-  21, 22, -1, -1, -1, -1, -1, -1, 29, 30, 
-  -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, 
-  -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, 
-  51, -1, 53, -1, -1, -1, -1, -1, 59, -1, 
-  61, -1, -1, -1, 65, 66, 67, 68, 69, 70, 
-  71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 
-  81, 82, 83, 84, 85, -1, 87, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, 
-  -1, 9, 10, 11, 12, 13, 14, -1, 16, -1, 
-  -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, 
-  -1, 29, 30, 31, 32, 33, 34, -1, 36, -1, 
-  -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, 
-  -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, 
-  -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, 
-  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
-  78, -1, -1, 81, 82, 83, 84, 85, 86, 87, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 
-  5, 6, -1, -1, 9, 10, 11, 12, 13, 14, 
-  -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, 
-  -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, 
-  -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, 
-  -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, 
-  55, -1, -1, -1, 59, -1, 61, -1, -1, -1, 
-  65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 
-  75, 76, 77, 78, -1, -1, 81, 82, 83, 84, 
-  85, 86, 87, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 
+  84, 85, 86, 87, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, 
+  10, 11, 12, 13, 14, -1, 16, -1, -1, -1, 
+  20, 21, 22, -1, -1, -1, -1, -1, -1, 29, 
+  30, 31, 32, 33, 34, -1, 36, -1, -1, -1, 
+  40, -1, 42, 43, 44, -1, -1, 47, -1, -1, 
+  -1, 51, -1, 53, -1, 55, -1, -1, -1, 59, 
+  -1, 61, -1, -1, -1, 65, 66, 67, 68, 69, 
+  70, 71, 72, 73, 74, 75, 76, 77, 78, -1, 
+  -1, 81, 82, 83, 84, 85, 86, 87, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 
 
-  33, 23, 12, 23, 3, 2, 2, 33, 3, 2, 
-  34, 3, 10, 2, 33, 65, 3, 2, 12, 3, 
-  3, 12, 12, 3, 12, 2, 12, 3, 3, 33, 
-  12, 12, 3, 12, 79, 91, 94, 3, 79, 3, 
-  12, 19, 12, 17, 12, 3, 2, 12, 3, 3, 
-  23, 12, 19, 2, 23, 3, 3, 2, 2, 12, 
-  3, 12, 2, 2, 2, 96, 12, 3, 3, 19, 
-  33, 33, 2, 33, 33, 12, 33, 10, 12, 2, 
-  8, 33, 2, -1, 3, 2, 2, 19, 19, 10, 
-  12, 33, 33, -1, -1, -1, -1, 10, 12, -1, 
-  13, -1, 12, 12, 3, -1, 33, -1, -1, 33, 
-  -1, 38, 10, 42, 38, 44, 42, 42, 39, 44, 
-  10, 47, -1, 13, 42, 35, 44, 42, -1, 44, 
-  42, 42, 44, 44, 42, 42, 44, 42, 42, 42, 
-  47, 39, 47, 47, 47, 42, 42, 44, 44, 42, 
-  42, 42, 44, 42, 47, -1, 42, 48, 42, 48, 
-  44, 83, 48, 42, 42, 42, 42, 66, 42, 48, 
-  47, 47, 50, 42, 10, 2, 85, 46, 52, 42, 
-  42, 42, 98, 97, 46, 42, 103, 3, 42, 42, 
-  47, 54, 46, 42, 47, 42, 42, 58, 47, 45, 
-  47, 3, 42, 39, 44, 42, 3, 44, 42, 42, 
-  44, 44, 42, 42, 44, 44, 42, 42, 44, 42, 
-  10, 42, 45, 13, 42, 42, 47, 42, -1, 47, 
-  47, 56, 47, 42, 55, 42, 53, 42, 47, 12, 
-  47, -1, 47, 33, -1, -1, 64, -1, 57, 64, 
-  66, 42, 59, 42, -1, -1, 47, -1, 47, 64, 
-  49, 42, 35, 36, 66, 42, 47, -1, 49, 66, 
-  47, -1, 42, 64, 51, 42, 42, 47, 29, 49, 
-  47, 47, 33, 49, 10, -1, -1, -1, -1, 15, 
-  -1, -1, 18, -1, 10, -1, -1, 64, -1, -1, 
-  26, 27, 18, 19, 20, 21, 22, -1, -1, -1, 
+  13, 94, 3, 19, 33, 23, 13, 3, 23, 3, 
+  13, 23, 3, 2, 23, 3, 3, 19, 2, 17, 
+  13, 65, 33, 13, 9, 11, 3, 2, 33, 2, 
+  13, 13, 13, 3, 34, 3, 33, 13, 3, 13, 
+  3, 13, 3, 2, 13, 3, 2, 2, 19, 3, 
+  3, 2, 2, 33, 33, 33, 2, 79, 3, 2, 
+  2, 13, 3, 2, 13, 79, 33, 33, 3, 13, 
+  96, 33, 19, 13, 2, 13, 33, 13, 2, 2, 
+  13, 3, 3, 3, 11, 33, 23, 91, 19, 2, 
+  -1, 2, 2, -1, -1, -1, -1, -1, 13, 13, 
+  -1, 33, -1, -1, 33, -1, 38, -1, 42, 38, 
+  3, -1, 42, 47, 44, 13, 42, 42, 44, -1, 
+  3, 35, 47, 42, 42, 42, 42, -1, 47, 47, 
+  42, 48, 48, 42, 42, 47, 44, 42, 42, 42, 
+  42, 44, 47, 47, 46, 42, 42, 44, 42, 58, 
+  46, 42, 42, 44, 42, 42, 42, 47, 42, 47, 
+  54, 47, 46, 11, 42, 52, 42, 42, 83, 47, 
+  42, 47, 44, 66, 42, 50, 44, 42, 42, 44, 
+  13, 42, 42, 66, 45, 45, 42, 98, 44, 11, 
+  103, 39, 56, 11, 3, 42, 42, 44, 42, 97, 
+  44, 42, 48, 44, 42, 42, 42, 44, 44, 29, 
+  48, 42, 42, 33, 44, 42, 47, 39, 42, 42, 
+  47, 39, -1, 47, 47, 42, 42, 11, 59, 11, 
+  47, 47, 14, -1, 42, 51, 18, 64, 13, 47, 
+  64, 64, 26, 27, 42, 53, -1, 64, 42, 47, 
+  42, 49, 85, 47, 42, 47, -1, 66, 3, 47, 
+  35, 36, -1, 57, 42, -1, -1, 55, 42, 47, 
+  4, 49, 64, 47, 42, 49, -1, 11, 4, 47, 
+  11, 49, -1, 14, -1, 11, -1, 18, 11, -1, 
+  -1, -1, 26, 27, -1, 18, 19, 20, 21, 22, 
+  26, 27, 33, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  11, -1, -1, 14, -1, -1, -1, 18, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, 
-  -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, 
-  26, 27, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1};
+  -1, -1, -1, -1};
 
diff --git a/src/plugins/qmleditor/parser/qmljsgrammar_p.h b/src/plugins/qmleditor/parser/qmljsgrammar_p.h
index 0610bfe4335aab0bb4965bf0c7a10e2a77f818d8..7de77c03a099c626e847eb858ac1714121d616e5 100644
--- a/src/plugins/qmleditor/parser/qmljsgrammar_p.h
+++ b/src/plugins/qmleditor/parser/qmljsgrammar_p.h
@@ -2,6 +2,7 @@
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
 ** This file is part of the QtCore module of the Qt Toolkit.
@@ -21,10 +22,9 @@
 ** ensure the GNU Lesser General Public License version 2.1 requirements
 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
-** In addition, as a special exception, Nokia gives you certain
-** additional rights.  These rights are described in the Nokia Qt LGPL
-** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 **
 ** If you have questions regarding the use of this file, please contact
 ** Nokia at qt-info@nokia.com.
@@ -59,8 +59,8 @@ class QmlJSGrammar
 public:
   enum {
     EOF_SYMBOL = 0,
-    REDUCE_HERE = 96,
-    SHIFT_THERE = 95,
+    REDUCE_HERE = 97,
+    SHIFT_THERE = 96,
     T_AND = 1,
     T_AND_AND = 2,
     T_AND_EQ = 3,
@@ -86,8 +86,9 @@ public:
     T_EQ_EQ = 18,
     T_EQ_EQ_EQ = 19,
     T_FALSE = 83,
-    T_FEED_JS_EXPRESSION = 94,
-    T_FEED_JS_STATEMENT = 93,
+    T_FEED_JS_EXPRESSION = 95,
+    T_FEED_JS_STATEMENT = 94,
+    T_FEED_UI_OBJECT_MEMBER = 93,
     T_FEED_UI_PROGRAM = 92,
     T_FINALLY = 20,
     T_FOR = 21,
@@ -156,15 +157,15 @@ public:
     T_XOR = 79,
     T_XOR_EQ = 80,
 
-    ACCEPT_STATE = 621,
-    RULE_COUNT = 337,
-    STATE_COUNT = 622,
-    TERMINAL_COUNT = 97,
+    ACCEPT_STATE = 630,
+    RULE_COUNT = 340,
+    STATE_COUNT = 631,
+    TERMINAL_COUNT = 98,
     NON_TERMINAL_COUNT = 105,
 
-    GOTO_INDEX_OFFSET = 622,
-    GOTO_INFO_OFFSET = 2402,
-    GOTO_CHECK_OFFSET = 2402
+    GOTO_INDEX_OFFSET = 631,
+    GOTO_INFO_OFFSET = 2618,
+    GOTO_CHECK_OFFSET = 2618
   };
 
   static const char  *const spell [];
diff --git a/src/plugins/qmleditor/parser/qmljsparser.cpp b/src/plugins/qmleditor/parser/qmljsparser.cpp
index ab4ff63d3ef9b532f1c783301cce071abca32e21..e805ce5b6fc25deb4d1a33074dc8d4c962808824 100644
--- a/src/plugins/qmleditor/parser/qmljsparser.cpp
+++ b/src/plugins/qmleditor/parser/qmljsparser.cpp
@@ -211,33 +211,38 @@ case 2: {
 } break;
 
 case 3: {
+  sym(1).Node = sym(2).Node;
+  program = sym(1).Node;
+} break;
+
+case 4: {
   sym(1).UiProgram = makeAstNode<AST::UiProgram> (driver->nodePool(), sym(1).UiImportList,
         sym(2).UiObjectMemberList->finish());
 } break;
 
-case 5: {
+case 6: {
     sym(1).Node = sym(1).UiImportList->finish();
 } break;
 
-case 6: {
+case 7: {
     sym(1).Node = makeAstNode<AST::UiImportList> (driver->nodePool(), sym(1).UiImport);
 } break;
 
-case 7: {
+case 8: {
     sym(1).Node = makeAstNode<AST::UiImportList> (driver->nodePool(),
         sym(1).UiImportList, sym(2).UiImport);
 } break;
 
-case 10: {
+case 11: {
     sym(1).UiImport->semicolonToken = loc(2);
 } break;
 
-case 12: {
+case 13: {
     sym(1).UiImport->versionToken = loc(2);
     sym(1).UiImport->semicolonToken = loc(3);
 } break;
 
-case 14: {
+case 15: {
     sym(1).UiImport->versionToken = loc(2);
     sym(1).UiImport->asToken = loc(3);
     sym(1).UiImport->importIdToken = loc(4);
@@ -245,14 +250,14 @@ case 14: {
     sym(1).UiImport->semicolonToken = loc(5);
 } break;
 
-case 16: {
+case 17: {
     sym(1).UiImport->asToken = loc(2);
     sym(1).UiImport->importIdToken = loc(3);
     sym(1).UiImport->importId = sym(3).sval;
     sym(1).UiImport->semicolonToken = loc(4);
 } break;
 
-case 17: {
+case 18: {
     AST::UiImport *node = 0;
 
     if (AST::StringLiteral *importIdLiteral = AST::cast<AST::StringLiteral *>(sym(2).Expression)) {
@@ -278,56 +283,56 @@ case 17: {
     }
 } break;
 
-case 18: {
+case 19: {
     sym(1).Node = 0;
 } break;
 
-case 19: {
+case 20: {
     sym(1).Node = makeAstNode<AST::UiObjectMemberList> (driver->nodePool(), sym(1).UiObjectMember);
 } break;
 
-case 20: {
+case 21: {
     sym(1).Node = makeAstNode<AST::UiObjectMemberList> (driver->nodePool(), sym(1).UiObjectMember);
 } break;
 
-case 21: {
+case 22: {
     AST::UiObjectMemberList *node = makeAstNode<AST:: UiObjectMemberList> (driver->nodePool(),
         sym(1).UiObjectMemberList, sym(2).UiObjectMember);
     sym(1).Node = node;
 } break;
 
-case 22: {
+case 23: {
     sym(1).Node = makeAstNode<AST::UiArrayMemberList> (driver->nodePool(), sym(1).UiObjectMember);
 } break;
 
-case 23: {
+case 24: {
     AST::UiArrayMemberList *node = makeAstNode<AST::UiArrayMemberList> (driver->nodePool(),
         sym(1).UiArrayMemberList, sym(3).UiObjectMember);
     node->commaToken = loc(2);
     sym(1).Node = node;
 } break;
 
-case 24: {
+case 25: {
     AST::UiObjectInitializer *node = makeAstNode<AST::UiObjectInitializer> (driver->nodePool(), (AST::UiObjectMemberList*)0);
     node->lbraceToken = loc(1);
     node->rbraceToken = loc(2);
     sym(1).Node = node;
 }   break;
 
-case 25: {
+case 26: {
     AST::UiObjectInitializer *node = makeAstNode<AST::UiObjectInitializer> (driver->nodePool(), sym(2).UiObjectMemberList->finish());
     node->lbraceToken = loc(1);
     node->rbraceToken = loc(3);
     sym(1).Node = node;
 }   break;
 
-case 26: {
+case 27: {
     AST::UiObjectDefinition *node = makeAstNode<AST::UiObjectDefinition> (driver->nodePool(), sym(1).UiQualifiedId,
         sym(2).UiObjectInitializer);
     sym(1).Node = node;
 }   break;
 
-case 28: {
+case 29: {
     AST::UiArrayBinding *node = makeAstNode<AST::UiArrayBinding> (driver->nodePool(),
         sym(1).UiQualifiedId, sym(4).UiArrayMemberList->finish());
     node->colonToken = loc(2);
@@ -336,13 +341,13 @@ case 28: {
     sym(1).Node = node;
 }   break;
 
-case 29: {
+case 30: {
     AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
       sym(1).UiQualifiedId, sym(3).UiQualifiedId, sym(4).UiObjectInitializer);
     node->colonToken = loc(2);
     sym(1).Node = node;
 } break;
-case 30:case 31:case 32:case 33:
+case 31:case 32:case 33:case 34:
 {
     AST::UiScriptBinding *node = makeAstNode<AST::UiScriptBinding> (driver->nodePool(),
         sym(1).UiQualifiedId, sym(3).Statement);
@@ -350,35 +355,35 @@ case 30:case 31:case 32:case 33:
     sym(1).Node = node;
 }   break;
 
-case 34:
+case 35:
 
-case 35: {
+case 36: {
     sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
     break;
 }
 
-case 37: {
+case 38: {
   sym(1).Node = 0;
 } break;
 
-case 38: {
+case 39: {
   sym(1).Node = sym(1).UiParameterList->finish ();
 } break;
 
-case 39: {
+case 40: {
   AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).sval, sym(2).sval);
   node->identifierToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 40: {
+case 41: {
   AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).UiParameterList, sym(3).sval, sym(4).sval);
   node->commaToken = loc(2);
   node->identifierToken = loc(4);
   sym(1).Node = node;
 } break;
 
-case 42: {
+case 43: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval);
     node->type = AST::UiPublicMember::Signal;
     node->propertyToken = loc(1);
@@ -389,7 +394,7 @@ case 42: {
     sym(1).Node = node;
 }   break;
 
-case 44: {
+case 45: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval);
     node->type = AST::UiPublicMember::Signal;
     node->propertyToken = loc(1);
@@ -399,7 +404,18 @@ case 44: {
     sym(1).Node = node;
 }   break;
 
-case 46: {
+case 47: {
+    AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
+    node->typeModifier = sym(2).sval;
+    node->propertyToken = loc(1);
+    node->typeModifierToken = loc(2);
+    node->typeToken = loc(4);
+    node->identifierToken = loc(6);
+    node->semicolonToken = loc(7);
+    sym(1).Node = node;
+}   break;
+
+case 49: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
     node->propertyToken = loc(1);
     node->typeToken = loc(2);
@@ -408,7 +424,7 @@ case 46: {
     sym(1).Node = node;
 }   break;
 
-case 48: {
+case 51: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
     node->isDefaultMember = true;
     node->defaultToken = loc(1);
@@ -419,7 +435,7 @@ case 48: {
     sym(1).Node = node;
 }   break;
 
-case 50: {
+case 53: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
         sym(5).Expression);
     node->propertyToken = loc(1);
@@ -430,7 +446,7 @@ case 50: {
     sym(1).Node = node;
 }   break;
 
-case 52: {
+case 55: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
         sym(6).Expression);
     node->isReadonlyMember = true;
@@ -443,7 +459,7 @@ case 52: {
     sym(1).Node = node;
 }   break;
 
-case 54: {
+case 57: {
     AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
         sym(6).Expression);
     node->isDefaultMember = true;
@@ -456,75 +472,75 @@ case 54: {
     sym(1).Node = node;
 }   break;
 
-case 55: {
+case 58: {
     sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
 }   break;
 
-case 56: {
+case 59: {
     sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
 }   break;
 
-case 58: {
+case 61: {
     QString s = QLatin1String(QmlJSGrammar::spell[T_PROPERTY]);
     sym(1).sval = driver->intern(s.constData(), s.length());
     break;
 }
 
-case 59: {
+case 62: {
     QString s = QLatin1String(QmlJSGrammar::spell[T_SIGNAL]);
     sym(1).sval = driver->intern(s.constData(), s.length());
     break;
 }
 
-case 60: {
+case 63: {
     QString s = QLatin1String(QmlJSGrammar::spell[T_READONLY]);
     sym(1).sval = driver->intern(s.constData(), s.length());
     break;
 }
 
-case 61: {
+case 64: {
   AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
   node->thisToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 62: {
+case 65: {
   AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
   node->identifierToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 63: {
+case 66: {
   AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
   node->nullToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 64: {
+case 67: {
   AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
   node->trueToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 65: {
+case 68: {
   AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
   node->falseToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 66: {
+case 69: {
   AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
   node->literalToken = loc(1);
   sym(1).Node = node;
 } break;
-case 67:
-case 68: {
+case 70:
+case 71: {
   AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
   node->literalToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 69: {
+case 72: {
   bool rx = lexer->scanRegExp(Lexer::NoPrefix);
   if (!rx) {
     diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -535,7 +551,7 @@ case 69: {
   sym(1).Node = node;
 } break;
 
-case 70: {
+case 73: {
   bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
   if (!rx) {
     diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -546,28 +562,28 @@ case 70: {
   sym(1).Node = node;
 } break;
 
-case 71: {
+case 74: {
   AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), (AST::Elision *) 0);
   node->lbracketToken = loc(1);
   node->rbracketToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 72: {
+case 75: {
   AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision->finish());
   node->lbracketToken = loc(1);
   node->rbracketToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 73: {
+case 76: {
   AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
   node->lbracketToken = loc(1);
   node->rbracketToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 74: {
+case 77: {
   AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
     (AST::Elision *) 0);
   node->lbracketToken = loc(1);
@@ -576,7 +592,7 @@ case 74: {
   sym(1).Node = node;
 } break;
 
-case 75: {
+case 78: {
   AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
     sym(4).Elision->finish());
   node->lbracketToken = loc(1);
@@ -585,7 +601,7 @@ case 75: {
   sym(1).Node = node;
 } break;
 
-case 76: {
+case 79: {
   AST::ObjectLiteral *node = 0;
   if (sym(2).Node)
     node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -597,7 +613,7 @@ case 76: {
   sym(1).Node = node;
 } break;
 
-case 77: {
+case 80: {
   AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
     sym(2).PropertyNameAndValueList->finish ());
   node->lbraceToken = loc(1);
@@ -605,14 +621,14 @@ case 77: {
   sym(1).Node = node;
 } break;
 
-case 78: {
+case 81: {
   AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
   node->lparenToken = loc(1);
   node->rparenToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 79: {
+case 82: {
   if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
     diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken,
       QLatin1String("Ignored annotation")));
@@ -632,48 +648,48 @@ case 79: {
   }
 } break;
 
-case 80: {
+case 83: {
   sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), (AST::Elision *) 0, sym(1).Expression);
 } break;
 
-case 81: {
+case 84: {
   sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision->finish(), sym(2).Expression);
 } break;
 
-case 82: {
+case 85: {
   AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList,
     (AST::Elision *) 0, sym(3).Expression);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 83: {
+case 86: {
   AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision->finish(),
     sym(4).Expression);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 84: {
+case 87: {
   AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
   node->commaToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 85: {
+case 88: {
   AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 86: {
+case 89: {
   AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
       sym(1).PropertyName, sym(3).Expression);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 87: {
+case 90: {
   AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
       sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
   node->commaToken = loc(2);
@@ -681,42 +697,36 @@ case 87: {
   sym(1).Node = node;
 } break;
 
-case 88: {
+case 91: {
   AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
   node->propertyNameToken = loc(1);
   sym(1).Node = node;
 } break;
-case 89:
-case 90: {
+case 92:
+case 93: {
   AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
   node->propertyNameToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 91: {
+case 94: {
   AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
   node->propertyNameToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 92: {
+case 95: {
   AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
   node->propertyNameToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 93: {
+case 96: {
   AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
   node->propertyNameToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 94:
-
-case 95:
-
-case 96:
-
 case 97:
 
 case 98:
@@ -772,25 +782,31 @@ case 122:
 case 123:
 
 case 124:
+
+case 125:
+
+case 126:
+
+case 127:
 {
   sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
 } break;
 
-case 129: {
+case 132: {
   AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
   node->lbracketToken = loc(2);
   node->rbracketToken = loc(4);
   sym(1).Node = node;
 } break;
 
-case 130: {
+case 133: {
   AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
   node->dotToken = loc(2);
   node->identifierToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 131: {
+case 134: {
   AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
   node->newToken = loc(1);
   node->lparenToken = loc(3);
@@ -798,384 +814,384 @@ case 131: {
   sym(1).Node = node;
 } break;
 
-case 133: {
+case 136: {
   AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
   node->newToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 134: {
+case 137: {
   AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
   node->lparenToken = loc(2);
   node->rparenToken = loc(4);
   sym(1).Node = node;
 } break;
 
-case 135: {
+case 138: {
   AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
   node->lparenToken = loc(2);
   node->rparenToken = loc(4);
   sym(1).Node = node;
 } break;
 
-case 136: {
+case 139: {
   AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
   node->lbracketToken = loc(2);
   node->rbracketToken = loc(4);
   sym(1).Node = node;
 } break;
 
-case 137: {
+case 140: {
   AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
   node->dotToken = loc(2);
   node->identifierToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 138: {
+case 141: {
   sym(1).Node = 0;
 } break;
 
-case 139: {
+case 142: {
   sym(1).Node = sym(1).ArgumentList->finish();
 } break;
 
-case 140: {
+case 143: {
   sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
 } break;
 
-case 141: {
+case 144: {
   AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 145: {
+case 148: {
   AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
   node->incrementToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 146: {
+case 149: {
   AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
   node->decrementToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 148: {
+case 151: {
   AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
   node->deleteToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 149: {
+case 152: {
   AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
   node->voidToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 150: {
+case 153: {
   AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
   node->typeofToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 151: {
+case 154: {
   AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
   node->incrementToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 152: {
+case 155: {
   AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
   node->decrementToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 153: {
+case 156: {
   AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
   node->plusToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 154: {
+case 157: {
   AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
   node->minusToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 155: {
+case 158: {
   AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
   node->tildeToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 156: {
+case 159: {
   AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
   node->notToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 158: {
+case 161: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Mul, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 159: {
+case 162: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Div, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 160: {
+case 163: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Mod, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 162: {
+case 165: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Add, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 163: {
+case 166: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Sub, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 165: {
+case 168: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::LShift, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 166: {
+case 169: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::RShift, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 167: {
+case 170: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::URShift, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 169: {
+case 172: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Lt, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 170: {
+case 173: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Gt, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 171: {
+case 174: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Le, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 172: {
+case 175: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Ge, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 173: {
+case 176: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::InstanceOf, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 174: {
+case 177: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::In, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 176: {
+case 179: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Lt, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 177: {
+case 180: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Gt, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 178: {
+case 181: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Le, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 179: {
+case 182: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
    QSOperator::Ge, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 180: {
+case 183: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::InstanceOf, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 182: {
+case 185: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Equal, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 183: {
+case 186: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::NotEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 184: {
+case 187: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::StrictEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 185: {
+case 188: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::StrictNotEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 187: {
+case 190: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Equal, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 188: {
+case 191: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::NotEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 189: {
+case 192: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::StrictEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 190: {
+case 193: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::StrictNotEqual, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 192: {
+case 195: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitAnd, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 194: {
+case 197: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitAnd, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 196: {
+case 199: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitXor, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 198: {
+case 201: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitXor, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 200: {
+case 203: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitOr, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 202: {
+case 205: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::BitOr, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 204: {
+case 207: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::And, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 206: {
+case 209: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::And, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 208: {
+case 211: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Or, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 210: {
+case 213: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     QSOperator::Or, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 212: {
+case 215: {
   AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
     sym(3).Expression, sym(5).Expression);
   node->questionToken = loc(2);
@@ -1183,7 +1199,7 @@ case 212: {
   sym(1).Node = node;
 } break;
 
-case 214: {
+case 217: {
   AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
     sym(3).Expression, sym(5).Expression);
   node->questionToken = loc(2);
@@ -1191,112 +1207,112 @@ case 214: {
   sym(1).Node = node;
 } break;
 
-case 216: {
+case 219: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     sym(2).ival, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 218: {
+case 221: {
   AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
     sym(2).ival, sym(3).Expression);
   node->operatorToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 219: {
+case 222: {
   sym(1).ival = QSOperator::Assign;
 } break;
 
-case 220: {
+case 223: {
   sym(1).ival = QSOperator::InplaceMul;
 } break;
 
-case 221: {
+case 224: {
   sym(1).ival = QSOperator::InplaceDiv;
 } break;
 
-case 222: {
+case 225: {
   sym(1).ival = QSOperator::InplaceMod;
 } break;
 
-case 223: {
+case 226: {
   sym(1).ival = QSOperator::InplaceAdd;
 } break;
 
-case 224: {
+case 227: {
   sym(1).ival = QSOperator::InplaceSub;
 } break;
 
-case 225: {
+case 228: {
   sym(1).ival = QSOperator::InplaceLeftShift;
 } break;
 
-case 226: {
+case 229: {
   sym(1).ival = QSOperator::InplaceRightShift;
 } break;
 
-case 227: {
+case 230: {
   sym(1).ival = QSOperator::InplaceURightShift;
 } break;
 
-case 228: {
+case 231: {
   sym(1).ival = QSOperator::InplaceAnd;
 } break;
 
-case 229: {
+case 232: {
   sym(1).ival = QSOperator::InplaceXor;
 } break;
 
-case 230: {
+case 233: {
   sym(1).ival = QSOperator::InplaceOr;
 } break;
 
-case 232: {
+case 235: {
   AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 233: {
+case 236: {
   sym(1).Node = 0;
 } break;
 
-case 236: {
+case 239: {
   AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 237: {
+case 240: {
   sym(1).Node = 0;
 } break;
 
-case 254: {
+case 257: {
   AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
   node->lbraceToken = loc(1);
   node->rbraceToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 255: {
+case 258: {
   sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
 } break;
 
-case 256: {
+case 259: {
   sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
 } break;
 
-case 257: {
+case 260: {
   sym(1).Node = 0;
 } break;
 
-case 258: {
+case 261: {
   sym(1).Node = sym(1).StatementList->finish ();
 } break;
 
-case 260: {
+case 263: {
   AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
      sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
   node->declarationKindToken = loc(1);
@@ -1304,76 +1320,76 @@ case 260: {
   sym(1).Node = node;
 } break;
 
-case 261: {
+case 264: {
   sym(1).ival = T_CONST;
 } break;
 
-case 262: {
+case 265: {
   sym(1).ival = T_VAR;
 } break;
 
-case 263: {
+case 266: {
   sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
 } break;
 
-case 264: {
+case 267: {
   AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
     sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
   node->commaToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 265: {
+case 268: {
   sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
 } break;
 
-case 266: {
+case 269: {
   sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
 } break;
 
-case 267: {
+case 270: {
   AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
   node->identifierToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 268: {
+case 271: {
   AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
   node->identifierToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 269: {
+case 272: {
   // ### TODO: AST for initializer
   sym(1) = sym(2);
 } break;
 
-case 270: {
+case 273: {
   sym(1).Node = 0;
 } break;
 
-case 272: {
+case 275: {
   // ### TODO: AST for initializer
   sym(1) = sym(2);
 } break;
 
-case 273: {
+case 276: {
   sym(1).Node = 0;
 } break;
 
-case 275: {
+case 278: {
   AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
   node->semicolonToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 277: {
+case 280: {
   AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 278: {
+case 281: {
   AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
   node->ifToken = loc(1);
   node->lparenToken = loc(2);
@@ -1382,7 +1398,7 @@ case 278: {
   sym(1).Node = node;
 } break;
 
-case 279: {
+case 282: {
   AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
   node->ifToken = loc(1);
   node->lparenToken = loc(2);
@@ -1390,7 +1406,7 @@ case 279: {
   sym(1).Node = node;
 } break;
 
-case 281: {
+case 284: {
   AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
   node->doToken = loc(1);
   node->whileToken = loc(3);
@@ -1400,7 +1416,7 @@ case 281: {
   sym(1).Node = node;
 } break;
 
-case 282: {
+case 285: {
   AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
   node->whileToken = loc(1);
   node->lparenToken = loc(2);
@@ -1408,7 +1424,7 @@ case 282: {
   sym(1).Node = node;
 } break;
 
-case 283: {
+case 286: {
   AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
     sym(5).Expression, sym(7).Expression, sym(9).Statement);
   node->forToken = loc(1);
@@ -1419,7 +1435,7 @@ case 283: {
   sym(1).Node = node;
 } break;
 
-case 284: {
+case 287: {
   AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
      sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
      sym(8).Expression, sym(10).Statement);
@@ -1432,7 +1448,7 @@ case 284: {
   sym(1).Node = node;
 } break;
 
-case 285: {
+case 288: {
   AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
     sym(5).Expression, sym(7).Statement);
   node->forToken = loc(1);
@@ -1442,7 +1458,7 @@ case 285: {
   sym(1).Node = node;
 } break;
 
-case 286: {
+case 289: {
   AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
     sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
   node->forToken = loc(1);
@@ -1453,14 +1469,14 @@ case 286: {
   sym(1).Node = node;
 } break;
 
-case 288: {
+case 291: {
   AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
   node->continueToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 290: {
+case 293: {
   AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
   node->continueToken = loc(1);
   node->identifierToken = loc(2);
@@ -1468,14 +1484,14 @@ case 290: {
   sym(1).Node = node;
 } break;
 
-case 292: {
+case 295: {
   AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
   node->breakToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 294: {
+case 297: {
   AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
   node->breakToken = loc(1);
   node->identifierToken = loc(2);
@@ -1483,14 +1499,14 @@ case 294: {
   sym(1).Node = node;
 } break;
 
-case 296: {
+case 299: {
   AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
   node->returnToken = loc(1);
   node->semicolonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 297: {
+case 300: {
   AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
   node->withToken = loc(1);
   node->lparenToken = loc(2);
@@ -1498,7 +1514,7 @@ case 297: {
   sym(1).Node = node;
 } break;
 
-case 298: {
+case 301: {
   AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
   node->switchToken = loc(1);
   node->lparenToken = loc(2);
@@ -1506,90 +1522,90 @@ case 298: {
   sym(1).Node = node;
 } break;
 
-case 299: {
+case 302: {
   AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
   node->lbraceToken = loc(1);
   node->rbraceToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 300: {
+case 303: {
   AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
   node->lbraceToken = loc(1);
   node->rbraceToken = loc(5);
   sym(1).Node = node;
 } break;
 
-case 301: {
+case 304: {
   sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
 } break;
 
-case 302: {
+case 305: {
   sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
 } break;
 
-case 303: {
+case 306: {
   sym(1).Node = 0;
 } break;
 
-case 304: {
+case 307: {
   sym(1).Node = sym(1).CaseClauses->finish ();
 } break;
 
-case 305: {
+case 308: {
   AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
   node->caseToken = loc(1);
   node->colonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 306: {
+case 309: {
   AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
   node->defaultToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
-case 307:
-case 308: {
+case 310:
+case 311: {
   AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
   node->identifierToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 309: {
+case 312: {
   AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
   node->identifierToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 311: {
+case 314: {
   AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
   node->throwToken = loc(1);
   node->semicolonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 312: {
+case 315: {
   AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 313: {
+case 316: {
   AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 314: {
+case 317: {
   AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 315: {
+case 318: {
   AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
   node->catchToken = loc(1);
   node->lparenToken = loc(2);
@@ -1598,20 +1614,20 @@ case 315: {
   sym(1).Node = node;
 } break;
 
-case 316: {
+case 319: {
   AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
   node->finallyToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 318: {
+case 321: {
   AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
   node->debuggerToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 319: {
+case 322: {
   AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
   node->functionToken = loc(1);
   node->identifierToken = loc(2);
@@ -1622,7 +1638,7 @@ case 319: {
   sym(1).Node = node;
 } break;
 
-case 320: {
+case 323: {
   AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
   node->functionToken = loc(1);
   if (sym(2).sval)
@@ -1634,56 +1650,56 @@ case 320: {
   sym(1).Node = node;
 } break;
 
-case 321: {
+case 324: {
   AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
   node->identifierToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 322: {
+case 325: {
   AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
   node->commaToken = loc(2);
   node->identifierToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 323: {
+case 326: {
   sym(1).Node = 0;
 } break;
 
-case 324: {
+case 327: {
   sym(1).Node = sym(1).FormalParameterList->finish ();
 } break;
 
-case 325: {
+case 328: {
   sym(1).Node = 0;
 } break;
 
-case 327: {
+case 330: {
   sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
 } break;
 
-case 328: {
+case 331: {
   sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
 } break;
 
-case 329: {
+case 332: {
   sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
 } break;
 
-case 330: {
+case 333: {
   sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
 } break;
 
-case 331: {
+case 334: {
   sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
 } break;
 
-case 332: {
+case 335: {
   sym(1).sval = 0;
 } break;
 
-case 334: {
+case 337: {
   sym(1).Node = 0;
 } break;
 
diff --git a/src/plugins/qmleditor/parser/qmljsparser_p.h b/src/plugins/qmleditor/parser/qmljsparser_p.h
index 573031fc2ea8f235b4d21b60def3b4e0c282a369..b35bec32b38da836e117dc6afaa4d3d9ee240f63 100644
--- a/src/plugins/qmleditor/parser/qmljsparser_p.h
+++ b/src/plugins/qmleditor/parser/qmljsparser_p.h
@@ -133,6 +133,7 @@ public:
     bool parse() { return parse(T_FEED_UI_PROGRAM); }
     bool parseStatement() { return parse(T_FEED_JS_STATEMENT); }
     bool parseExpression() { return parse(T_FEED_JS_EXPRESSION); }
+    bool parseUiObjectMember() { return parse(T_FEED_UI_OBJECT_MEMBER); }
 
     AST::UiProgram *ast() const
     { return AST::cast<AST::UiProgram *>(program); }
@@ -153,6 +154,14 @@ public:
         return program->expressionCast();
     }
 
+    AST::UiObjectMember *uiObjectMember() const
+    {
+        if (! program)
+            return 0;
+
+        return program->uiObjectMemberCast();
+    }
+
     QList<DiagnosticMessage> diagnosticMessages() const
     { return diagnostic_messages; }
 
@@ -222,9 +231,9 @@ protected:
 
 
 
-#define J_SCRIPT_REGEXPLITERAL_RULE1 69
+#define J_SCRIPT_REGEXPLITERAL_RULE1 72
 
-#define J_SCRIPT_REGEXPLITERAL_RULE2 70
+#define J_SCRIPT_REGEXPLITERAL_RULE2 73
 
 QT_QML_END_NAMESPACE