[jboss-svn-commits] JBL Code SVN: r26829 - in labs/jbossrules/branches/DroolsChance/drools-compiler: src/main/java and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 4 14:56:51 EDT 2009


Author: dsotty
Date: 2009-06-04 14:56:50 -0400 (Thu, 04 Jun 2009)
New Revision: 26829

Added:
   labs/jbossrules/branches/DroolsChance/drools-compiler/.antlr-eclipse
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/DRL.tokens
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/ DescrBuilderTree.g.backup
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.error
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.may14
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_folog-to-fologeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hohornlog-to-hohornlogeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hornlog-to-hornlogeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_naffolog-to-naffologeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_nafhornlog-to-hohornlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundfact.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatalog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.doc
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.pdf
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/datalog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/dishornlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/folog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/fologeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/framehohornlogeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlogeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlogeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/atom_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/connective_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/desc_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/equality_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/expr_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/frame_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/holog_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/naf_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/neg_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/performative_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/quantifier_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/rest_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/slot_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/term_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/uri_module.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafdatalog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffolog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffologeq.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafhornlog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafnegdatalog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/negdatalog.xsd
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/ruleml.sch
Modified:
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/xml/RuleMLDumper.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
Log:


Added: labs/jbossrules/branches/DroolsChance/drools-compiler/.antlr-eclipse
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/.antlr-eclipse	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/.antlr-eclipse	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?> 
+<settings>
+  <resource name='**ANTLR-ECLIPSE-PLUGIN**'>
+    <property name='pluginVersion' value='2.7.6' />
+  </resource>
+</settings>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/DRL.tokens
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/DRL.tokens	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/DRL.tokens	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,148 @@
+ACCUMULATE=122
+VT_ACCESSOR_ELEMENT=39
+VK_TYPE=103
+VT_DATA_TYPE=40
+DOT_STAR=107
+VK_APPROX=96
+VT_CONSTRID=49
+VK_OPERATOR=90
+VK_FUNCTION=74
+VK_GLOBAL=75
+VK_AND=81
+VT_TYPE=53
+EQUALS=114
+SH_STYLE_SINGLE_LINE_COMMENT=149
+VK_AUTO_FOCUS=58
+VK_SALIENCE=64
+VT_CUT=50
+VT_CONSTR_ATTRIBUTES=48
+VT_PATTERN_TYPE=41
+VT_FUNCTION_IMPORT=5
+VT_OR_INFIX=26
+EOL=143
+GREATER=128
+DOUBLE_AMPER=119
+VK_IMPORT=69
+VK_EQUIV=82
+NOT_EQUAL=132
+VK_ACTION=87
+VT_EQUIV=27
+VK_RULE=67
+LESS=130
+VT_SLOT=15
+VK_ARGS=102
+VK_OR=80
+VK_CUT=95
+VT_HEDGE=47
+VT_AND_PREFIX=23
+VK_AT=100
+NULL=134
+VK_FILTER=99
+BOOL=116
+VK_ENTAIL=97
+VK_QUERY=72
+VK_SUBJECT=93
+INT=117
+SEMICOLON=104
+VK_PRIOR=98
+VT_FUNCTION_ID=45
+VT_RHS_CHUNK=17
+VT_FACT_BINDING=34
+CUT=141
+VK_RULEFLOW_GROUP=61
+VK_ENTRY_POINT=77
+SINGLE_AMPER=125
+VT_PACKAGE_ID=42
+VK_RESULT=89
+VT_LABEL=8
+WS=144
+VK_NO_LOOP=57
+LEFT_CURLY=138
+VT_FACT=6
+VT_PATTERN=33
+VK_IN=79
+LEFT_PAREN=109
+LESS_EQUAL=131
+VT_IMPORT_ID=43
+VT_RULE_ID=12
+MISC=140
+FROM=120
+VT_XOR=28
+COLLECT=123
+EscapeSequence=145
+VK_ACTIVATION_GROUP=59
+VK_ENABLED=65
+C_STYLE_SINGLE_LINE_COMMENT=150
+VK_PACKAGE=70
+VK_END=91
+OVER=121
+VK_EXTEND=68
+RIGHT_SQUARE=136
+RIGHT_CURLY=139
+SINGLE_PIPE=124
+VT_FACT_OR=35
+VT_FIELD=37
+FLOAT=133
+VT_ACCUMULATE_ID_CLAUSE=30
+VK_EXISTS=84
+VK_FORANY=86
+ID=105
+VK_DATE_EXPIRES=55
+HexDigit=146
+VT_OR_PREFIX=24
+VK_EVAL=76
+APPROX=142
+VK_WEIGHT=94
+DOUBLE_PIPE=118
+AT=112
+VT_ARGS=52
+RIGHT_PAREN=111
+THEN=137
+VT_COMPILATION_UNIT=4
+VK_XOR=83
+VT_EXPRESSION_CHAIN=32
+COMMA=110
+EQUAL=127
+VT_BEHAVIOR=21
+VK_CONSTRID=101
+DOT=106
+VT_QUERY_ID=9
+VK_DIALECT=63
+VT_PRIOR=51
+VT_GLOBAL_ID=44
+VK_NOT=78
+VT_FROM_SOURCE=31
+VT_ENTRYPOINT_ID=13
+VK_DECLARE=73
+VT_PAREN_CHUNK=20
+VT_TYPE_DECLARE_ID=11
+VK_REVERSE=88
+VK_LOCK_ON_ACTIVE=56
+VK_TEMPLATE=71
+VT_AND_INFIX=25
+VT_RULE_ATTRIBUTES=16
+VK_DURATION=62
+VT_ACCESSOR_PATH=38
+MULTI_LINE_COMMENT=151
+VK_FORALL=85
+COLON=113
+VT_AND_IMPLICIT=22
+VT_ACCUMULATE_INIT_CLAUSE=29
+VT_CURLY_CHUNK=18
+VT_SLOT_ID=14
+VK_ATTRIBUTES=66
+WHEN=115
+UnicodeEscape=147
+VT_SQUARE_CHUNK=19
+VT_TEMPLATE_ID=10
+VK_DATE_EFFECTIVE=54
+VT_PARAM_LIST=46
+ARROW=126
+VT_BIND_FIELD=36
+VT_CONSTRAINTS=7
+VK_AGENDA_GROUP=60
+LEFT_SQUARE=135
+OctalEscape=148
+GREATER_EQUAL=129
+STRING=108
+VK_INIT=92

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+
 import java.beans.IntrospectionException;
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -278,6 +279,10 @@
         final PackageDescr pkg = parser.parse( reader );
         this.results.addAll( parser.getErrors() );
         if ( !parser.hasErrors() ) {
+        	        	
+        	System.out.println(this.getClass().toString()+" HACKED TO DO LEXICAL ANALYSIS");
+            pkg.setDependencies(doLexicalAnalysis(pkg));
+        	
             addPackage( pkg );
         }
         this.resource = null;

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-23 11:52:08
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-06-01 02:28:41
 
 	package org.drools.lang;
 
@@ -13,156 +13,157 @@
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
     public static final int VT_ACCESSOR_ELEMENT=40;
-    public static final int ACCUMULATE=124;
+    public static final int ACCUMULATE=125;
     public static final int VT_DATA_TYPE=41;
-    public static final int DOT_STAR=109;
-    public static final int VK_APPROX=98;
-    public static final int VK_OPERATOR=92;
+    public static final int DOT_STAR=110;
+    public static final int VK_APPROX=99;
+    public static final int VK_OPERATOR=93;
     public static final int VT_CONSTRID=48;
-    public static final int VK_FUNCTION=75;
-    public static final int VK_GLOBAL=76;
-    public static final int VK_AND=82;
-    public static final int EQUALS=116;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
-    public static final int VK_AUTO_FOCUS=59;
-    public static final int VK_SALIENCE=65;
+    public static final int VK_FUNCTION=76;
+    public static final int VK_GLOBAL=77;
+    public static final int VK_AND=83;
+    public static final int EQUALS=117;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_AUTO_FOCUS=60;
+    public static final int VK_SALIENCE=66;
     public static final int EOF=-1;
     public static final int VT_CUT=51;
     public static final int VT_CONSTR_ATTRIBUTES=50;
     public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int DOUBLE_AMPER=121;
-    public static final int GREATER=130;
-    public static final int EOL=144;
-    public static final int VK_EQUIV=83;
-    public static final int VK_IMPORT=70;
-    public static final int NOT_EQUAL=134;
-    public static final int VK_ACTION=89;
+    public static final int DOUBLE_AMPER=122;
+    public static final int GREATER=131;
+    public static final int EOL=145;
+    public static final int VK_EQUIV=84;
+    public static final int VK_IMPORT=71;
+    public static final int NOT_EQUAL=135;
+    public static final int VK_ACTION=90;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=68;
-    public static final int LESS=132;
+    public static final int VK_RULE=69;
+    public static final int LESS=133;
     public static final int VT_SLOT=15;
-    public static final int VK_OR=81;
-    public static final int VK_ARGS=104;
+    public static final int VK_OR=82;
+    public static final int VK_ARGS=105;
     public static final int VT_HEDGE=49;
-    public static final int VK_CUT=97;
+    public static final int VK_CUT=98;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=102;
-    public static final int VK_FILTER=101;
-    public static final int NULL=136;
-    public static final int BOOL=118;
-    public static final int VK_ENTAIL=99;
+    public static final int VK_AT=103;
+    public static final int VK_FILTER=102;
+    public static final int NULL=137;
+    public static final int BOOL=119;
+    public static final int VK_ENTAIL=100;
     public static final int VT_KIND=54;
-    public static final int VK_QUERY=73;
-    public static final int VK_SUBJECT=95;
-    public static final int INT=119;
-    public static final int SEMICOLON=106;
-    public static final int VK_PRIOR=100;
+    public static final int VK_QUERY=74;
+    public static final int VK_SUBJECT=96;
+    public static final int INT=120;
+    public static final int SEMICOLON=107;
+    public static final int VK_PRIOR=101;
     public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
     public static final int VT_FACT_BINDING=35;
-    public static final int CUT=150;
-    public static final int VK_RULEFLOW_GROUP=62;
-    public static final int VK_ENTRY_POINT=78;
-    public static final int SINGLE_AMPER=127;
+    public static final int CUT=151;
+    public static final int VK_RULEFLOW_GROUP=63;
+    public static final int VK_ENTRY_POINT=79;
+    public static final int SINGLE_AMPER=128;
+    public static final int VK_RESULT=92;
     public static final int VT_PACKAGE_ID=43;
-    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=145;
-    public static final int VK_NO_LOOP=58;
-    public static final int LEFT_CURLY=140;
+    public static final int WS=146;
+    public static final int VK_NO_LOOP=59;
+    public static final int LEFT_CURLY=141;
     public static final int VT_FACT=6;
     public static final int VT_PATTERN=34;
-    public static final int VK_IN=80;
-    public static final int LEFT_PAREN=111;
-    public static final int LESS_EQUAL=133;
+    public static final int VK_IN=81;
+    public static final int LEFT_PAREN=112;
+    public static final int LESS_EQUAL=134;
     public static final int VT_RULE_ID=12;
     public static final int VT_IMPORT_ID=44;
-    public static final int MISC=142;
-    public static final int FROM=122;
+    public static final int MISC=143;
+    public static final int FROM=123;
     public static final int VT_XOR=28;
-    public static final int COLLECT=125;
-    public static final int EscapeSequence=146;
-    public static final int VK_ACTIVATION_GROUP=60;
-    public static final int VK_ENABLED=66;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
-    public static final int VK_END=93;
-    public static final int VK_PACKAGE=71;
-    public static final int OVER=123;
-    public static final int VK_EXTEND=69;
-    public static final int RIGHT_SQUARE=138;
-    public static final int RIGHT_CURLY=141;
-    public static final int SINGLE_PIPE=126;
+    public static final int COLLECT=126;
+    public static final int EscapeSequence=147;
+    public static final int VK_ACTIVATION_GROUP=61;
+    public static final int VK_ENABLED=67;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=153;
+    public static final int VK_END=94;
+    public static final int VK_PACKAGE=72;
+    public static final int OVER=124;
+    public static final int VK_EXTEND=70;
+    public static final int RIGHT_SQUARE=139;
+    public static final int RIGHT_CURLY=142;
+    public static final int SINGLE_PIPE=127;
     public static final int VT_FACT_OR=36;
-    public static final int VK_IMPLIES=85;
+    public static final int VK_IMPLIES=86;
     public static final int VT_FIELD=38;
-    public static final int FLOAT=135;
+    public static final int FLOAT=136;
     public static final int VT_ACCUMULATE_ID_CLAUSE=31;
-    public static final int VK_EXISTS=86;
-    public static final int VK_FORANY=88;
-    public static final int VK_DATE_EXPIRES=56;
-    public static final int ID=107;
-    public static final int HexDigit=147;
-    public static final int VK_EVAL=77;
+    public static final int VK_EXISTS=87;
+    public static final int VK_FORANY=89;
+    public static final int VK_DATE_EXPIRES=57;
+    public static final int ID=108;
+    public static final int HexDigit=148;
+    public static final int VK_EVAL=78;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_WEIGHT=96;
-    public static final int APPROX=143;
-    public static final int AT=114;
-    public static final int DOUBLE_PIPE=120;
+    public static final int VK_WEIGHT=97;
+    public static final int APPROX=144;
+    public static final int AT=115;
+    public static final int DOUBLE_PIPE=121;
     public static final int VT_ARGS=53;
-    public static final int RIGHT_PAREN=113;
+    public static final int RIGHT_PAREN=114;
     public static final int VT_IMPLIES=29;
-    public static final int VK_XOR=84;
+    public static final int VK_XOR=85;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int THEN=139;
+    public static final int THEN=140;
     public static final int VT_EXPRESSION_CHAIN=33;
-    public static final int COMMA=112;
-    public static final int EQUAL=129;
+    public static final int COMMA=113;
+    public static final int EQUAL=130;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=103;
-    public static final int VK_DIALECT=64;
+    public static final int VK_CONSTRID=104;
+    public static final int VK_DIALECT=65;
     public static final int VT_QUERY_ID=9;
-    public static final int DOT=108;
+    public static final int DOT=109;
     public static final int VT_PRIOR=52;
     public static final int VT_GLOBAL_ID=45;
-    public static final int VK_NOT=79;
+    public static final int VK_NOT=80;
+    public static final int VT_CONSEQUENCES=55;
     public static final int VT_FROM_SOURCE=32;
-    public static final int VK_DECLARE=74;
+    public static final int VK_DECLARE=75;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=90;
-    public static final int VK_LOCK_ON_ACTIVE=57;
-    public static final int VK_TEMPLATE=72;
-    public static final int VK_DURATION=63;
+    public static final int VK_REVERSE=91;
+    public static final int VK_LOCK_ON_ACTIVE=58;
+    public static final int VK_TEMPLATE=73;
+    public static final int VK_DURATION=64;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int VT_AND_INFIX=25;
     public static final int VT_ACCESSOR_PATH=39;
-    public static final int MULTI_LINE_COMMENT=153;
-    public static final int VK_FORALL=87;
-    public static final int COLON=115;
+    public static final int MULTI_LINE_COMMENT=154;
+    public static final int VK_FORALL=88;
+    public static final int COLON=116;
     public static final int VT_AND_IMPLICIT=22;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=67;
-    public static final int WHEN=117;
-    public static final int UnicodeEscape=148;
+    public static final int VK_ATTRIBUTES=68;
+    public static final int WHEN=118;
+    public static final int UnicodeEscape=149;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_DATE_EFFECTIVE=55;
+    public static final int VK_DATE_EFFECTIVE=56;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VT_PARAM_LIST=47;
-    public static final int ARROW=128;
+    public static final int ARROW=129;
     public static final int VT_BIND_FIELD=37;
-    public static final int VK_AGENDA_GROUP=61;
+    public static final int VK_AGENDA_GROUP=62;
     public static final int VT_CONSTRAINTS=7;
-    public static final int LEFT_SQUARE=137;
-    public static final int GREATER_EQUAL=131;
-    public static final int OctalEscape=149;
-    public static final int VK_KIND=105;
-    public static final int VK_INIT=94;
-    public static final int STRING=110;
+    public static final int LEFT_SQUARE=138;
+    public static final int GREATER_EQUAL=132;
+    public static final int OctalEscape=150;
+    public static final int VK_KIND=106;
+    public static final int VK_INIT=95;
+    public static final int STRING=111;
 
     	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
     	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
@@ -214,10 +215,10 @@
         try {
             int _type = WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2991:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2991:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2991:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -249,28 +250,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:19: ' '
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2991:19: ' '
             	    {
             	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2175:19: '\\t'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2992:19: '\\t'
             	    {
             	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2176:19: '\\f'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2993:19: '\\f'
             	    {
             	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2177:19: EOL
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2994:19: EOL
             	    {
             	    mEOL(); if (state.failed) return ;
 
@@ -304,10 +305,10 @@
     // $ANTLR start "EOL"
     public final void mEOL() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3000:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3001:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3001:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -332,7 +333,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3001:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (state.failed) return ;
 
@@ -340,14 +341,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:25: '\\r'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3002:25: '\\r'
                     {
                     match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2186:25: '\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3003:25: '\\n'
                     {
                     match('\n'); if (state.failed) return ;
 
@@ -370,10 +371,10 @@
         try {
             int _type = INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:4: ( '-' )? ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -382,7 +383,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -391,7 +392,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -405,7 +406,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3008:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -438,10 +439,10 @@
         try {
             int _type = FLOAT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -450,7 +451,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -459,7 +460,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -473,7 +474,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -491,7 +492,7 @@
             } while (true);
 
             match('.'); if (state.failed) return ;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:26: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -505,7 +506,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:27: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3012:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -538,7 +539,7 @@
         try {
             int _type = STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -557,13 +558,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -579,14 +580,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:15: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2199:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3016:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -615,13 +616,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -637,14 +638,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:16: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3017:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -685,8 +686,8 @@
     // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2204:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2204:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3021:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3021:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
@@ -710,7 +711,7 @@
     // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3025:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -797,7 +798,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3025:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
                     match('\\'); if (state.failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='$'||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='t')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
@@ -814,14 +815,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:9: UnicodeEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3029:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2213:9: OctalEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3030:9: OctalEscape
                     {
                     mOctalEscape(); if (state.failed) return ;
 
@@ -838,7 +839,7 @@
     // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -886,25 +887,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:14: ( '0' .. '3' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:15: '0' .. '3'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:14: ( '0' .. '3' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:25: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:36: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2218:37: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:36: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3035:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -914,18 +915,18 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3036:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:14: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3036:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3036:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:25: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3036:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3036:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -935,11 +936,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:9: '\\\\' ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3037:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:14: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3037:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3037:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -959,8 +960,8 @@
     // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2225:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2225:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3042:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3042:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (state.failed) return ;
             match('u'); if (state.failed) return ;
@@ -982,10 +983,10 @@
         try {
             int _type = BOOL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2229:2: ( ( 'true' | 'false' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2229:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3046:2: ( ( 'true' | 'false' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3046:4: ( 'true' | 'false' )
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2229:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3046:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1004,7 +1005,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2229:5: 'true'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3046:5: 'true'
                     {
                     match("true"); if (state.failed) return ;
 
@@ -1012,7 +1013,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2229:12: 'false'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3046:12: 'false'
                     {
                     match("false"); if (state.failed) return ;
 
@@ -1038,8 +1039,8 @@
         try {
             int _type = ACCUMULATE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2233:2: ( 'accumulate' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2233:4: 'accumulate'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3050:2: ( 'accumulate' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3050:4: 'accumulate'
             {
             match("accumulate"); if (state.failed) return ;
 
@@ -1059,8 +1060,8 @@
         try {
             int _type = COLLECT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2237:2: ( 'collect' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2237:4: 'collect'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3054:2: ( 'collect' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3054:4: 'collect'
             {
             match("collect"); if (state.failed) return ;
 
@@ -1080,8 +1081,8 @@
         try {
             int _type = FROM;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2241:2: ( 'from' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2241:4: 'from'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3058:2: ( 'from' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3058:4: 'from'
             {
             match("from"); if (state.failed) return ;
 
@@ -1101,8 +1102,8 @@
         try {
             int _type = NULL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2245:2: ( 'null' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2245:4: 'null'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3062:2: ( 'null' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3062:4: 'null'
             {
             match("null"); if (state.failed) return ;
 
@@ -1122,8 +1123,8 @@
         try {
             int _type = OVER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2249:2: ( 'over' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2249:4: 'over'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3066:2: ( 'over' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3066:4: 'over'
             {
             match("over"); if (state.failed) return ;
 
@@ -1143,8 +1144,8 @@
         try {
             int _type = THEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:2: ( 'then' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:4: 'then'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3070:2: ( 'then' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3070:4: 'then'
             {
             match("then"); if (state.failed) return ;
 
@@ -1164,8 +1165,8 @@
         try {
             int _type = WHEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:2: ( 'when' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:4: 'when'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3074:2: ( 'when' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3074:4: 'when'
             {
             match("when"); if (state.failed) return ;
 
@@ -1185,8 +1186,8 @@
         try {
             int _type = APPROX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2262:3: ( '~' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2262:5: '~'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3079:3: ( '~' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3079:5: '~'
             {
             match('~'); if (state.failed) return ;
 
@@ -1205,8 +1206,8 @@
         try {
             int _type = CUT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2266:3: ( '!' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2266:5: '!'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3083:3: ( '!' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3083:5: '!'
             {
             match('!'); if (state.failed) return ;
 
@@ -1225,8 +1226,8 @@
         try {
             int _type = AT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2270:4: ( '@' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2270:6: '@'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3087:4: ( '@' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3087:6: '@'
             {
             match('@'); if (state.failed) return ;
 
@@ -1245,8 +1246,8 @@
         try {
             int _type = EQUALS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2274:2: ( '=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2274:4: '='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3091:2: ( '=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3091:4: '='
             {
             match('='); if (state.failed) return ;
 
@@ -1265,8 +1266,8 @@
         try {
             int _type = SEMICOLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2278:2: ( ';' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2278:4: ';'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3095:2: ( ';' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3095:4: ';'
             {
             match(';'); if (state.failed) return ;
 
@@ -1285,8 +1286,8 @@
         try {
             int _type = DOT_STAR;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2282:2: ( '.*' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2282:4: '.*'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3099:2: ( '.*' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3099:4: '.*'
             {
             match(".*"); if (state.failed) return ;
 
@@ -1306,8 +1307,8 @@
         try {
             int _type = COLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2286:2: ( ':' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2286:4: ':'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3103:2: ( ':' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3103:4: ':'
             {
             match(':'); if (state.failed) return ;
 
@@ -1326,8 +1327,8 @@
         try {
             int _type = EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2290:2: ( '==' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2290:4: '=='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3107:2: ( '==' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3107:4: '=='
             {
             match("=="); if (state.failed) return ;
 
@@ -1347,8 +1348,8 @@
         try {
             int _type = NOT_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2294:2: ( '!=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2294:4: '!='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3111:2: ( '!=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3111:4: '!='
             {
             match("!="); if (state.failed) return ;
 
@@ -1368,8 +1369,8 @@
         try {
             int _type = GREATER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2298:2: ( '>' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2298:4: '>'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3115:2: ( '>' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3115:4: '>'
             {
             match('>'); if (state.failed) return ;
 
@@ -1388,8 +1389,8 @@
         try {
             int _type = GREATER_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2302:2: ( '>=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2302:4: '>='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3119:2: ( '>=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3119:4: '>='
             {
             match(">="); if (state.failed) return ;
 
@@ -1409,8 +1410,8 @@
         try {
             int _type = LESS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2306:2: ( '<' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2306:4: '<'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3123:2: ( '<' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3123:4: '<'
             {
             match('<'); if (state.failed) return ;
 
@@ -1429,8 +1430,8 @@
         try {
             int _type = LESS_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2310:2: ( '<=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2310:4: '<='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3127:2: ( '<=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3127:4: '<='
             {
             match("<="); if (state.failed) return ;
 
@@ -1450,8 +1451,8 @@
         try {
             int _type = ARROW;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2314:2: ( '->' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2314:4: '->'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3131:2: ( '->' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3131:4: '->'
             {
             match("->"); if (state.failed) return ;
 
@@ -1471,7 +1472,7 @@
         try {
             int _type = ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2318:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3137:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1490,7 +1491,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2318:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3137:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     {
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                         input.consume();
@@ -1502,7 +1503,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2318:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3137:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1540,7 +1541,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:4: '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3138:4: '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`'
                     {
                     match('`'); if (state.failed) return ;
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
@@ -1553,7 +1554,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3138:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1615,8 +1616,8 @@
         try {
             int _type = LEFT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2324:9: ( '(' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2324:11: '('
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3143:9: ( '(' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3143:11: '('
             {
             match('('); if (state.failed) return ;
 
@@ -1635,8 +1636,8 @@
         try {
             int _type = RIGHT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2328:9: ( ')' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2328:11: ')'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3147:9: ( ')' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3147:11: ')'
             {
             match(')'); if (state.failed) return ;
 
@@ -1655,8 +1656,8 @@
         try {
             int _type = LEFT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2332:9: ( '[' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2332:11: '['
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3151:9: ( '[' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3151:11: '['
             {
             match('['); if (state.failed) return ;
 
@@ -1675,8 +1676,8 @@
         try {
             int _type = RIGHT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2336:9: ( ']' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2336:11: ']'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3155:9: ( ']' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3155:11: ']'
             {
             match(']'); if (state.failed) return ;
 
@@ -1695,8 +1696,8 @@
         try {
             int _type = LEFT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2340:9: ( '{' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2340:11: '{'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3159:9: ( '{' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3159:11: '{'
             {
             match('{'); if (state.failed) return ;
 
@@ -1715,8 +1716,8 @@
         try {
             int _type = RIGHT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2344:9: ( '}' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2344:11: '}'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3163:9: ( '}' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3163:11: '}'
             {
             match('}'); if (state.failed) return ;
 
@@ -1735,8 +1736,8 @@
         try {
             int _type = COMMA;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2347:7: ( ',' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2347:9: ','
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3166:7: ( ',' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3166:9: ','
             {
             match(','); if (state.failed) return ;
 
@@ -1755,8 +1756,8 @@
         try {
             int _type = DOT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2350:5: ( '.' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2350:7: '.'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3169:5: ( '.' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3169:7: '.'
             {
             match('.'); if (state.failed) return ;
 
@@ -1775,8 +1776,8 @@
         try {
             int _type = DOUBLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2354:2: ( '&&' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2354:4: '&&'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3173:2: ( '&&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3173:4: '&&'
             {
             match("&&"); if (state.failed) return ;
 
@@ -1796,8 +1797,8 @@
         try {
             int _type = DOUBLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2358:2: ( '||' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2358:4: '||'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3177:2: ( '||' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3177:4: '||'
             {
             match("||"); if (state.failed) return ;
 
@@ -1817,8 +1818,8 @@
         try {
             int _type = SINGLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2362:3: ( '&' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2362:5: '&'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3181:3: ( '&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3181:5: '&'
             {
             match('&'); if (state.failed) return ;
 
@@ -1837,8 +1838,8 @@
         try {
             int _type = SINGLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2366:3: ( '|' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2366:5: '|'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3185:3: ( '|' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3185:5: '|'
             {
             match('|'); if (state.failed) return ;
 
@@ -1857,11 +1858,11 @@
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2370:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2370:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3189:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3189:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (state.failed) return ;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2370:8: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3189:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1880,7 +1881,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2370:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3189:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1912,12 +1913,12 @@
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2376:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2376:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3195:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3195:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (state.failed) return ;
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2376:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3195:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1936,7 +1937,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2376:36: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3195:36: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1968,12 +1969,12 @@
         try {
             int _type = MULTI_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2381:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2381:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3200:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3200:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (state.failed) return ;
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2381:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3200:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1998,7 +1999,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2381:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3200:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -2031,7 +2032,7 @@
         try {
             int _type = MISC;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2385:7: ( '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3204:7: ( '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' )
             // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( (input.LA(1)>='$' && input.LA(1)<='%')||input.LA(1)=='\''||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='?'||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_') ) {
@@ -2368,8 +2369,8 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:14: ( '\\r\\n' )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:16: '\\r\\n'
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3001:14: ( '\\r\\n' )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:3001:16: '\\r\\n'
         {
         match("\r\n"); if (state.failed) return ;
 

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-23 11:52:06
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-06-01 02:28:40
 
 	package org.drools.lang;
 	
@@ -18,159 +18,160 @@
 
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_KIND", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO!
 _FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_KIND", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "TH!
 EN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX", "EOL", "WS", "Esca
peSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_KIND", "VT_CONSEQUENCES", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK!
 _NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_KIND", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", !
 "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX",
 "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int ACCUMULATE=124;
+    public static final int ACCUMULATE=125;
     public static final int VT_ACCESSOR_ELEMENT=40;
     public static final int VT_DATA_TYPE=41;
-    public static final int DOT_STAR=109;
-    public static final int VK_APPROX=98;
-    public static final int VK_OPERATOR=92;
+    public static final int DOT_STAR=110;
+    public static final int VK_APPROX=99;
+    public static final int VK_OPERATOR=93;
     public static final int VT_CONSTRID=48;
-    public static final int VK_FUNCTION=75;
-    public static final int VK_GLOBAL=76;
-    public static final int VK_AND=82;
-    public static final int EQUALS=116;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
-    public static final int VK_AUTO_FOCUS=59;
-    public static final int VK_SALIENCE=65;
+    public static final int VK_FUNCTION=76;
+    public static final int VK_GLOBAL=77;
+    public static final int VK_AND=83;
+    public static final int EQUALS=117;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_AUTO_FOCUS=60;
+    public static final int VK_SALIENCE=66;
     public static final int EOF=-1;
     public static final int VT_CUT=51;
     public static final int VT_CONSTR_ATTRIBUTES=50;
     public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int EOL=144;
-    public static final int GREATER=130;
-    public static final int DOUBLE_AMPER=121;
-    public static final int VK_IMPORT=70;
-    public static final int VK_EQUIV=83;
-    public static final int NOT_EQUAL=134;
-    public static final int VK_ACTION=89;
+    public static final int EOL=145;
+    public static final int GREATER=131;
+    public static final int DOUBLE_AMPER=122;
+    public static final int VK_IMPORT=71;
+    public static final int VK_EQUIV=84;
+    public static final int NOT_EQUAL=135;
+    public static final int VK_ACTION=90;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=68;
-    public static final int LESS=132;
+    public static final int VK_RULE=69;
+    public static final int LESS=133;
     public static final int VT_SLOT=15;
-    public static final int VK_ARGS=104;
-    public static final int VK_OR=81;
-    public static final int VK_CUT=97;
+    public static final int VK_ARGS=105;
+    public static final int VK_OR=82;
+    public static final int VK_CUT=98;
     public static final int VT_HEDGE=49;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=102;
-    public static final int NULL=136;
-    public static final int VK_FILTER=101;
-    public static final int BOOL=118;
-    public static final int VK_ENTAIL=99;
+    public static final int VK_AT=103;
+    public static final int NULL=137;
+    public static final int VK_FILTER=102;
+    public static final int BOOL=119;
+    public static final int VK_ENTAIL=100;
     public static final int VT_KIND=54;
-    public static final int VK_QUERY=73;
-    public static final int VK_SUBJECT=95;
-    public static final int INT=119;
-    public static final int SEMICOLON=106;
-    public static final int VK_PRIOR=100;
+    public static final int VK_QUERY=74;
+    public static final int VK_SUBJECT=96;
+    public static final int INT=120;
+    public static final int SEMICOLON=107;
+    public static final int VK_PRIOR=101;
     public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
     public static final int VT_FACT_BINDING=35;
-    public static final int CUT=150;
-    public static final int VK_RULEFLOW_GROUP=62;
-    public static final int VK_ENTRY_POINT=78;
-    public static final int SINGLE_AMPER=127;
+    public static final int CUT=151;
+    public static final int VK_RULEFLOW_GROUP=63;
+    public static final int VK_ENTRY_POINT=79;
+    public static final int SINGLE_AMPER=128;
+    public static final int VK_RESULT=92;
     public static final int VT_PACKAGE_ID=43;
-    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=145;
-    public static final int VK_NO_LOOP=58;
-    public static final int LEFT_CURLY=140;
+    public static final int WS=146;
+    public static final int VK_NO_LOOP=59;
+    public static final int LEFT_CURLY=141;
     public static final int VT_FACT=6;
     public static final int VT_PATTERN=34;
-    public static final int VK_IN=80;
-    public static final int LEFT_PAREN=111;
-    public static final int LESS_EQUAL=133;
+    public static final int VK_IN=81;
+    public static final int LEFT_PAREN=112;
+    public static final int LESS_EQUAL=134;
     public static final int VT_RULE_ID=12;
     public static final int VT_IMPORT_ID=44;
-    public static final int MISC=142;
-    public static final int FROM=122;
+    public static final int MISC=143;
+    public static final int FROM=123;
     public static final int VT_XOR=28;
-    public static final int COLLECT=125;
-    public static final int EscapeSequence=146;
-    public static final int VK_ACTIVATION_GROUP=60;
-    public static final int VK_ENABLED=66;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
-    public static final int VK_END=93;
-    public static final int VK_PACKAGE=71;
-    public static final int OVER=123;
-    public static final int VK_EXTEND=69;
-    public static final int RIGHT_SQUARE=138;
-    public static final int RIGHT_CURLY=141;
-    public static final int SINGLE_PIPE=126;
+    public static final int COLLECT=126;
+    public static final int EscapeSequence=147;
+    public static final int VK_ACTIVATION_GROUP=61;
+    public static final int VK_ENABLED=67;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=153;
+    public static final int VK_END=94;
+    public static final int VK_PACKAGE=72;
+    public static final int OVER=124;
+    public static final int VK_EXTEND=70;
+    public static final int RIGHT_SQUARE=139;
+    public static final int RIGHT_CURLY=142;
+    public static final int SINGLE_PIPE=127;
     public static final int VT_FACT_OR=36;
-    public static final int VK_IMPLIES=85;
+    public static final int VK_IMPLIES=86;
     public static final int VT_FIELD=38;
-    public static final int FLOAT=135;
+    public static final int FLOAT=136;
     public static final int VT_ACCUMULATE_ID_CLAUSE=31;
-    public static final int VK_EXISTS=86;
-    public static final int VK_FORANY=88;
-    public static final int ID=107;
-    public static final int VK_DATE_EXPIRES=56;
-    public static final int HexDigit=147;
+    public static final int VK_EXISTS=87;
+    public static final int VK_FORANY=89;
+    public static final int ID=108;
+    public static final int VK_DATE_EXPIRES=57;
+    public static final int HexDigit=148;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_EVAL=77;
-    public static final int APPROX=143;
-    public static final int VK_WEIGHT=96;
-    public static final int DOUBLE_PIPE=120;
-    public static final int AT=114;
+    public static final int VK_EVAL=78;
+    public static final int APPROX=144;
+    public static final int VK_WEIGHT=97;
+    public static final int DOUBLE_PIPE=121;
+    public static final int AT=115;
     public static final int VT_ARGS=53;
-    public static final int RIGHT_PAREN=113;
+    public static final int RIGHT_PAREN=114;
     public static final int VT_IMPLIES=29;
-    public static final int THEN=139;
+    public static final int THEN=140;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int VK_XOR=84;
+    public static final int VK_XOR=85;
     public static final int VT_EXPRESSION_CHAIN=33;
-    public static final int COMMA=112;
-    public static final int EQUAL=129;
+    public static final int COMMA=113;
+    public static final int EQUAL=130;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=103;
-    public static final int DOT=108;
+    public static final int VK_CONSTRID=104;
+    public static final int DOT=109;
     public static final int VT_QUERY_ID=9;
-    public static final int VK_DIALECT=64;
+    public static final int VK_DIALECT=65;
     public static final int VT_PRIOR=52;
     public static final int VT_GLOBAL_ID=45;
-    public static final int VK_NOT=79;
+    public static final int VT_CONSEQUENCES=55;
+    public static final int VK_NOT=80;
     public static final int VT_FROM_SOURCE=32;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_DECLARE=74;
+    public static final int VK_DECLARE=75;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=90;
-    public static final int VK_LOCK_ON_ACTIVE=57;
-    public static final int VK_TEMPLATE=72;
+    public static final int VK_REVERSE=91;
+    public static final int VK_LOCK_ON_ACTIVE=58;
+    public static final int VK_TEMPLATE=73;
     public static final int VT_AND_INFIX=25;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int VK_DURATION=63;
+    public static final int VK_DURATION=64;
     public static final int VT_ACCESSOR_PATH=39;
-    public static final int MULTI_LINE_COMMENT=153;
-    public static final int VK_FORALL=87;
-    public static final int COLON=115;
+    public static final int MULTI_LINE_COMMENT=154;
+    public static final int VK_FORALL=88;
+    public static final int COLON=116;
     public static final int VT_AND_IMPLICIT=22;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=67;
-    public static final int WHEN=117;
-    public static final int UnicodeEscape=148;
+    public static final int VK_ATTRIBUTES=68;
+    public static final int WHEN=118;
+    public static final int UnicodeEscape=149;
     public static final int VT_SQUARE_CHUNK=19;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DATE_EFFECTIVE=55;
+    public static final int VK_DATE_EFFECTIVE=56;
     public static final int VT_PARAM_LIST=47;
-    public static final int ARROW=128;
+    public static final int ARROW=129;
     public static final int VT_BIND_FIELD=37;
     public static final int VT_CONSTRAINTS=7;
-    public static final int VK_AGENDA_GROUP=61;
-    public static final int LEFT_SQUARE=137;
-    public static final int OctalEscape=149;
-    public static final int GREATER_EQUAL=131;
-    public static final int VK_KIND=105;
-    public static final int STRING=110;
-    public static final int VK_INIT=94;
+    public static final int VK_AGENDA_GROUP=62;
+    public static final int LEFT_SQUARE=138;
+    public static final int OctalEscape=150;
+    public static final int GREATER_EQUAL=132;
+    public static final int VK_KIND=106;
+    public static final int STRING=111;
+    public static final int VK_INIT=95;
 
     // delegates
     // delegators
@@ -452,7 +453,7 @@
     };
 
     // $ANTLR start "compilation_unit"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
     public final DRLParser.compilation_unit_return compilation_unit() throws RecognitionException {
         DRLParser.compilation_unit_return retval = new DRLParser.compilation_unit_return();
         retval.start = input.LT(1);
@@ -470,17 +471,17 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( package_statement )? ( statement )* EOF
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:4: ( package_statement )? ( statement )* EOF
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( package_statement )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:4: ( package_statement )?
             int alt1=2;
             alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: package_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:440:4: package_statement
                     {
-                    pushFollow(FOLLOW_package_statement_in_compilation_unit538);
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit551);
                     package_statement1=package_statement();
 
                     state._fsp--;
@@ -492,7 +493,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:3: ( statement )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:441:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
@@ -505,9 +506,9 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:3: statement
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:441:3: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_compilation_unit543);
+            	    pushFollow(FOLLOW_statement_in_compilation_unit556);
             	    statement2=statement();
 
             	    state._fsp--;
@@ -522,13 +523,13 @@
                 }
             } while (true);
 
-            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit548); if (state.failed) return retval; 
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit561); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_EOF.add(EOF3);
 
 
 
             // AST REWRITE
-            // elements: statement, package_statement
+            // elements: package_statement, statement
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -538,20 +539,20 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 439:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 443:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:443:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:28: ( package_statement )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:443:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_package_statement.nextTree());
 
                 }
                 stream_package_statement.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:47: ( statement )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:443:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.nextTree());
 
@@ -626,7 +627,7 @@
     };
 
     // $ANTLR start "package_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:478:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
     public final DRLParser.package_statement_return package_statement() throws RecognitionException {
         DRLParser.package_statement_return retval = new DRLParser.package_statement_return();
         retval.start = input.LT(1);
@@ -645,22 +646,22 @@
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
          pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:4: package_key package_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:4: package_key package_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_package_key_in_package_statement603);
+            pushFollow(FOLLOW_package_key_in_package_statement616);
             package_key4=package_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_key.add(package_key4.getTree());
-            pushFollow(FOLLOW_package_id_in_package_statement607);
+            pushFollow(FOLLOW_package_id_in_package_statement620);
             package_id5=package_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:14: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -669,9 +670,9 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:14: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement609); if (state.failed) return retval; 
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement622); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
@@ -686,7 +687,7 @@
 
 
             // AST REWRITE
-            // elements: package_id, package_key
+            // elements: package_key, package_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -696,9 +697,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 484:3: -> ^( package_key package_id )
+            // 488:3: -> ^( package_key package_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:6: ^( package_key package_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
@@ -742,7 +743,7 @@
     };
 
     // $ANTLR start "package_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:487:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
     public final DRLParser.package_id_return package_id() throws RecognitionException {
         DRLParser.package_id_return retval = new DRLParser.package_id_return();
         retval.start = input.LT(1);
@@ -757,16 +758,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:4: id+= ID (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_id636); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id649); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -779,15 +780,15 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id642); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id655); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id646); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id659); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -819,9 +820,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 491:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 495:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:6: ^( VT_PACKAGE_ID ( ID )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
@@ -869,7 +870,7 @@
     };
 
     // $ANTLR start "statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
     public final DRLParser.statement_return statement() throws RecognitionException {
         DRLParser.statement_return retval = new DRLParser.statement_return();
         retval.start = input.LT(1);
@@ -897,16 +898,16 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
             int alt5=9;
             alt5 = dfa5.predict(input);
             switch (alt5) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:5: rule_attribute
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:5: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_attribute_in_statement684);
+                    pushFollow(FOLLOW_rule_attribute_in_statement697);
                     rule_attribute7=rule_attribute();
 
                     state._fsp--;
@@ -916,7 +917,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:3: {...}? => function_import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -924,7 +925,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, \"import\") && validateLT(2, \"function\") )");
                     }
-                    pushFollow(FOLLOW_function_import_statement_in_statement691);
+                    pushFollow(FOLLOW_function_import_statement_in_statement704);
                     function_import_statement8=function_import_statement();
 
                     state._fsp--;
@@ -934,11 +935,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:499:4: import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:503:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement697);
+                    pushFollow(FOLLOW_import_statement_in_statement710);
                     import_statement9=import_statement();
 
                     state._fsp--;
@@ -948,11 +949,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:4: global
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement703);
+                    pushFollow(FOLLOW_global_in_statement716);
                     global10=global();
 
                     state._fsp--;
@@ -962,11 +963,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:4: function
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement709);
+                    pushFollow(FOLLOW_function_in_statement722);
                     function11=function();
 
                     state._fsp--;
@@ -976,7 +977,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: {...}? => template
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:506:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -984,7 +985,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
                     }
-                    pushFollow(FOLLOW_template_in_statement717);
+                    pushFollow(FOLLOW_template_in_statement730);
                     template12=template();
 
                     state._fsp--;
@@ -994,7 +995,7 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:503:4: {...}? => type_declaration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1002,7 +1003,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
                     }
-                    pushFollow(FOLLOW_type_declaration_in_statement725);
+                    pushFollow(FOLLOW_type_declaration_in_statement738);
                     type_declaration13=type_declaration();
 
                     state._fsp--;
@@ -1012,11 +1013,11 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504:4: rule
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement730);
+                    pushFollow(FOLLOW_rule_in_statement743);
                     rule14=rule();
 
                     state._fsp--;
@@ -1026,11 +1027,11 @@
                     }
                     break;
                 case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:4: query
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement735);
+                    pushFollow(FOLLOW_query_in_statement748);
                     query15=query();
 
                     state._fsp--;
@@ -1067,7 +1068,7 @@
     };
 
     // $ANTLR start "import_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:512:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
     public final DRLParser.import_statement_return import_statement() throws RecognitionException {
         DRLParser.import_statement_return retval = new DRLParser.import_statement_return();
         retval.start = input.LT(1);
@@ -1086,22 +1087,22 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_import_statement757);
+            pushFollow(FOLLOW_import_key_in_import_statement770);
             import_key16=import_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_key.add(import_key16.getTree());
-            pushFollow(FOLLOW_import_name_in_import_statement759);
+            pushFollow(FOLLOW_import_name_in_import_statement772);
             import_name17=import_name(DroolsParaphraseTypes.IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:57: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1110,9 +1111,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:57: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement762); if (state.failed) return retval; 
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement775); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
@@ -1137,9 +1138,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 513:3: -> ^( import_key import_name )
+            // 517:3: -> ^( import_key import_name )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:6: ^( import_key import_name )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
@@ -1183,7 +1184,7 @@
     };
 
     // $ANTLR start "function_import_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:516:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:520:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
     public final DRLParser.function_import_statement_return function_import_statement() throws RecognitionException {
         DRLParser.function_import_statement_return retval = new DRLParser.function_import_statement_return();
         retval.start = input.LT(1);
@@ -1205,28 +1206,28 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_function_import_statement800);
+            pushFollow(FOLLOW_import_key_in_function_import_statement813);
             imp=import_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_key.add(imp.getTree());
-            pushFollow(FOLLOW_function_key_in_function_import_statement802);
+            pushFollow(FOLLOW_function_key_in_function_import_statement815);
             function_key19=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key19.getTree());
-            pushFollow(FOLLOW_import_name_in_function_import_statement804);
+            pushFollow(FOLLOW_import_name_in_function_import_statement817);
             import_name20=import_name(DroolsParaphraseTypes.FUNCTION_IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name20.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:83: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1235,9 +1236,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:83: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement807); if (state.failed) return retval; 
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement820); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
@@ -1252,7 +1253,7 @@
 
 
             // AST REWRITE
-            // elements: import_name, function_key
+            // elements: function_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1262,9 +1263,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 521:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 525:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:521:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FUNCTION_IMPORT, (imp!=null?((Token)imp.start):null)), root_1);
@@ -1309,7 +1310,7 @@
     };
 
     // $ANTLR start "import_name"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:524:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
     public final DRLParser.import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
         DRLParser.import_name_return retval = new DRLParser.import_name_return();
         retval.start = input.LT(1);
@@ -1325,16 +1326,16 @@
         RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_name841); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name854); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1347,15 +1348,15 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name847); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name860); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name851); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name864); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -1370,7 +1371,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:33: (id+= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1379,9 +1380,9 @@
             }
             switch (alt9) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:33: id+= DOT_STAR
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:33: id+= DOT_STAR
                     {
-                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name858); if (state.failed) return retval; 
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name871); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
 
                     if (list_id==null) list_id=new ArrayList();
@@ -1410,9 +1411,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 528:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 532:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
@@ -1425,7 +1426,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:25: ( DOT_STAR )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
                     adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
 
@@ -1466,7 +1467,7 @@
     };
 
     // $ANTLR start "global"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:531:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:535:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
     public final DRLParser.global_return global() throws RecognitionException {
         DRLParser.global_return retval = new DRLParser.global_return();
         retval.start = input.LT(1);
@@ -1488,28 +1489,28 @@
         RewriteRuleSubtreeStream stream_global_id=new RewriteRuleSubtreeStream(adaptor,"rule global_id");
          pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:4: global_key data_type global_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:4: global_key data_type global_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_global_key_in_global898);
+            pushFollow(FOLLOW_global_key_in_global911);
             global_key22=global_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_key.add(global_key22.getTree());
-            pushFollow(FOLLOW_data_type_in_global900);
+            pushFollow(FOLLOW_data_type_in_global913);
             data_type23=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type23.getTree());
-            pushFollow(FOLLOW_global_id_in_global902);
+            pushFollow(FOLLOW_global_id_in_global915);
             global_id24=global_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:35: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1518,9 +1519,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:35: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global904); if (state.failed) return retval; 
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global917); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
@@ -1535,7 +1536,7 @@
 
 
             // AST REWRITE
-            // elements: global_id, global_key, data_type
+            // elements: data_type, global_key, global_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1545,9 +1546,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 536:3: -> ^( global_key data_type global_id )
+            // 540:3: -> ^( global_key data_type global_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:6: ^( global_key data_type global_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
@@ -1592,7 +1593,7 @@
     };
 
     // $ANTLR start "global_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:539:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
     public final DRLParser.global_id_return global_id() throws RecognitionException {
         DRLParser.global_id_return retval = new DRLParser.global_id_return();
         retval.start = input.LT(1);
@@ -1605,10 +1606,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_id933); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id946); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1628,7 +1629,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 543:3: -> VT_GLOBAL_ID[$id]
+            // 547:3: -> VT_GLOBAL_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
 
@@ -1663,7 +1664,7 @@
     };
 
     // $ANTLR start "function"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:546:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
     public final DRLParser.function_return function() throws RecognitionException {
         DRLParser.function_return retval = new DRLParser.function_return();
         retval.start = input.LT(1);
@@ -1688,16 +1689,16 @@
         RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:4: function_key ( data_type )? function_id parameters curly_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            pushFollow(FOLLOW_function_key_in_function965);
+            pushFollow(FOLLOW_function_key_in_function978);
             function_key26=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:17: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1710,9 +1711,9 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:17: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function967);
+                    pushFollow(FOLLOW_data_type_in_function980);
                     data_type27=data_type();
 
                     state._fsp--;
@@ -1724,19 +1725,19 @@
 
             }
 
-            pushFollow(FOLLOW_function_id_in_function970);
+            pushFollow(FOLLOW_function_id_in_function983);
             function_id28=function_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_id.add(function_id28.getTree());
-            pushFollow(FOLLOW_parameters_in_function972);
+            pushFollow(FOLLOW_parameters_in_function985);
             parameters29=parameters();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function974);
+            pushFollow(FOLLOW_curly_chunk_in_function987);
             curly_chunk30=curly_chunk();
 
             state._fsp--;
@@ -1745,7 +1746,7 @@
 
 
             // AST REWRITE
-            // elements: function_key, function_id, curly_chunk, parameters, data_type
+            // elements: function_key, curly_chunk, data_type, parameters, function_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1755,14 +1756,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 550:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 554:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_function_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:21: ( data_type )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
                     adaptor.addChild(root_1, stream_data_type.nextTree());
 
@@ -1809,7 +1810,7 @@
     };
 
     // $ANTLR start "function_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
     public final DRLParser.function_id_return function_id() throws RecognitionException {
         DRLParser.function_id_return retval = new DRLParser.function_id_return();
         retval.start = input.LT(1);
@@ -1822,10 +1823,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_id1004); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id1017); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1845,7 +1846,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 557:3: -> VT_FUNCTION_ID[$id]
+            // 561:3: -> VT_FUNCTION_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
 
@@ -1880,7 +1881,7 @@
     };
 
     // $ANTLR start "query"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560:1: query : query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:1: query : query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) ;
     public final DRLParser.query_return query() throws RecognitionException {
         DRLParser.query_return retval = new DRLParser.query_return();
         retval.start = input.LT(1);
@@ -1908,16 +1909,16 @@
         RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
          pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_query_key_in_query1036);
+            pushFollow(FOLLOW_query_key_in_query1049);
             query_key31=query_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_query_key.add(query_key31.getTree());
-            pushFollow(FOLLOW_query_id_in_query1038);
+            pushFollow(FOLLOW_query_id_in_query1051);
             query_id32=query_id();
 
             state._fsp--;
@@ -1926,14 +1927,14 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565:3: ( parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565:3: parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:569:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query1046);
+                    pushFollow(FOLLOW_parameters_in_query1059);
                     parameters33=parameters();
 
                     state._fsp--;
@@ -1948,19 +1949,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query1055);
+            pushFollow(FOLLOW_normal_lhs_block_in_query1068);
             normal_lhs_block34=normal_lhs_block();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block34.getTree());
-            pushFollow(FOLLOW_end_key_in_query1062);
+            pushFollow(FOLLOW_end_key_in_query1075);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:15: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:15: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1969,9 +1970,9 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:15: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:15: SEMICOLON
                     {
-                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1064); if (state.failed) return retval; 
+                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1077); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON35);
 
 
@@ -1986,7 +1987,7 @@
 
 
             // AST REWRITE
-            // elements: query_key, parameters, end_key, normal_lhs_block, query_id
+            // elements: query_id, end_key, normal_lhs_block, parameters, query_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1996,15 +1997,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 570:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+            // 574:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:570:6: ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:6: ^( query_key query_id ( parameters )? normal_lhs_block end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_query_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_query_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:570:27: ( parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_parameters.nextTree());
 
@@ -2050,7 +2051,7 @@
     };
 
     // $ANTLR start "query_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
     public final DRLParser.query_id_return query_id() throws RecognitionException {
         DRLParser.query_id_return retval = new DRLParser.query_id_return();
         retval.start = input.LT(1);
@@ -2064,7 +2065,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2083,9 +2084,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1099); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1112); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2105,7 +2106,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 576:65: -> VT_QUERY_ID[$id]
+                    // 580:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2115,9 +2116,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1115); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1128); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2137,7 +2138,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 579:65: -> VT_QUERY_ID[$id]
+                    // 583:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2174,7 +2175,7 @@
     };
 
     // $ANTLR start "parameters"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
     public final DRLParser.parameters_return parameters() throws RecognitionException {
         DRLParser.parameters_return retval = new DRLParser.parameters_return();
         retval.start = input.LT(1);
@@ -2197,16 +2198,16 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:587:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:587:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1134); if (state.failed) return retval; 
+            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1147); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN36);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN36, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: ( param_definition ( COMMA param_definition )* )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2215,15 +2216,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:6: param_definition ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters1143);
+                    pushFollow(FOLLOW_param_definition_in_parameters1156);
                     param_definition37=param_definition();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_param_definition.add(param_definition37.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:23: ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2236,15 +2237,15 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:24: COMMA param_definition
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:24: COMMA param_definition
                     	    {
-                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1146); if (state.failed) return retval; 
+                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1159); if (state.failed) return retval; 
                     	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA38);
 
                     	    if ( state.backtracking==0 ) {
                     	      	emit(COMMA38, DroolsEditorType.SYMBOL);	
                     	    }
-                    	    pushFollow(FOLLOW_param_definition_in_parameters1150);
+                    	    pushFollow(FOLLOW_param_definition_in_parameters1163);
                     	    param_definition39=param_definition();
 
                     	    state._fsp--;
@@ -2265,7 +2266,7 @@
 
             }
 
-            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1159); if (state.failed) return retval; 
+            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1172); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN40);
 
             if ( state.backtracking==0 ) {
@@ -2284,14 +2285,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 586:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 590:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:22: ( param_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_param_definition.nextTree());
 
@@ -2333,7 +2334,7 @@
     };
 
     // $ANTLR start "param_definition"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:1: param_definition : ( data_type )? argument ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:1: param_definition : ( data_type )? argument ;
     public final DRLParser.param_definition_return param_definition() throws RecognitionException {
         DRLParser.param_definition_return retval = new DRLParser.param_definition_return();
         retval.start = input.LT(1);
@@ -2347,19 +2348,19 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:2: ( ( data_type )? argument )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: ( data_type )? argument
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:2: ( ( data_type )? argument )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1185);
+                    pushFollow(FOLLOW_data_type_in_param_definition1198);
                     data_type41=data_type();
 
                     state._fsp--;
@@ -2371,7 +2372,7 @@
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition1188);
+            pushFollow(FOLLOW_argument_in_param_definition1201);
             argument42=argument();
 
             state._fsp--;
@@ -2406,7 +2407,7 @@
     };
 
     // $ANTLR start "argument"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:1: argument : ID ( dimension_definition )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:597:1: argument : ID ( dimension_definition )* ;
     public final DRLParser.argument_return argument() throws RecognitionException {
         DRLParser.argument_return retval = new DRLParser.argument_return();
         retval.start = input.LT(1);
@@ -2420,12 +2421,12 @@
         Object ID43_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:2: ( ID ( dimension_definition )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:4: ID ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598:2: ( ID ( dimension_definition )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1199); if (state.failed) return retval;
+            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1212); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ID43_tree = (Object)adaptor.create(ID43);
             adaptor.addChild(root_0, ID43_tree);
@@ -2433,7 +2434,7 @@
             if ( state.backtracking==0 ) {
               	emit(ID43, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:3: ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2446,9 +2447,9 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:3: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1205);
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1218);
             	    dimension_definition44=dimension_definition();
 
             	    state._fsp--;
@@ -2492,7 +2493,7 @@
     };
 
     // $ANTLR start "type_declaration"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) ;
     public final DRLParser.type_declaration_return type_declaration() throws RecognitionException {
         DRLParser.type_declaration_return retval = new DRLParser.type_declaration_return();
         retval.start = input.LT(1);
@@ -2517,22 +2518,22 @@
         RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
          pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
             {
-            pushFollow(FOLLOW_declare_key_in_type_declaration1228);
+            pushFollow(FOLLOW_declare_key_in_type_declaration1241);
             declare_key45=declare_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_declare_key.add(declare_key45.getTree());
-            pushFollow(FOLLOW_type_declare_id_in_type_declaration1231);
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1244);
             type_declare_id46=type_declare_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id46.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2545,9 +2546,9 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1235);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1248);
             	    decl_metadata47=decl_metadata();
 
             	    state._fsp--;
@@ -2562,7 +2563,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: ( decl_field )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2581,9 +2582,9 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: decl_field
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1240);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1253);
             	    decl_field48=decl_field();
 
             	    state._fsp--;
@@ -2598,7 +2599,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_type_declaration1245);
+            pushFollow(FOLLOW_end_key_in_type_declaration1258);
             end_key49=end_key();
 
             state._fsp--;
@@ -2607,7 +2608,7 @@
 
 
             // AST REWRITE
-            // elements: declare_key, decl_field, decl_metadata, end_key, type_declare_id
+            // elements: decl_field, decl_metadata, end_key, declare_key, type_declare_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2617,21 +2618,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 605:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+            // 609:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_declare_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_type_declare_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:36: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:36: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:51: ( decl_field )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:51: ( decl_field )*
                 while ( stream_decl_field.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field.nextTree());
 
@@ -2676,7 +2677,7 @@
     };
 
     // $ANTLR start "type_declare_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:612:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
     public final DRLParser.type_declare_id_return type_declare_id() throws RecognitionException {
         DRLParser.type_declare_id_return retval = new DRLParser.type_declare_id_return();
         retval.start = input.LT(1);
@@ -2689,10 +2690,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:5: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:5: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1277); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1290); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -2712,7 +2713,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 611:72: -> VT_TYPE_DECLARE_ID[$id]
+            // 615:72: -> VT_TYPE_DECLARE_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_TYPE_DECLARE_ID, id));
 
@@ -2747,7 +2748,7 @@
     };
 
     // $ANTLR start "decl_metadata"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:1: decl_metadata : AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:1: decl_metadata : AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) ;
     public final DRLParser.decl_metadata_return decl_metadata() throws RecognitionException {
         DRLParser.decl_metadata_return retval = new DRLParser.decl_metadata_return();
         retval.start = input.LT(1);
@@ -2765,22 +2766,22 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:615:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:615:4: AT ID ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:4: AT ID ( paren_chunk )?
             {
-            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1296); if (state.failed) return retval; 
+            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1309); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_AT.add(AT50);
 
             if ( state.backtracking==0 ) {
               	emit(AT50, DroolsEditorType.SYMBOL);	
             }
-            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1304); if (state.failed) return retval; 
+            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1317); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID51);
 
             if ( state.backtracking==0 ) {
               	emit(ID51, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: ( paren_chunk )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2789,9 +2790,9 @@
             }
             switch (alt21) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1311);
+                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1324);
                     paren_chunk52=paren_chunk();
 
                     state._fsp--;
@@ -2806,7 +2807,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID, AT
+            // elements: AT, ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2816,15 +2817,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 620:3: -> ^( AT ID ( paren_chunk )? )
+            // 624:3: -> ^( AT ID ( paren_chunk )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:6: ^( AT ID ( paren_chunk )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:6: ^( AT ID ( paren_chunk )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_AT.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:14: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:14: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
@@ -2865,7 +2866,7 @@
     };
 
     // $ANTLR start "decl_field"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
     public final DRLParser.decl_field_return decl_field() throws RecognitionException {
         DRLParser.decl_field_return retval = new DRLParser.decl_field_return();
         retval.start = input.LT(1);
@@ -2889,16 +2890,16 @@
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1336); if (state.failed) return retval; 
+            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1350); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID53);
 
             if ( state.backtracking==0 ) {
               	emit(ID53, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:3: ( decl_field_initialization )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:3: ( decl_field_initialization )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -2907,9 +2908,9 @@
             }
             switch (alt22) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:3: decl_field_initialization
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1342);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1356);
                     decl_field_initialization54=decl_field_initialization();
 
                     state._fsp--;
@@ -2921,19 +2922,19 @@
 
             }
 
-            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1348); if (state.failed) return retval; 
+            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1362); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON55);
 
             if ( state.backtracking==0 ) {
               	emit(COLON55, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_data_type_in_decl_field1354);
+            pushFollow(FOLLOW_data_type_in_decl_field1368);
             data_type56=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type56.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:3: ( decl_metadata )*
             loop23:
             do {
                 int alt23=2;
@@ -2946,9 +2947,9 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1358);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1372);
             	    decl_metadata57=decl_metadata();
 
             	    state._fsp--;
@@ -2966,7 +2967,7 @@
 
 
             // AST REWRITE
-            // elements: data_type, decl_field_initialization, ID, decl_metadata
+            // elements: data_type, decl_metadata, ID, decl_field_initialization
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2976,21 +2977,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 629:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // 633:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ID.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:11: ( decl_field_initialization )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:11: ( decl_field_initialization )?
                 if ( stream_decl_field_initialization.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field_initialization.nextTree());
 
                 }
                 stream_decl_field_initialization.reset();
                 adaptor.addChild(root_1, stream_data_type.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
@@ -3031,7 +3032,7 @@
     };
 
     // $ANTLR start "decl_field_initialization"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
     public final DRLParser.decl_field_initialization_return decl_field_initialization() throws RecognitionException {
         DRLParser.decl_field_initialization_return retval = new DRLParser.decl_field_initialization_return();
         retval.start = input.LT(1);
@@ -3046,16 +3047,16 @@
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:4: EQUALS paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:637:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:637:4: EQUALS paren_chunk
             {
-            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1386); if (state.failed) return retval; 
+            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1400); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS58);
 
             if ( state.backtracking==0 ) {
               	emit(EQUALS58, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1392);
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1406);
             paren_chunk59=paren_chunk();
 
             state._fsp--;
@@ -3074,9 +3075,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 635:2: -> ^( EQUALS paren_chunk )
+            // 639:2: -> ^( EQUALS paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:635:5: ^( EQUALS paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:5: ^( EQUALS paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.nextNode(), root_1);
@@ -3117,7 +3118,7 @@
     };
 
     // $ANTLR start "template"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) ;
     public final DRLParser.template_return template() throws RecognitionException {
         DRLParser.template_return retval = new DRLParser.template_return();
         retval.start = input.LT(1);
@@ -3144,25 +3145,25 @@
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )?
             {
             if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.TEMPLATE);	
             }
-            pushFollow(FOLLOW_template_key_in_template1429);
+            pushFollow(FOLLOW_template_key_in_template1443);
             template_key60=template_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_template_key.add(template_key60.getTree());
-            pushFollow(FOLLOW_template_id_in_template1431);
+            pushFollow(FOLLOW_template_id_in_template1445);
             template_id61=template_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_template_id.add(template_id61.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:8: (semi1= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:648:8: (semi1= SEMICOLON )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -3171,9 +3172,9 @@
             }
             switch (alt24) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:8: semi1= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:648:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1438); if (state.failed) return retval; 
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1452); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
@@ -3185,7 +3186,7 @@
             if ( state.backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:3: ( template_slot )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:3: ( template_slot )+
             int cnt25=0;
             loop25:
             do {
@@ -3223,9 +3224,9 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:3: template_slot
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1446);
+            	    pushFollow(FOLLOW_template_slot_in_template1460);
             	    template_slot62=template_slot();
 
             	    state._fsp--;
@@ -3245,13 +3246,13 @@
                 cnt25++;
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_template1453);
+            pushFollow(FOLLOW_end_key_in_template1467);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:20: (semi2= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:651:20: (semi2= SEMICOLON )?
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3260,9 +3261,9 @@
             }
             switch (alt26) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:20: semi2= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:651:20: semi2= SEMICOLON
                     {
-                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1457); if (state.failed) return retval; 
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1471); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
@@ -3277,7 +3278,7 @@
 
 
             // AST REWRITE
-            // elements: template_key, template_slot, template_id, end_key
+            // elements: end_key, template_id, template_key, template_slot
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3287,9 +3288,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 649:3: -> ^( template_key template_id ( template_slot )+ end_key )
+            // 653:3: -> ^( template_key template_id ( template_slot )+ end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:649:6: ^( template_key template_id ( template_slot )+ end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:6: ^( template_key template_id ( template_slot )+ end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_template_key.nextNode(), root_1);
@@ -3342,7 +3343,7 @@
     };
 
     // $ANTLR start "template_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
     public final DRLParser.template_id_return template_id() throws RecognitionException {
         DRLParser.template_id_return retval = new DRLParser.template_id_return();
         retval.start = input.LT(1);
@@ -3356,7 +3357,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3375,9 +3376,9 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:657:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1490); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1504); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3397,7 +3398,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 655:68: -> VT_TEMPLATE_ID[$id]
+                    // 659:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3407,9 +3408,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1506); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1520); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3429,7 +3430,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 658:68: -> VT_TEMPLATE_ID[$id]
+                    // 662:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3466,7 +3467,7 @@
     };
 
     // $ANTLR start "template_slot"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:665:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
     public final DRLParser.template_slot_return template_slot() throws RecognitionException {
         DRLParser.template_slot_return retval = new DRLParser.template_slot_return();
         retval.start = input.LT(1);
@@ -3484,22 +3485,22 @@
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:5: data_type slot_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1526);
+            pushFollow(FOLLOW_data_type_in_template_slot1540);
             data_type63=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type63.getTree());
-            pushFollow(FOLLOW_slot_id_in_template_slot1528);
+            pushFollow(FOLLOW_slot_id_in_template_slot1542);
             slot_id64=slot_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_slot_id.add(slot_id64.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:23: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:23: ( SEMICOLON )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -3508,9 +3509,9 @@
             }
             switch (alt28) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:23: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:23: SEMICOLON
                     {
-                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1530); if (state.failed) return retval; 
+                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1544); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON65);
 
 
@@ -3525,7 +3526,7 @@
 
 
             // AST REWRITE
-            // elements: slot_id, data_type
+            // elements: data_type, slot_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3535,9 +3536,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 664:3: -> ^( VT_SLOT data_type slot_id )
+            // 668:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:664:6: ^( VT_SLOT data_type slot_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:6: ^( VT_SLOT data_type slot_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
@@ -3579,7 +3580,7 @@
     };
 
     // $ANTLR start "slot_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:671:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
     public final DRLParser.slot_id_return slot_id() throws RecognitionException {
         DRLParser.slot_id_return retval = new DRLParser.slot_id_return();
         retval.start = input.LT(1);
@@ -3592,10 +3593,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:2: (id= ID -> VT_SLOT_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:672:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:672:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1559); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1573); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -3614,7 +3615,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 670:3: -> VT_SLOT_ID[$id]
+            // 674:3: -> VT_SLOT_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
 
@@ -3649,7 +3650,7 @@
     };
 
     // $ANTLR start "rule"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:673:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
     public final DRLParser.rule_return rule() throws RecognitionException {
         DRLParser.rule_return retval = new DRLParser.rule_return();
         retval.start = input.LT(1);
@@ -3682,19 +3683,19 @@
         RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
             {
             if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.RULE);	
             }
-            pushFollow(FOLLOW_rule_key_in_rule1596);
+            pushFollow(FOLLOW_rule_key_in_rule1610);
             rule_key66=rule_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_rule_key.add(rule_key66.getTree());
-            pushFollow(FOLLOW_rule_id_in_rule1598);
+            pushFollow(FOLLOW_rule_id_in_rule1612);
             rule_id67=rule_id();
 
             state._fsp--;
@@ -3703,20 +3704,20 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:3: ( extend_key rule_id )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:3: ( extend_key rule_id )?
             int alt29=2;
             alt29 = dfa29.predict(input);
             switch (alt29) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:4: extend_key rule_id
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1607);
+                    pushFollow(FOLLOW_extend_key_in_rule1621);
                     extend_key68=extend_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_extend_key.add(extend_key68.getTree());
-                    pushFollow(FOLLOW_rule_id_in_rule1609);
+                    pushFollow(FOLLOW_rule_id_in_rule1623);
                     rule_id69=rule_id();
 
                     state._fsp--;
@@ -3728,7 +3729,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:25: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:25: ( decl_metadata )*
             loop30:
             do {
                 int alt30=2;
@@ -3741,9 +3742,9 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:25: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1613);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1627);
             	    decl_metadata70=decl_metadata();
 
             	    state._fsp--;
@@ -3758,7 +3759,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:40: ( rule_attributes )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:40: ( rule_attributes )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -3767,9 +3768,9 @@
             }
             switch (alt31) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:40: rule_attributes
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1616);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1630);
                     rule_attributes71=rule_attributes();
 
                     state._fsp--;
@@ -3781,7 +3782,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:57: ( when_part )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:57: ( when_part )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3790,9 +3791,9 @@
             }
             switch (alt32) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:57: when_part
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:684:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1619);
+                    pushFollow(FOLLOW_when_part_in_rule1633);
                     when_part72=when_part();
 
                     state._fsp--;
@@ -3804,7 +3805,7 @@
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1622);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1636);
             rhs_chunk73=rhs_chunk();
 
             state._fsp--;
@@ -3813,7 +3814,7 @@
 
 
             // AST REWRITE
-            // elements: rule_id, rhs_chunk, when_part, decl_metadata, rule_attributes, extend_key, rule_key, rule_id
+            // elements: decl_metadata, extend_key, rule_attributes, rule_id, when_part, rhs_chunk, rule_key, rule_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3823,17 +3824,17 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 681:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 685:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_rule_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_rule_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:25: ( ^( extend_key rule_id ) )?
-                if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:25: ^( extend_key rule_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:25: ( ^( extend_key rule_id ) )?
+                if ( stream_extend_key.hasNext()||stream_rule_id.hasNext() ) {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:25: ^( extend_key rule_id )
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
@@ -3844,21 +3845,21 @@
                     }
 
                 }
+                stream_extend_key.reset();
                 stream_rule_id.reset();
-                stream_extend_key.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:63: ( rule_attributes )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:63: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
                     adaptor.addChild(root_1, stream_rule_attributes.nextTree());
 
                 }
                 stream_rule_attributes.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:80: ( when_part )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:685:80: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
                     adaptor.addChild(root_1, stream_when_part.nextTree());
 
@@ -3945,7 +3946,7 @@
     };
 
     // $ANTLR start "when_part"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:730:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
     public final DRLParser.when_part_return when_part() throws RecognitionException {
         DRLParser.when_part_return retval = new DRLParser.when_part_return();
         retval.start = input.LT(1);
@@ -3963,16 +3964,16 @@
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:5: WHEN ( COLON )? normal_lhs_block
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1666); if (state.failed) return retval; 
+            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1680); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_WHEN.add(WHEN74);
 
             if ( state.backtracking==0 ) {
               	emit(WHEN74, DroolsEditorType.KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:3: ( COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:3: ( COLON )?
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -3981,9 +3982,9 @@
             }
             switch (alt33) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:3: COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:3: COLON
                     {
-                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1672); if (state.failed) return retval; 
+                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1686); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON75);
 
 
@@ -3998,7 +3999,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1682);
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1696);
             normal_lhs_block76=normal_lhs_block();
 
             state._fsp--;
@@ -4017,7 +4018,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 731:2: -> WHEN normal_lhs_block
+            // 735:2: -> WHEN normal_lhs_block
             {
                 adaptor.addChild(root_0, stream_WHEN.nextNode());
                 adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
@@ -4053,7 +4054,7 @@
     };
 
     // $ANTLR start "rule_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
     public final DRLParser.rule_id_return rule_id() throws RecognitionException {
         DRLParser.rule_id_return retval = new DRLParser.rule_id_return();
         retval.start = input.LT(1);
@@ -4067,7 +4068,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -4086,9 +4087,9 @@
             }
             switch (alt34) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1703); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1717); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4108,7 +4109,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 737:64: -> VT_RULE_ID[$id]
+                    // 741:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4118,9 +4119,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1719); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1733); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4140,7 +4141,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 740:64: -> VT_RULE_ID[$id]
+                    // 744:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4177,7 +4178,7 @@
     };
 
     // $ANTLR start "rule_attributes"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
     public final DRLParser.rule_attributes_return rule_attributes() throws RecognitionException {
         DRLParser.rule_attributes_return retval = new DRLParser.rule_attributes_return();
         retval.start = input.LT(1);
@@ -4200,10 +4201,10 @@
         RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: ( attributes_key COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:4: ( attributes_key COLON )?
             int alt35=2;
             int LA35_0 = input.LA(1);
 
@@ -4216,15 +4217,15 @@
             }
             switch (alt35) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:6: attributes_key COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1740);
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1754);
                     attributes_key77=attributes_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key77.getTree());
-                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1742); if (state.failed) return retval; 
+                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1756); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON78);
 
                     if ( state.backtracking==0 ) {
@@ -4236,13 +4237,13 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1752);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1766);
             rule_attribute79=rule_attribute();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:18: ( ( COMMA )? attr= rule_attribute )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:18: ( ( COMMA )? attr= rule_attribute )*
             loop37:
             do {
                 int alt37=2;
@@ -4255,9 +4256,9 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: ( COMMA )? attr= rule_attribute
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: ( COMMA )?
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:20: ( COMMA )?
             	    int alt36=2;
             	    int LA36_0 = input.LA(1);
 
@@ -4266,9 +4267,9 @@
             	    }
             	    switch (alt36) {
             	        case 1 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: COMMA
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:20: COMMA
             	            {
-            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1756); if (state.failed) return retval; 
+            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1770); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA80);
 
 
@@ -4280,7 +4281,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1763);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1777);
             	    attr=rule_attribute();
 
             	    state._fsp--;
@@ -4298,7 +4299,7 @@
 
 
             // AST REWRITE
-            // elements: rule_attribute, attributes_key
+            // elements: attributes_key, rule_attribute
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -4308,14 +4309,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 746:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 750:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:27: ( attributes_key )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_attributes_key.nextTree());
 
@@ -4364,7 +4365,7 @@
     };
 
     // $ANTLR start "rule_attribute"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );
     public final DRLParser.rule_attribute_return rule_attribute() throws RecognitionException {
         DRLParser.rule_attribute_return retval = new DRLParser.rule_attribute_return();
         retval.start = input.LT(1);
@@ -4405,16 +4406,16 @@
 
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter )
             int alt38=15;
             alt38 = dfa38.predict(input);
             switch (alt38) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: salience
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1802);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1816);
                     salience81=salience();
 
                     state._fsp--;
@@ -4424,11 +4425,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:4: no_loop
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1808);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1822);
                     no_loop82=no_loop();
 
                     state._fsp--;
@@ -4438,11 +4439,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: agenda_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1813);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1827);
                     agenda_group83=agenda_group();
 
                     state._fsp--;
@@ -4452,11 +4453,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:4: duration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1820);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1834);
                     duration84=duration();
 
                     state._fsp--;
@@ -4466,11 +4467,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: activation_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1827);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1841);
                     activation_group85=activation_group();
 
                     state._fsp--;
@@ -4480,11 +4481,11 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: auto_focus
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1833);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1847);
                     auto_focus86=auto_focus();
 
                     state._fsp--;
@@ -4494,11 +4495,11 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: date_effective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1839);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1853);
                     date_effective87=date_effective();
 
                     state._fsp--;
@@ -4508,11 +4509,11 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: date_expires
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1845);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1859);
                     date_expires88=date_expires();
 
                     state._fsp--;
@@ -4522,11 +4523,11 @@
                     }
                     break;
                 case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: enabled
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1851);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1865);
                     enabled89=enabled();
 
                     state._fsp--;
@@ -4536,11 +4537,11 @@
                     }
                     break;
                 case 10 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:4: ruleflow_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:765:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1857);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1871);
                     ruleflow_group90=ruleflow_group();
 
                     state._fsp--;
@@ -4550,11 +4551,11 @@
                     }
                     break;
                 case 11 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: lock_on_active
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1863);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1877);
                     lock_on_active91=lock_on_active();
 
                     state._fsp--;
@@ -4564,11 +4565,11 @@
                     }
                     break;
                 case 12 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:4: dialect
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1868);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1882);
                     dialect92=dialect();
 
                     state._fsp--;
@@ -4578,11 +4579,11 @@
                     }
                     break;
                 case 13 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: prior
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:4: prior
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_prior_in_rule_attribute1874);
+                    pushFollow(FOLLOW_prior_in_rule_attribute1888);
                     prior93=prior();
 
                     state._fsp--;
@@ -4592,11 +4593,11 @@
                     }
                     break;
                 case 14 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:765:4: entail_mode
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:4: entail_mode
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1879);
+                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1893);
                     entail_mode94=entail_mode();
 
                     state._fsp--;
@@ -4606,11 +4607,11 @@
                     }
                     break;
                 case 15 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:4: filter
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:770:4: filter
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_filter_in_rule_attribute1884);
+                    pushFollow(FOLLOW_filter_in_rule_attribute1898);
                     filter95=filter();
 
                     state._fsp--;
@@ -4658,7 +4659,7 @@
     };
 
     // $ANTLR start "date_effective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:1: date_effective : date_effective_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:1: date_effective : date_effective_key STRING ;
     public final DRLParser.date_effective_return date_effective() throws RecognitionException {
         DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
         retval.start = input.LT(1);
@@ -4672,12 +4673,12 @@
         Object STRING97_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:2: ( date_effective_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:4: date_effective_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:2: ( date_effective_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1898);
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1912);
             date_effective_key96=date_effective_key();
 
             state._fsp--;
@@ -4686,7 +4687,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1903); if (state.failed) return retval;
+            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1917); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING97_tree = (Object)adaptor.create(STRING97);
             adaptor.addChild(root_0, STRING97_tree);
@@ -4723,7 +4724,7 @@
     };
 
     // $ANTLR start "date_expires"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:1: date_expires : date_expires_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:1: date_expires : date_expires_key STRING ;
     public final DRLParser.date_expires_return date_expires() throws RecognitionException {
         DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
         retval.start = input.LT(1);
@@ -4737,12 +4738,12 @@
         Object STRING99_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:2: ( date_expires_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:4: date_expires_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:2: ( date_expires_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1917);
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1931);
             date_expires_key98=date_expires_key();
 
             state._fsp--;
@@ -4751,7 +4752,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1922); if (state.failed) return retval;
+            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1936); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING99_tree = (Object)adaptor.create(STRING99);
             adaptor.addChild(root_0, STRING99_tree);
@@ -4788,7 +4789,7 @@
     };
 
     // $ANTLR start "enabled"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
     public final DRLParser.enabled_return enabled() throws RecognitionException {
         DRLParser.enabled_return retval = new DRLParser.enabled_return();
         retval.start = input.LT(1);
@@ -4804,12 +4805,12 @@
         Object BOOL101_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:4: enabled_key ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1937);
+            pushFollow(FOLLOW_enabled_key_in_enabled1951);
             enabled_key100=enabled_key();
 
             state._fsp--;
@@ -4818,7 +4819,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:6: ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:6: ( BOOL | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4837,9 +4838,9 @@
             }
             switch (alt39) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:8: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:8: BOOL
                     {
-                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1950); if (state.failed) return retval;
+                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1964); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL101_tree = (Object)adaptor.create(BOOL101);
                     adaptor.addChild(root_0, BOOL101_tree);
@@ -4851,9 +4852,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1961);
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1975);
                     paren_chunk102=paren_chunk();
 
                     state._fsp--;
@@ -4894,7 +4895,7 @@
     };
 
     // $ANTLR start "salience"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:1: salience : salience_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:797:1: salience : salience_key ( INT | paren_chunk ) ;
     public final DRLParser.salience_return salience() throws RecognitionException {
         DRLParser.salience_return retval = new DRLParser.salience_return();
         retval.start = input.LT(1);
@@ -4910,12 +4911,12 @@
         Object INT104_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:2: ( salience_key ( INT | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:4: salience_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:2: ( salience_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1981);
+            pushFollow(FOLLOW_salience_key_in_salience1995);
             salience_key103=salience_key();
 
             state._fsp--;
@@ -4924,7 +4925,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:3: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:3: ( INT | paren_chunk )
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4943,9 +4944,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:5: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:5: INT
                     {
-                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience1990); if (state.failed) return retval;
+                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience2004); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT104_tree = (Object)adaptor.create(INT104);
                     adaptor.addChild(root_0, INT104_tree);
@@ -4957,9 +4958,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:5: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1999);
+                    pushFollow(FOLLOW_paren_chunk_in_salience2013);
                     paren_chunk105=paren_chunk();
 
                     state._fsp--;
@@ -5000,7 +5001,7 @@
     };
 
     // $ANTLR start "no_loop"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:1: no_loop : no_loop_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:1: no_loop : no_loop_key ( BOOL )? ;
     public final DRLParser.no_loop_return no_loop() throws RecognitionException {
         DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
         retval.start = input.LT(1);
@@ -5014,12 +5015,12 @@
         Object BOOL107_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:2: ( no_loop_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:4: no_loop_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:2: ( no_loop_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop2014);
+            pushFollow(FOLLOW_no_loop_key_in_no_loop2028);
             no_loop_key106=no_loop_key();
 
             state._fsp--;
@@ -5028,7 +5029,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:66: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:66: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5037,9 +5038,9 @@
             }
             switch (alt41) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:66: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:66: BOOL
                     {
-                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop2019); if (state.failed) return retval;
+                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop2033); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL107_tree = (Object)adaptor.create(BOOL107);
                     adaptor.addChild(root_0, BOOL107_tree);
@@ -5082,7 +5083,7 @@
     };
 
     // $ANTLR start "auto_focus"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:1: auto_focus : auto_focus_key ( BOOL )? ;
     public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
         DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
         retval.start = input.LT(1);
@@ -5096,12 +5097,12 @@
         Object BOOL109_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:2: ( auto_focus_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: auto_focus_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:2: ( auto_focus_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2034);
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2048);
             auto_focus_key108=auto_focus_key();
 
             state._fsp--;
@@ -5110,7 +5111,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:69: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:69: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5119,9 +5120,9 @@
             }
             switch (alt42) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:69: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:69: BOOL
                     {
-                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2039); if (state.failed) return retval;
+                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2053); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL109_tree = (Object)adaptor.create(BOOL109);
                     adaptor.addChild(root_0, BOOL109_tree);
@@ -5164,7 +5165,7 @@
     };
 
     // $ANTLR start "activation_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:1: activation_group : activation_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:1: activation_group : activation_group_key STRING ;
     public final DRLParser.activation_group_return activation_group() throws RecognitionException {
         DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
         retval.start = input.LT(1);
@@ -5178,12 +5179,12 @@
         Object STRING111_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:2: ( activation_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:4: activation_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:2: ( activation_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group2056);
+            pushFollow(FOLLOW_activation_group_key_in_activation_group2070);
             activation_group_key110=activation_group_key();
 
             state._fsp--;
@@ -5192,7 +5193,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2061); if (state.failed) return retval;
+            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2075); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING111_tree = (Object)adaptor.create(STRING111);
             adaptor.addChild(root_0, STRING111_tree);
@@ -5229,7 +5230,7 @@
     };
 
     // $ANTLR start "ruleflow_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:1: ruleflow_group : ruleflow_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:1: ruleflow_group : ruleflow_group_key STRING ;
     public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
         DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
         retval.start = input.LT(1);
@@ -5243,12 +5244,12 @@
         Object STRING113_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:2: ( ruleflow_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:4: ruleflow_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:2: ( ruleflow_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2075);
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2089);
             ruleflow_group_key112=ruleflow_group_key();
 
             state._fsp--;
@@ -5257,7 +5258,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2080); if (state.failed) return retval;
+            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2094); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING113_tree = (Object)adaptor.create(STRING113);
             adaptor.addChild(root_0, STRING113_tree);
@@ -5294,7 +5295,7 @@
     };
 
     // $ANTLR start "agenda_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:1: agenda_group : agenda_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:1: agenda_group : agenda_group_key STRING ;
     public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
         DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
         retval.start = input.LT(1);
@@ -5308,12 +5309,12 @@
         Object STRING115_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:2: ( agenda_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:4: agenda_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:2: ( agenda_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2094);
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2108);
             agenda_group_key114=agenda_group_key();
 
             state._fsp--;
@@ -5322,7 +5323,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2099); if (state.failed) return retval;
+            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2113); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING115_tree = (Object)adaptor.create(STRING115);
             adaptor.addChild(root_0, STRING115_tree);
@@ -5359,7 +5360,7 @@
     };
 
     // $ANTLR start "duration"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:1: duration : duration_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:1: duration : duration_key ( INT | paren_chunk ) ;
     public final DRLParser.duration_return duration() throws RecognitionException {
         DRLParser.duration_return retval = new DRLParser.duration_return();
         retval.start = input.LT(1);
@@ -5375,12 +5376,12 @@
         Object INT117_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:2: ( duration_key ( INT | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:4: duration_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:2: ( duration_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:4: duration_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration2113);
+            pushFollow(FOLLOW_duration_key_in_duration2127);
             duration_key116=duration_key();
 
             state._fsp--;
@@ -5389,7 +5390,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:6: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:6: ( INT | paren_chunk )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -5408,9 +5409,9 @@
             }
             switch (alt43) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:8: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:8: INT
                     {
-                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2126); if (state.failed) return retval;
+                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2140); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT117_tree = (Object)adaptor.create(INT117);
                     adaptor.addChild(root_0, INT117_tree);
@@ -5422,9 +5423,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:828:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_duration2137);
+                    pushFollow(FOLLOW_paren_chunk_in_duration2151);
                     paren_chunk118=paren_chunk();
 
                     state._fsp--;
@@ -5465,7 +5466,7 @@
     };
 
     // $ANTLR start "dialect"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:1: dialect : dialect_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:1: dialect : dialect_key STRING ;
     public final DRLParser.dialect_return dialect() throws RecognitionException {
         DRLParser.dialect_return retval = new DRLParser.dialect_return();
         retval.start = input.LT(1);
@@ -5479,12 +5480,12 @@
         Object STRING120_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:2: ( dialect_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:4: dialect_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:2: ( dialect_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect2157);
+            pushFollow(FOLLOW_dialect_key_in_dialect2171);
             dialect_key119=dialect_key();
 
             state._fsp--;
@@ -5493,7 +5494,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2162); if (state.failed) return retval;
+            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2176); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING120_tree = (Object)adaptor.create(STRING120);
             adaptor.addChild(root_0, STRING120_tree);
@@ -5530,7 +5531,7 @@
     };
 
     // $ANTLR start "lock_on_active"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:1: lock_on_active : lock_on_active_key ( BOOL )? ;
     public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
         DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
         retval.start = input.LT(1);
@@ -5544,12 +5545,12 @@
         Object BOOL122_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:2: ( lock_on_active_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:4: lock_on_active_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:2: ( lock_on_active_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2180);
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2194);
             lock_on_active_key121=lock_on_active_key();
 
             state._fsp--;
@@ -5558,7 +5559,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:73: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:73: ( BOOL )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -5567,9 +5568,9 @@
             }
             switch (alt44) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:73: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:73: BOOL
                     {
-                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2185); if (state.failed) return retval;
+                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2199); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL122_tree = (Object)adaptor.create(BOOL122);
                     adaptor.addChild(root_0, BOOL122_tree);
@@ -5612,7 +5613,7 @@
     };
 
     // $ANTLR start "prior"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:1: prior : prior_key paren_chunk ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:1: prior : prior_key paren_chunk ;
     public final DRLParser.prior_return prior() throws RecognitionException {
         DRLParser.prior_return retval = new DRLParser.prior_return();
         retval.start = input.LT(1);
@@ -5626,12 +5627,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:3: ( prior_key paren_chunk )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:5: prior_key paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:3: ( prior_key paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:5: prior_key paren_chunk
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_prior_key_in_prior2202);
+            pushFollow(FOLLOW_prior_key_in_prior2216);
             prior_key123=prior_key();
 
             state._fsp--;
@@ -5640,7 +5641,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            pushFollow(FOLLOW_paren_chunk_in_prior2207);
+            pushFollow(FOLLOW_paren_chunk_in_prior2221);
             paren_chunk124=paren_chunk();
 
             state._fsp--;
@@ -5675,7 +5676,7 @@
     };
 
     // $ANTLR start "entail_mode"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:1: entail_mode : entail_mode_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:1: entail_mode : entail_mode_key STRING ;
     public final DRLParser.entail_mode_return entail_mode() throws RecognitionException {
         DRLParser.entail_mode_return retval = new DRLParser.entail_mode_return();
         retval.start = input.LT(1);
@@ -5689,12 +5690,12 @@
         Object STRING126_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:3: ( entail_mode_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:5: entail_mode_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:3: ( entail_mode_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:5: entail_mode_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2224);
+            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2238);
             entail_mode_key125=entail_mode_key();
 
             state._fsp--;
@@ -5703,7 +5704,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            STRING126=(Token)match(input,STRING,FOLLOW_STRING_in_entail_mode2229); if (state.failed) return retval;
+            STRING126=(Token)match(input,STRING,FOLLOW_STRING_in_entail_mode2243); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING126_tree = (Object)adaptor.create(STRING126);
             adaptor.addChild(root_0, STRING126_tree);
@@ -5740,7 +5741,7 @@
     };
 
     // $ANTLR start "filter"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:1: filter : filter_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:1: filter : filter_key STRING ;
     public final DRLParser.filter_return filter() throws RecognitionException {
         DRLParser.filter_return retval = new DRLParser.filter_return();
         retval.start = input.LT(1);
@@ -5754,12 +5755,12 @@
         Object STRING128_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:3: ( filter_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:5: filter_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:3: ( filter_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:5: filter_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_filter_key_in_filter2251);
+            pushFollow(FOLLOW_filter_key_in_filter2265);
             filter_key127=filter_key();
 
             state._fsp--;
@@ -5768,7 +5769,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            STRING128=(Token)match(input,STRING,FOLLOW_STRING_in_filter2256); if (state.failed) return retval;
+            STRING128=(Token)match(input,STRING,FOLLOW_STRING_in_filter2270); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING128_tree = (Object)adaptor.create(STRING128);
             adaptor.addChild(root_0, STRING128_tree);
@@ -5805,7 +5806,7 @@
     };
 
     // $ANTLR start "normal_lhs_block"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
     public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
         DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
         retval.start = input.LT(1);
@@ -5817,10 +5818,10 @@
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:4: ( lhs )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:4: ( lhs )*
             loop45:
             do {
                 int alt45=2;
@@ -5842,9 +5843,9 @@
 
                 switch (alt45) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: lhs
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2276);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2290);
             	    lhs129=lhs();
 
             	    state._fsp--;
@@ -5872,14 +5873,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 862:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 866:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:23: ( lhs )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.nextTree());
 
@@ -5920,7 +5921,7 @@
     };
 
     // $ANTLR start "lhs"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:1: lhs : lhs_or ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:1: lhs : lhs_or ;
     public final DRLParser.lhs_return lhs() throws RecognitionException {
         DRLParser.lhs_return retval = new DRLParser.lhs_return();
         retval.start = input.LT(1);
@@ -5932,12 +5933,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:5: ( lhs_or )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:7: lhs_or
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:5: ( lhs_or )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2297);
+            pushFollow(FOLLOW_lhs_or_in_lhs2311);
             lhs_or130=lhs_or();
 
             state._fsp--;
@@ -5972,7 +5973,7 @@
     };
 
     // $ANTLR start "lhs_or"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:1: lhs_or : ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) (!
  ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:1: lhs_or : ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) (!
  ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) );
     public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
         DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
         retval.start = input.LT(1);
@@ -6055,7 +6056,7 @@
         	Token orToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:3: ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( !
 ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:3: ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( !
 ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
             int alt54=6;
             int LA54_0 = input.LA(1);
 
@@ -6111,21 +6112,21 @@
             }
             switch (alt54) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:5: ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:5: ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2324); if (state.failed) return retval; 
+                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2338); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN131);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN131, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2334);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2348);
                     or=or_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_or_key.add(or.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:4: ( constr_parameters )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -6134,9 +6135,9 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:4: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2343);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2357);
                             constr_parameters132=constr_parameters();
 
                             state._fsp--;
@@ -6151,7 +6152,7 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:4: ( lhs_and )+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:4: ( lhs_and )+
                     int cnt47=0;
                     loop47:
                     do {
@@ -6165,9 +6166,9 @@
 
                         switch (alt47) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:4: lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2352);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2366);
                     	    lhs_and133=lhs_and();
 
                     	    state._fsp--;
@@ -6187,7 +6188,7 @@
                         cnt47++;
                     } while (true);
 
-                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2358); if (state.failed) return retval; 
+                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2372); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN134);
 
                     if ( state.backtracking==0 ) {
@@ -6196,7 +6197,7 @@
 
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, lhs_and, constr_parameters
+                    // elements: constr_parameters, RIGHT_PAREN, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6206,14 +6207,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 878:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
+                    // 882:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:6: ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:6: ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_PREFIX, (or!=null?((Token)or.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:32: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:32: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6238,21 +6239,21 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2402); if (state.failed) return retval; 
+                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2416); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN135);
 
                     if ( state.backtracking==0 ) {
                        emit(LEFT_PAREN135, DroolsEditorType.SYMBOL); 
                     }
-                    pushFollow(FOLLOW_equiv_key_in_lhs_or2415);
+                    pushFollow(FOLLOW_equiv_key_in_lhs_or2429);
                     equiv=equiv_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_equiv_key.add(equiv.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:7: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:7: ( constr_parameters )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -6261,9 +6262,9 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:7: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:7: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2429);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2443);
                             constr_parameters136=constr_parameters();
 
                             state._fsp--;
@@ -6278,19 +6279,19 @@
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
                     }
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2442);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2456);
                     lhs_and137=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and137.getTree());
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2450);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2464);
                     lhs_and138=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and138.getTree());
-                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2462); if (state.failed) return retval; 
+                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2476); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN139);
 
                     if ( state.backtracking==0 ) {
@@ -6299,7 +6300,7 @@
 
 
                     // AST REWRITE
-                    // elements: lhs_and, RIGHT_PAREN, lhs_and, constr_parameters
+                    // elements: constr_parameters, lhs_and, RIGHT_PAREN, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6309,14 +6310,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 889:5: -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                    // 893:5: -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:8: ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:893:8: ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EQUIV, (equiv!=null?((Token)equiv.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:33: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:893:33: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6335,21 +6336,21 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:4: ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:4: ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    LEFT_PAREN140=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2507); if (state.failed) return retval; 
+                    LEFT_PAREN140=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2521); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN140);
 
                     if ( state.backtracking==0 ) {
                        emit(LEFT_PAREN140, DroolsEditorType.SYMBOL); 
                     }
-                    pushFollow(FOLLOW_xor_key_in_lhs_or2520);
+                    pushFollow(FOLLOW_xor_key_in_lhs_or2534);
                     xor=xor_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_xor_key.add(xor.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:7: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:7: ( constr_parameters )?
                     int alt49=2;
                     int LA49_0 = input.LA(1);
 
@@ -6358,9 +6359,9 @@
                     }
                     switch (alt49) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:7: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:7: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2534);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2548);
                             constr_parameters141=constr_parameters();
 
                             state._fsp--;
@@ -6375,19 +6376,19 @@
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
                     }
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2547);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2561);
                     lhs_and142=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and142.getTree());
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2555);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2569);
                     lhs_and143=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and143.getTree());
-                    RIGHT_PAREN144=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2567); if (state.failed) return retval; 
+                    RIGHT_PAREN144=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2581); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN144);
 
                     if ( state.backtracking==0 ) {
@@ -6396,7 +6397,7 @@
 
 
                     // AST REWRITE
-                    // elements: lhs_and, lhs_and, RIGHT_PAREN, constr_parameters
+                    // elements: constr_parameters, RIGHT_PAREN, lhs_and, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6406,14 +6407,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 899:5: -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                    // 903:5: -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:8: ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:8: ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_XOR, (xor!=null?((Token)xor.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:29: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:29: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6432,21 +6433,21 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:5: ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2616); if (state.failed) return retval; 
+                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2630); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN145);
 
                     if ( state.backtracking==0 ) {
                        emit(LEFT_PAREN145, DroolsEditorType.SYMBOL); 
                     }
-                    pushFollow(FOLLOW_implies_key_in_lhs_or2629);
+                    pushFollow(FOLLOW_implies_key_in_lhs_or2643);
                     implies=implies_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_implies_key.add(implies.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:7: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:7: ( constr_parameters )?
                     int alt50=2;
                     int LA50_0 = input.LA(1);
 
@@ -6455,9 +6456,9 @@
                     }
                     switch (alt50) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:7: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:7: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2643);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2657);
                             constr_parameters146=constr_parameters();
 
                             state._fsp--;
@@ -6472,19 +6473,19 @@
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
                     }
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2656);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2670);
                     lhs_and147=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and147.getTree());
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2664);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2678);
                     lhs_and148=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and148.getTree());
-                    RIGHT_PAREN149=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2676); if (state.failed) return retval; 
+                    RIGHT_PAREN149=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2690); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN149);
 
                     if ( state.backtracking==0 ) {
@@ -6493,7 +6494,7 @@
 
 
                     // AST REWRITE
-                    // elements: lhs_and, RIGHT_PAREN, constr_parameters, lhs_and
+                    // elements: constr_parameters, RIGHT_PAREN, lhs_and, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6503,14 +6504,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 909:5: -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                    // 913:5: -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:8: ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:8: ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPLIES, (implies!=null?((Token)implies.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:37: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:37: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6529,12 +6530,12 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: ( lhs_and -> lhs_and )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:5: lhs_and
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:4: ( lhs_and -> lhs_and )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2711);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2725);
                     lhs_and150=lhs_and();
 
                     state._fsp--;
@@ -6553,7 +6554,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 912:13: -> lhs_and
+                    // 916:13: -> lhs_and
                     {
                         adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
@@ -6562,7 +6563,7 @@
                     retval.tree = root_0;}
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:3: ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:3: ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
                     loop53:
                     do {
                         int alt53=2;
@@ -6590,9 +6591,9 @@
 
                         switch (alt53) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:49: (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:49: (value= or_key ( constr_parameters )? | pipe= DOUBLE_PIPE )
                     	    int alt52=2;
                     	    int LA52_0 = input.LA(1);
 
@@ -6611,15 +6612,15 @@
                     	    }
                     	    switch (alt52) {
                     	        case 1 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:50: value= or_key ( constr_parameters )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:50: value= or_key ( constr_parameters )?
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2738);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2752);
                     	            value=or_key();
 
                     	            state._fsp--;
                     	            if (state.failed) return retval;
                     	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:63: ( constr_parameters )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:63: ( constr_parameters )?
                     	            int alt51=2;
                     	            int LA51_0 = input.LA(1);
 
@@ -6628,9 +6629,9 @@
                     	            }
                     	            switch (alt51) {
                     	                case 1 :
-                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:63: constr_parameters
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:63: constr_parameters
                     	                    {
-                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_or2740);
+                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_or2754);
                     	                    constr_parameters151=constr_parameters();
 
                     	                    state._fsp--;
@@ -6649,9 +6650,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:6: pipe= DOUBLE_PIPE
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:918:6: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2753); if (state.failed) return retval; 
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2767); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( state.backtracking==0 ) {
@@ -6666,7 +6667,7 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2764);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2778);
                     	    lhs_and152=lhs_and();
 
                     	    state._fsp--;
@@ -6675,7 +6676,7 @@
 
 
                     	    // AST REWRITE
-                    	    // elements: constr_parameters, lhs_and, lhs_or
+                    	    // elements: lhs_and, constr_parameters, lhs_or
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -6685,14 +6686,14 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 917:3: -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
+                    	    // 921:3: -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
                     	    {
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:6: ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:6: ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
 
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:30: ( constr_parameters )?
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:30: ( constr_parameters )?
                     	        if ( stream_constr_parameters.hasNext() ) {
                     	            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6719,15 +6720,15 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:919:5: hedge lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:5: hedge lhs_or
                     {
-                    pushFollow(FOLLOW_hedge_in_lhs_or2794);
+                    pushFollow(FOLLOW_hedge_in_lhs_or2808);
                     hedge153=hedge();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_hedge.add(hedge153.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_or2796);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_or2810);
                     lhs_or154=lhs_or();
 
                     state._fsp--;
@@ -6736,7 +6737,7 @@
 
 
                     // AST REWRITE
-                    // elements: lhs_or, hedge
+                    // elements: hedge, lhs_or
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6746,9 +6747,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 920:5: -> ^( hedge lhs_or )
+                    // 924:5: -> ^( hedge lhs_or )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:8: ^( hedge lhs_or )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:8: ^( hedge lhs_or )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_hedge.nextNode(), root_1);
@@ -6791,7 +6792,7 @@
     };
 
     // $ANTLR start "hedge"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:1: hedge : value= very_key -> VT_HEDGE[type] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:1: hedge : value= very_key -> VT_HEDGE[type] ;
     public final DRLParser.hedge_return hedge() throws RecognitionException {
         DRLParser.hedge_return retval = new DRLParser.hedge_return();
         retval.start = input.LT(1);
@@ -6806,10 +6807,10 @@
           Token type = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:3: (value= very_key -> VT_HEDGE[type] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:5: value= very_key
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:3: (value= very_key -> VT_HEDGE[type] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:5: value= very_key
             {
-            pushFollow(FOLLOW_very_key_in_hedge2838);
+            pushFollow(FOLLOW_very_key_in_hedge2852);
             value=very_key();
 
             state._fsp--;
@@ -6831,7 +6832,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 929:44: -> VT_HEDGE[type]
+            // 933:44: -> VT_HEDGE[type]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_HEDGE, type));
 
@@ -6866,7 +6867,7 @@
     };
 
     // $ANTLR start "lhs_and"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:1: lhs_and : ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )* );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:1: lhs_and : ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )* );
     public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
         DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
         retval.start = input.LT(1);
@@ -6904,7 +6905,7 @@
         	Token andToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:3: ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:3: ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )* )
             int alt60=2;
             int LA60_0 = input.LA(1);
 
@@ -6937,21 +6938,21 @@
             }
             switch (alt60) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:5: ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:5: ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN155=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2874); if (state.failed) return retval; 
+                    LEFT_PAREN155=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2888); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN155);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN155, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2884);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2898);
                     and=and_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_and_key.add(and.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:4: ( constr_parameters )?
                     int alt55=2;
                     int LA55_0 = input.LA(1);
 
@@ -6960,9 +6961,9 @@
                     }
                     switch (alt55) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:4: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_and2892);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_and2906);
                             constr_parameters156=constr_parameters();
 
                             state._fsp--;
@@ -6977,7 +6978,7 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:941:4: ( lhs_unary )+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:4: ( lhs_unary )+
                     int cnt56=0;
                     loop56:
                     do {
@@ -6991,9 +6992,9 @@
 
                         switch (alt56) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:941:4: lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2901);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2915);
                     	    lhs_unary157=lhs_unary();
 
                     	    state._fsp--;
@@ -7013,7 +7014,7 @@
                         cnt56++;
                     } while (true);
 
-                    RIGHT_PAREN158=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2907); if (state.failed) return retval; 
+                    RIGHT_PAREN158=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2921); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN158);
 
                     if ( state.backtracking==0 ) {
@@ -7022,7 +7023,7 @@
 
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, constr_parameters, lhs_unary
+                    // elements: lhs_unary, RIGHT_PAREN, constr_parameters
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -7032,14 +7033,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 943:3: -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
+                    // 947:3: -> ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:6: ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:6: ^( VT_AND_PREFIX[$and.start] ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_PREFIX, (and!=null?((Token)and.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:34: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:34: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -7064,12 +7065,12 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )*
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: ( lhs_unary -> lhs_unary )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:3: lhs_unary
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:2: ( lhs_unary -> lhs_unary )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:3: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2941);
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2955);
                     lhs_unary159=lhs_unary();
 
                     state._fsp--;
@@ -7088,7 +7089,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 947:13: -> lhs_unary
+                    // 951:13: -> lhs_unary
                     {
                         adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
@@ -7097,7 +7098,7 @@
                     retval.tree = root_0;}
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:3: ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:3: ( ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary ) )*
                     loop59:
                     do {
                         int alt59=2;
@@ -7125,9 +7126,9 @@
 
                         switch (alt59) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:5: ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: ( and_key ( constr_parameters )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:3: (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:3: (value= and_key ( constr_parameters )? | amper= DOUBLE_AMPER )
                     	    int alt58=2;
                     	    int LA58_0 = input.LA(1);
 
@@ -7146,15 +7147,15 @@
                     	    }
                     	    switch (alt58) {
                     	        case 1 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:5: value= and_key ( constr_parameters )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:5: value= and_key ( constr_parameters )?
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2971);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2985);
                     	            value=and_key();
 
                     	            state._fsp--;
                     	            if (state.failed) return retval;
                     	            if ( state.backtracking==0 ) stream_and_key.add(value.getTree());
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:19: ( constr_parameters )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:19: ( constr_parameters )?
                     	            int alt57=2;
                     	            int LA57_0 = input.LA(1);
 
@@ -7163,9 +7164,9 @@
                     	            }
                     	            switch (alt57) {
                     	                case 1 :
-                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:19: constr_parameters
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:19: constr_parameters
                     	                    {
-                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_and2973);
+                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_and2987);
                     	                    constr_parameters160=constr_parameters();
 
                     	                    state._fsp--;
@@ -7184,9 +7185,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:6: amper= DOUBLE_AMPER
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:6: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2987); if (state.failed) return retval; 
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and3001); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( state.backtracking==0 ) {
@@ -7201,7 +7202,7 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3001);
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3015);
                     	    lhs_unary161=lhs_unary();
 
                     	    state._fsp--;
@@ -7210,7 +7211,7 @@
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_and, lhs_unary, constr_parameters
+                    	    // elements: lhs_and, constr_parameters, lhs_unary
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -7220,14 +7221,14 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 954:3: -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary )
+                    	    // 958:3: -> ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary )
                     	    {
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:6: ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:6: ^( VT_AND_INFIX[andToken] ( constr_parameters )? $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
 
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:31: ( constr_parameters )?
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:31: ( constr_parameters )?
                     	        if ( stream_constr_parameters.hasNext() ) {
                     	            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -7281,7 +7282,7 @@
     };
 
     // $ANTLR start "lhs_unary"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
     public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
         DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
         retval.start = input.LT(1);
@@ -7313,19 +7314,19 @@
         Object SEMICOLON172_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
             int alt61=8;
             alt61 = dfa61.predict(input);
             switch (alt61) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:6: lhs_exist
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3042);
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3056);
                     lhs_exist162=lhs_exist();
 
                     state._fsp--;
@@ -7335,13 +7336,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:4: {...}? => lhs_not_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:4: {...}? => lhs_not_binding
                     {
                     if ( !((validateNotWithBinding())) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
                     }
-                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary3050);
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary3064);
                     lhs_not_binding163=lhs_not_binding();
 
                     state._fsp--;
@@ -7351,9 +7352,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:5: lhs_not
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3056);
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3070);
                     lhs_not164=lhs_not();
 
                     state._fsp--;
@@ -7363,9 +7364,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:5: lhs_eval
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3062);
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3076);
                     lhs_eval165=lhs_eval();
 
                     state._fsp--;
@@ -7375,9 +7376,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:5: lhs_forall
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3068);
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3082);
                     lhs_forall166=lhs_forall();
 
                     state._fsp--;
@@ -7387,9 +7388,9 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:5: lhs_forany
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:5: lhs_forany
                     {
-                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary3074);
+                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary3088);
                     lhs_forany167=lhs_forany();
 
                     state._fsp--;
@@ -7399,19 +7400,19 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN168=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3080); if (state.failed) return retval;
+                    LEFT_PAREN168=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3094); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN168, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3091);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3105);
                     lhs_or169=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or169.getTree());
-                    RIGHT_PAREN170=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3097); if (state.failed) return retval;
+                    RIGHT_PAREN170=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3111); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN170_tree = (Object)adaptor.create(RIGHT_PAREN170);
                     adaptor.addChild(root_0, RIGHT_PAREN170_tree);
@@ -7423,9 +7424,9 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:5: pattern_source
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary3105);
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary3119);
                     pattern_source171=pattern_source();
 
                     state._fsp--;
@@ -7437,7 +7438,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:3: ( ( SEMICOLON )=> SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:3: ( ( SEMICOLON )=> SEMICOLON )?
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -7450,9 +7451,9 @@
             }
             switch (alt62) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:4: ( SEMICOLON )=> SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON172=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary3119); if (state.failed) return retval;
+                    SEMICOLON172=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary3133); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(SEMICOLON172, DroolsEditorType.SYMBOL);	
                     }
@@ -7491,7 +7492,7 @@
     };
 
     // $ANTLR start "lhs_exist"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:972:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
         DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
         retval.start = input.LT(1);
@@ -7517,10 +7518,10 @@
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_exists_key_in_lhs_exist3135);
+            pushFollow(FOLLOW_exists_key_in_lhs_exist3149);
             exists_key173=exists_key();
 
             state._fsp--;
@@ -7529,7 +7530,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt63=3;
             int LA63_0 = input.LA(1);
 
@@ -7553,7 +7554,7 @@
             else if ( (LA63_0==ID) ) {
                 int LA63_2 = input.LA(2);
 
-                if ( (((synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred9_DRL()||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||((synpred9_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
+                if ( (((synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred9_DRL()||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||((synpred9_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY)))))) ) {
                     alt63=1;
                 }
                 else if ( (true) ) {
@@ -7576,9 +7577,9 @@
             }
             switch (alt63) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3162);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3176);
                     lhs_or174=lhs_or();
 
                     state._fsp--;
@@ -7588,21 +7589,21 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN175=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3169); if (state.failed) return retval; 
+                    LEFT_PAREN175=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3183); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN175);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN175, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3177);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3191);
                     lhs_or176=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or176.getTree());
-                    RIGHT_PAREN177=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3184); if (state.failed) return retval; 
+                    RIGHT_PAREN177=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3198); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN177);
 
                     if ( state.backtracking==0 ) {
@@ -7612,9 +7613,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:12: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3199);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3213);
                     lhs_pattern178=lhs_pattern();
 
                     state._fsp--;
@@ -7629,7 +7630,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, lhs_or, exists_key, lhs_pattern
+            // elements: lhs_pattern, lhs_or, exists_key, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7639,26 +7640,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 981:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 985:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:26: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:34: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:47: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7699,7 +7700,7 @@
     };
 
     // $ANTLR start "lhs_not_binding"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:988:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
     public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
         DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
         retval.start = input.LT(1);
@@ -7714,16 +7715,16 @@
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:4: not_key fact_binding
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding3245);
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding3259);
             not_key179=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_not_key.add(not_key179.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3247);
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3261);
             fact_binding180=fact_binding();
 
             state._fsp--;
@@ -7732,7 +7733,7 @@
 
 
             // AST REWRITE
-            // elements: fact_binding, not_key
+            // elements: not_key, fact_binding
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7742,14 +7743,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 986:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 990:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:15: ^( VT_PATTERN fact_binding )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
@@ -7793,7 +7794,7 @@
     };
 
     // $ANTLR start "lhs_not"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
         DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
         retval.start = input.LT(1);
@@ -7819,10 +7820,10 @@
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not3270);
+            pushFollow(FOLLOW_not_key_in_lhs_not3284);
             not_key181=not_key();
 
             state._fsp--;
@@ -7831,7 +7832,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt64=3;
             int LA64_0 = input.LA(1);
 
@@ -7878,12 +7879,12 @@
             }
             switch (alt64) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3292);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3306);
                     lhs_or182=lhs_or();
 
                     state._fsp--;
@@ -7893,21 +7894,21 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN183=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3299); if (state.failed) return retval; 
+                    LEFT_PAREN183=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3313); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN183);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN183, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3308);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3322);
                     lhs_or184=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or184.getTree());
-                    RIGHT_PAREN185=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3314); if (state.failed) return retval; 
+                    RIGHT_PAREN185=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3328); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN185);
 
                     if ( state.backtracking==0 ) {
@@ -7917,9 +7918,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:6: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3324);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3338);
                     lhs_pattern186=lhs_pattern();
 
                     state._fsp--;
@@ -7934,7 +7935,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, lhs_or, not_key, lhs_pattern
+            // elements: lhs_pattern, RIGHT_PAREN, lhs_or, not_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7944,26 +7945,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 996:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 1000:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:23: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:31: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:44: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -8004,7 +8005,7 @@
     };
 
     // $ANTLR start "lhs_eval"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1003:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
     public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
         DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
         retval.start = input.LT(1);
@@ -8019,10 +8020,10 @@
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:4: ev= eval_key pc= paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval3363);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval3377);
             ev=eval_key();
 
             state._fsp--;
@@ -8031,7 +8032,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3372);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3386);
             pc=paren_chunk();
 
             state._fsp--;
@@ -8050,7 +8051,7 @@
 
 
             // AST REWRITE
-            // elements: eval_key, paren_chunk
+            // elements: paren_chunk, eval_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8060,9 +8061,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1009:3: -> ^( eval_key paren_chunk )
+            // 1013:3: -> ^( eval_key paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1009:6: ^( eval_key paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -8103,7 +8104,7 @@
     };
 
     // $ANTLR start "lhs_forall"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1012:1: lhs_forall : forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:1: lhs_forall : forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) ;
     public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
         DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
         retval.start = input.LT(1);
@@ -8124,22 +8125,22 @@
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall3399);
+            pushFollow(FOLLOW_forall_key_in_lhs_forall3413);
             forall_key187=forall_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_forall_key.add(forall_key187.getTree());
-            LEFT_PAREN188=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3404); if (state.failed) return retval; 
+            LEFT_PAREN188=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3418); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN188);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN188, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:4: ( pattern_source )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:4: ( pattern_source )+
             int cnt65=0;
             loop65:
             do {
@@ -8153,9 +8154,9 @@
 
                 switch (alt65) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:4: pattern_source
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:4: pattern_source
             	    {
-            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3412);
+            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3426);
             	    pattern_source189=pattern_source();
 
             	    state._fsp--;
@@ -8175,7 +8176,7 @@
                 cnt65++;
             } while (true);
 
-            RIGHT_PAREN190=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3418); if (state.failed) return retval; 
+            RIGHT_PAREN190=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3432); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN190);
 
             if ( state.backtracking==0 ) {
@@ -8184,7 +8185,7 @@
 
 
             // AST REWRITE
-            // elements: forall_key, pattern_source, RIGHT_PAREN
+            // elements: forall_key, RIGHT_PAREN, pattern_source
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8194,9 +8195,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1017:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+            // 1021:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1021:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -8245,7 +8246,7 @@
     };
 
     // $ANTLR start "lhs_forany"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1022:1: lhs_forany : forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:1: lhs_forany : forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) ;
     public final DRLParser.lhs_forany_return lhs_forany() throws RecognitionException {
         DRLParser.lhs_forany_return retval = new DRLParser.lhs_forany_return();
         retval.start = input.LT(1);
@@ -8276,31 +8277,31 @@
         RewriteRuleSubtreeStream stream_subject_key=new RewriteRuleSubtreeStream(adaptor,"rule subject_key");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:3: ( forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:5: forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:3: ( forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:5: forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forany_key_in_lhs_forany3449);
+            pushFollow(FOLLOW_forany_key_in_lhs_forany3463);
             forany_key191=forany_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_forany_key.add(forany_key191.getTree());
-            LEFT_PAREN192=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3456); if (state.failed) return retval; 
+            LEFT_PAREN192=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3470); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN192);
 
             if ( state.backtracking==0 ) {
                 emit(LEFT_PAREN192, DroolsEditorType.SYMBOL); 
             }
-            pushFollow(FOLLOW_lhs_or_in_lhs_forany3467);
+            pushFollow(FOLLOW_lhs_or_in_lhs_forany3481);
             lhs_or193=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or193.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:7: ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:7: ( subject_key s= lhs_or )? ( weight_key w= lhs_or )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:7: ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:7: ( subject_key s= lhs_or )? ( weight_key w= lhs_or )?
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:7: ( subject_key s= lhs_or )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:7: ( subject_key s= lhs_or )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8313,15 +8314,15 @@
             }
             switch (alt66) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:8: subject_key s= lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:8: subject_key s= lhs_or
                     {
-                    pushFollow(FOLLOW_subject_key_in_lhs_forany3486);
+                    pushFollow(FOLLOW_subject_key_in_lhs_forany3500);
                     subject_key194=subject_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_subject_key.add(subject_key194.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3490);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3504);
                     s=lhs_or();
 
                     state._fsp--;
@@ -8333,7 +8334,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:7: ( weight_key w= lhs_or )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:7: ( weight_key w= lhs_or )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
@@ -8342,15 +8343,15 @@
             }
             switch (alt67) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:8: weight_key w= lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:8: weight_key w= lhs_or
                     {
-                    pushFollow(FOLLOW_weight_key_in_lhs_forany3501);
+                    pushFollow(FOLLOW_weight_key_in_lhs_forany3515);
                     weight_key195=weight_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_weight_key.add(weight_key195.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3505);
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3519);
                     w=lhs_or();
 
                     state._fsp--;
@@ -8365,7 +8366,7 @@
 
             }
 
-            RIGHT_PAREN196=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3521); if (state.failed) return retval; 
+            RIGHT_PAREN196=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3535); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN196);
 
             if ( state.backtracking==0 ) {
@@ -8374,7 +8375,7 @@
 
 
             // AST REWRITE
-            // elements: w, weight_key, subject_key, lhs_or, RIGHT_PAREN, s, forany_key
+            // elements: RIGHT_PAREN, w, subject_key, lhs_or, weight_key, s, forany_key
             // token labels: 
             // rule labels: w, retval, s
             // token list labels: 
@@ -8386,15 +8387,15 @@
             RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"token s",s!=null?s.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1031:5: -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+            // 1035:5: -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:8: ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:8: ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forany_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:28: ( subject_key $s)?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:28: ( subject_key $s)?
                 if ( stream_subject_key.hasNext()||stream_s.hasNext() ) {
                     adaptor.addChild(root_1, stream_subject_key.nextTree());
                     adaptor.addChild(root_1, stream_s.nextTree());
@@ -8402,7 +8403,7 @@
                 }
                 stream_subject_key.reset();
                 stream_s.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:46: ( weight_key $w)?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:46: ( weight_key $w)?
                 if ( stream_w.hasNext()||stream_weight_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_weight_key.nextTree());
                     adaptor.addChild(root_1, stream_w.nextTree());
@@ -8446,7 +8447,7 @@
     };
 
     // $ANTLR start "pattern_source"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1039:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
     public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
         DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
         retval.start = input.LT(1);
@@ -8471,18 +8472,18 @@
 
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1038:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1039:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3582);
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3596);
             lhs_pattern197=lhs_pattern();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern197.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:3: ( over_clause )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:3: ( over_clause )?
             int alt68=2;
             int LA68_0 = input.LA(1);
 
@@ -8491,9 +8492,9 @@
             }
             switch (alt68) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:3: over_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source3586);
+                    pushFollow(FOLLOW_over_clause_in_pattern_source3600);
                     over_clause198=over_clause();
 
                     state._fsp--;
@@ -8505,7 +8506,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
@@ -8514,9 +8515,9 @@
             }
             switch (alt70) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM199=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3596); if (state.failed) return retval;
+                    FROM199=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3610); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     FROM199_tree = (Object)adaptor.create(FROM199);
                     root_0 = (Object)adaptor.becomeRoot(FROM199_tree, root_0);
@@ -8525,7 +8526,7 @@
                       	emit(FROM199, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     int alt69=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -8567,9 +8568,9 @@
 
                     switch (alt69) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:14: accumulate_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3616);
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3630);
                             accumulate_statement200=accumulate_statement();
 
                             state._fsp--;
@@ -8579,9 +8580,9 @@
                             }
                             break;
                         case 2 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:15: collect_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source3632);
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source3646);
                             collect_statement201=collect_statement();
 
                             state._fsp--;
@@ -8591,9 +8592,9 @@
                             }
                             break;
                         case 3 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:15: entrypoint_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3649);
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3663);
                             entrypoint_statement202=entrypoint_statement();
 
                             state._fsp--;
@@ -8603,9 +8604,9 @@
                             }
                             break;
                         case 4 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:15: from_source
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source3665);
+                            pushFollow(FOLLOW_from_source_in_pattern_source3679);
                             from_source203=from_source();
 
                             state._fsp--;
@@ -8668,7 +8669,7 @@
     };
 
     // $ANTLR start "over_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
     public final DRLParser.over_clause_return over_clause() throws RecognitionException {
         DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
         retval.start = input.LT(1);
@@ -8686,12 +8687,12 @@
         Object COMMA206_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:2: ( OVER over_elements ( COMMA over_elements )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:4: OVER over_elements ( COMMA over_elements )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER204=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3697); if (state.failed) return retval;
+            OVER204=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3711); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             OVER204_tree = (Object)adaptor.create(OVER204);
             root_0 = (Object)adaptor.becomeRoot(OVER204_tree, root_0);
@@ -8699,13 +8700,13 @@
             if ( state.backtracking==0 ) {
               	emit(OVER204, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause3702);
+            pushFollow(FOLLOW_over_elements_in_over_clause3716);
             over_elements205=over_elements();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements205.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:4: ( COMMA over_elements )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:4: ( COMMA over_elements )*
             loop71:
             do {
                 int alt71=2;
@@ -8730,13 +8731,13 @@
 
                 switch (alt71) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:5: COMMA over_elements
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:5: COMMA over_elements
             	    {
-            	    COMMA206=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3709); if (state.failed) return retval;
+            	    COMMA206=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3723); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA206, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause3714);
+            	    pushFollow(FOLLOW_over_elements_in_over_clause3728);
             	    over_elements207=over_elements();
 
             	    state._fsp--;
@@ -8780,7 +8781,7 @@
     };
 
     // $ANTLR start "over_elements"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
     public final DRLParser.over_elements_return over_elements() throws RecognitionException {
         DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
         retval.start = input.LT(1);
@@ -8800,28 +8801,28 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:4: id1= ID COLON id2= ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3729); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3743); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
             if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON208=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3736); if (state.failed) return retval; 
+            COLON208=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3750); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON208);
 
             if ( state.backtracking==0 ) {
               	emit(COLON208, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3745); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3759); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
               	emit(id2, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_over_elements3752);
+            pushFollow(FOLLOW_paren_chunk_in_over_elements3766);
             paren_chunk209=paren_chunk();
 
             state._fsp--;
@@ -8830,7 +8831,7 @@
 
 
             // AST REWRITE
-            // elements: id2, id1, paren_chunk
+            // elements: id1, id2, paren_chunk
             // token labels: id2, id1
             // rule labels: retval
             // token list labels: 
@@ -8842,9 +8843,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1076:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 1080:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
@@ -8887,7 +8888,7 @@
     };
 
     // $ANTLR start "accumulate_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
     public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
         DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
         retval.start = input.LT(1);
@@ -8917,10 +8918,10 @@
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE210=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3778); if (state.failed) return retval; 
+            ACCUMULATE210=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3792); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE210);
 
             if ( state.backtracking==0 ) {
@@ -8929,19 +8930,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN211=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3787); if (state.failed) return retval; 
+            LEFT_PAREN211=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3801); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN211);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN211, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3795);
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3809);
             lhs_or212=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or212.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:3: ( COMMA )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:3: ( COMMA )?
             int alt72=2;
             int LA72_0 = input.LA(1);
 
@@ -8950,9 +8951,9 @@
             }
             switch (alt72) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:3: COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:3: COMMA
                     {
-                    COMMA213=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3800); if (state.failed) return retval; 
+                    COMMA213=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3814); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(COMMA213);
 
 
@@ -8964,7 +8965,7 @@
             if ( state.backtracking==0 ) {
               	emit(COMMA213, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:3: ( accumulate_init_clause | accumulate_id_clause )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1089:3: ( accumulate_init_clause | accumulate_id_clause )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -8994,9 +8995,9 @@
             }
             switch (alt73) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:5: accumulate_init_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1089:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3810);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3824);
                     accumulate_init_clause214=accumulate_init_clause();
 
                     state._fsp--;
@@ -9006,9 +9007,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1086:5: accumulate_id_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3816);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3830);
                     accumulate_id_clause215=accumulate_id_clause();
 
                     state._fsp--;
@@ -9020,7 +9021,7 @@
 
             }
 
-            RIGHT_PAREN216=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3824); if (state.failed) return retval; 
+            RIGHT_PAREN216=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3838); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN216);
 
             if ( state.backtracking==0 ) {
@@ -9032,7 +9033,7 @@
 
 
             // AST REWRITE
-            // elements: ACCUMULATE, accumulate_init_clause, lhs_or, accumulate_id_clause, RIGHT_PAREN
+            // elements: accumulate_id_clause, ACCUMULATE, accumulate_init_clause, RIGHT_PAREN, lhs_or
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9042,21 +9043,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1090:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 1094:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:26: ( accumulate_init_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:50: ( accumulate_id_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
@@ -9098,7 +9099,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1094:1: accumulate_init_clause : init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:1: accumulate_init_clause : init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
     public final DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
         DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -9136,10 +9137,10 @@
         RewriteRuleSubtreeStream stream_init_key=new RewriteRuleSubtreeStream(adaptor,"rule init_key");
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:2: ( init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1097:4: init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:2: ( init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:4: init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
             {
-            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3870);
+            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3884);
             init_key217=init_key();
 
             state._fsp--;
@@ -9148,13 +9149,13 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3880);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3894);
             pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:84: (cm1= COMMA )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:84: (cm1= COMMA )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9163,9 +9164,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:84: cm1= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:84: cm1= COMMA
                     {
-                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3885); if (state.failed) return retval; 
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3899); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -9180,19 +9181,19 @@
             if ( state.backtracking==0 ) {
               	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3896);
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3910);
             action_key218=action_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_action_key.add(action_key218.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3900);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3914);
             pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:97: (cm2= COMMA )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1105:97: (cm2= COMMA )?
             int alt75=2;
             int LA75_0 = input.LA(1);
 
@@ -9201,9 +9202,9 @@
             }
             switch (alt75) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:97: cm2= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1105:97: cm2= COMMA
                     {
-                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3905); if (state.failed) return retval; 
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3919); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -9218,7 +9219,7 @@
             if ( state.backtracking==0 ) {
               	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -9231,21 +9232,21 @@
             }
             switch (alt77) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3917);
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3931);
                     reverse_key219=reverse_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key219.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3921);
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3935);
                     pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:100: (cm3= COMMA )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:100: (cm3= COMMA )?
                     int alt76=2;
                     int LA76_0 = input.LA(1);
 
@@ -9254,9 +9255,9 @@
                     }
                     switch (alt76) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:100: cm3= COMMA
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:100: cm3= COMMA
                             {
-                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3926); if (state.failed) return retval; 
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3940); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -9282,7 +9283,7 @@
               		}	
               	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3942);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3956);
             res1=result_key();
 
             state._fsp--;
@@ -9291,7 +9292,7 @@
             if ( state.backtracking==0 ) {
               	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3948);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3962);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
 
             state._fsp--;
@@ -9300,7 +9301,7 @@
 
 
             // AST REWRITE
-            // elements: pc3, pc4, init_key, pc1, result_key, pc2, reverse_key, action_key
+            // elements: pc2, action_key, pc3, pc1, pc4, result_key, reverse_key, init_key
             // token labels: 
             // rule labels: pc4, pc3, retval, pc1, pc2
             // token list labels: 
@@ -9314,14 +9315,14 @@
             RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1112:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 1116:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:33: ^( init_key $pc1)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:33: ^( init_key $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_init_key.nextNode(), root_2);
@@ -9330,7 +9331,7 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:50: ^( action_key $pc2)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:50: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -9339,9 +9340,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:69: ( ^( reverse_key $pc3) )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:69: ( ^( reverse_key $pc3) )?
                 if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:69: ^( reverse_key $pc3)
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:69: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -9354,7 +9355,7 @@
                 }
                 stream_pc3.reset();
                 stream_reverse_key.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:90: ^( result_key $pc4)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:90: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -9411,7 +9412,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
         retval.start = input.LT(1);
@@ -9426,10 +9427,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4006);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4020);
             pc=accumulate_paren_chunk_data(false, locationType);
 
             state._fsp--;
@@ -9451,7 +9452,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1129:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1133:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -9486,7 +9487,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1132:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
     public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -9504,12 +9505,12 @@
         Object rp1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4030); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4044); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -9523,7 +9524,7 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1145:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
             loop78:
             do {
                 int alt78=3;
@@ -9539,7 +9540,7 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1145:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -9560,9 +9561,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:87: accumulate_paren_chunk_data[true,-1]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1145:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4058);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4072);
             	    accumulate_paren_chunk_data220=accumulate_paren_chunk_data(true, -1);
 
             	    state._fsp--;
@@ -9577,7 +9578,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4069); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4083); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -9619,7 +9620,7 @@
     };
 
     // $ANTLR start "accumulate_id_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1151:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
     public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
         DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
         retval.start = input.LT(1);
@@ -9634,16 +9635,16 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:4: ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:4: ID paren_chunk
             {
-            ID221=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause4085); if (state.failed) return retval; 
+            ID221=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause4099); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID221);
 
             if ( state.backtracking==0 ) {
               	emit(ID221, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause4091);
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause4105);
             paren_chunk222=paren_chunk();
 
             state._fsp--;
@@ -9662,9 +9663,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1154:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1158:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1154:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
@@ -9706,7 +9707,7 @@
     };
 
     // $ANTLR start "collect_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
     public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
         DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
         retval.start = input.LT(1);
@@ -9727,10 +9728,10 @@
         RewriteRuleTokenStream stream_COLLECT=new RewriteRuleTokenStream(adaptor,"token COLLECT");
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT223=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement4113); if (state.failed) return retval; 
+            COLLECT223=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement4127); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT223);
 
             if ( state.backtracking==0 ) {
@@ -9739,19 +9740,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN224=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement4122); if (state.failed) return retval; 
+            LEFT_PAREN224=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement4136); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN224);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN224, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement4129);
+            pushFollow(FOLLOW_pattern_source_in_collect_statement4143);
             pattern_source225=pattern_source();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source225.getTree());
-            RIGHT_PAREN226=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement4134); if (state.failed) return retval; 
+            RIGHT_PAREN226=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement4148); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN226);
 
             if ( state.backtracking==0 ) {
@@ -9763,7 +9764,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, COLLECT, pattern_source
+            // elements: pattern_source, COLLECT, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9773,9 +9774,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1164:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1168:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1164:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
@@ -9817,7 +9818,7 @@
     };
 
     // $ANTLR start "entrypoint_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
     public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
         DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
         retval.start = input.LT(1);
@@ -9832,10 +9833,10 @@
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:4: entry_point_key entrypoint_id
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4161);
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4175);
             entry_point_key227=entry_point_key();
 
             state._fsp--;
@@ -9844,7 +9845,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4169);
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4183);
             entrypoint_id228=entrypoint_id();
 
             state._fsp--;
@@ -9866,9 +9867,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1172:2: -> ^( entry_point_key entrypoint_id )
+            // 1176:2: -> ^( entry_point_key entrypoint_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:5: ^( entry_point_key entrypoint_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -9909,7 +9910,7 @@
     };
 
     // $ANTLR start "entrypoint_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1175:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1179:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
     public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
         DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
         retval.start = input.LT(1);
@@ -9923,7 +9924,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
             int alt79=2;
             int LA79_0 = input.LA(1);
 
@@ -9942,9 +9943,9 @@
             }
             switch (alt79) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:5: value= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:5: value= ID
                     {
-                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4195); if (state.failed) return retval; 
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4209); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -9963,7 +9964,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1177:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1181:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -9973,9 +9974,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:5: value= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1182:5: value= STRING
                     {
-                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4212); if (state.failed) return retval; 
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4226); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -9994,7 +9995,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1179:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1183:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -10031,7 +10032,7 @@
     };
 
     // $ANTLR start "from_source"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1182:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1186:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.from_source_return from_source() throws RecognitionException {
         DRLParser.from_source_return retval = new DRLParser.from_source_return();
         retval.start = input.LT(1);
@@ -10049,23 +10050,23 @@
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID229=(Token)match(input,ID,FOLLOW_ID_in_from_source4232); if (state.failed) return retval; 
+            ID229=(Token)match(input,ID,FOLLOW_ID_in_from_source4246); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID229);
 
             if ( state.backtracking==0 ) {
               	emit(ID229, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
             int alt80=2;
             alt80 = dfa80.predict(input);
             switch (alt80) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source4247);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source4261);
                     args=paren_chunk();
 
                     state._fsp--;
@@ -10077,7 +10078,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:3: ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1189:3: ( expression_chain )?
             int alt81=2;
             int LA81_0 = input.LA(1);
 
@@ -10086,9 +10087,9 @@
             }
             switch (alt81) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1189:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source4254);
+                    pushFollow(FOLLOW_expression_chain_in_from_source4268);
                     expression_chain230=expression_chain();
 
                     state._fsp--;
@@ -10110,7 +10111,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID, expression_chain
+            // elements: expression_chain, ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10120,21 +10121,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1191:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1195:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1191:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1191:25: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1191:38: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -10175,7 +10176,7 @@
     };
 
     // $ANTLR start "expression_chain"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
         DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
         retval.start = input.LT(1);
@@ -10199,33 +10200,33 @@
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1196:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT231=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4287); if (state.failed) return retval; 
+            DOT231=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4301); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_DOT.add(DOT231);
 
             if ( state.backtracking==0 ) {
               	emit(DOT231, DroolsEditorType.IDENTIFIER);	
             }
-            ID232=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4294); if (state.failed) return retval; 
+            ID232=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4308); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID232);
 
             if ( state.backtracking==0 ) {
               	emit(ID232, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:4: ({...}? paren_chunk | square_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1202:4: ({...}? paren_chunk | square_chunk )?
             int alt82=3;
             alt82 = dfa82.predict(input);
             switch (alt82) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:6: {...}? paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1203:6: {...}? paren_chunk
                     {
                     if ( !((input.LA(1) == LEFT_PAREN)) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4310);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4324);
                     paren_chunk233=paren_chunk();
 
                     state._fsp--;
@@ -10235,9 +10236,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:6: square_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain4324);
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain4338);
                     square_chunk234=square_chunk();
 
                     state._fsp--;
@@ -10249,7 +10250,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1203:4: ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:4: ( expression_chain )?
             int alt83=2;
             int LA83_0 = input.LA(1);
 
@@ -10258,9 +10259,9 @@
             }
             switch (alt83) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1203:4: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain4335);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain4349);
                     expression_chain235=expression_chain();
 
                     state._fsp--;
@@ -10275,7 +10276,7 @@
 
 
             // AST REWRITE
-            // elements: square_chunk, ID, paren_chunk, expression_chain
+            // elements: ID, paren_chunk, square_chunk, expression_chain
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10285,27 +10286,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1204:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1208:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT231), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:38: ( square_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:52: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:65: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -10346,7 +10347,7 @@
     };
 
     // $ANTLR start "lhs_pattern"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1208:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
     public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
         DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
         retval.start = input.LT(1);
@@ -10361,7 +10362,7 @@
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:3: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1213:3: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
             int alt84=2;
             int LA84_0 = input.LA(1);
 
@@ -10391,9 +10392,9 @@
             }
             switch (alt84) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:5: fact_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1213:5: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4371);
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4385);
                     fact_binding236=fact_binding();
 
                     state._fsp--;
@@ -10412,9 +10413,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1209:18: -> ^( VT_PATTERN fact_binding )
+                    // 1213:18: -> ^( VT_PATTERN fact_binding )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:21: ^( VT_PATTERN fact_binding )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1213:21: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -10430,9 +10431,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:5: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1214:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern4386);
+                    pushFollow(FOLLOW_fact_in_lhs_pattern4400);
                     fact237=fact();
 
                     state._fsp--;
@@ -10451,9 +10452,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1210:11: -> ^( VT_PATTERN fact )
+                    // 1214:11: -> ^( VT_PATTERN fact )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:14: ^( VT_PATTERN fact )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1214:14: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -10496,7 +10497,7 @@
     };
 
     // $ANTLR start "fact_binding"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1215:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1219:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
         DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
         retval.start = input.LT(1);
@@ -10520,16 +10521,16 @@
         RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
         RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1216:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1216:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1220:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1220:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding4414);
+            pushFollow(FOLLOW_label_in_fact_binding4428);
             label238=label();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_label.add(label238.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1221:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             int alt85=2;
             int LA85_0 = input.LA(1);
 
@@ -10548,9 +10549,9 @@
             }
             switch (alt85) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:5: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1221:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding4420);
+                    pushFollow(FOLLOW_fact_in_fact_binding4434);
                     fact239=fact();
 
                     state._fsp--;
@@ -10560,21 +10561,21 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1218:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN240=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4427); if (state.failed) return retval; 
+                    LEFT_PAREN240=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4441); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN240);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN240, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4435);
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4449);
                     fact_binding_expression241=fact_binding_expression();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression241.getTree());
-                    RIGHT_PAREN242=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding4443); if (state.failed) return retval; 
+                    RIGHT_PAREN242=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding4457); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN242);
 
                     if ( state.backtracking==0 ) {
@@ -10589,7 +10590,7 @@
 
 
             // AST REWRITE
-            // elements: fact, RIGHT_PAREN, label, fact_binding_expression
+            // elements: RIGHT_PAREN, label, fact_binding_expression, fact
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10599,27 +10600,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1222:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1226:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
 
                 adaptor.addChild(root_1, stream_label.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:30: ( fact )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:36: ( fact_binding_expression )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1222:61: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -10660,7 +10661,7 @@
     };
 
     // $ANTLR start "fact_binding_expression"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1225:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
     public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
         DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
         retval.start = input.LT(1);
@@ -10683,13 +10684,13 @@
         	Token orToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:5: ( fact -> fact )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:6: fact
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:5: ( fact -> fact )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression4484);
+            pushFollow(FOLLOW_fact_in_fact_binding_expression4498);
             fact243=fact();
 
             state._fsp--;
@@ -10708,7 +10709,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1228:11: -> fact
+            // 1232:11: -> fact
             {
                 adaptor.addChild(root_0, stream_fact.nextTree());
 
@@ -10717,7 +10718,7 @@
             retval.tree = root_0;}
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             loop87:
             do {
                 int alt87=2;
@@ -10733,9 +10734,9 @@
 
                 switch (alt87) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:22: (value= or_key | pipe= DOUBLE_PIPE )
             	    int alt86=2;
             	    int LA86_0 = input.LA(1);
 
@@ -10754,9 +10755,9 @@
             	    }
             	    switch (alt86) {
             	        case 1 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:23: value= or_key
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4496);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4510);
             	            value=or_key();
 
             	            state._fsp--;
@@ -10769,9 +10770,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1228:62: pipe= DOUBLE_PIPE
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4502); if (state.failed) return retval; 
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4516); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( state.backtracking==0 ) {
@@ -10783,7 +10784,7 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4507);
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4521);
             	    fact244=fact();
 
             	    state._fsp--;
@@ -10792,7 +10793,7 @@
 
 
             	    // AST REWRITE
-            	    // elements: fact, fact_binding_expression
+            	    // elements: fact_binding_expression, fact
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -10802,9 +10803,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1229:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1233:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_OR, orToken), root_1);
@@ -10855,7 +10856,7 @@
     };
 
     // $ANTLR start "fact"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1236:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) ;
     public final DRLParser.fact_return fact() throws RecognitionException {
         DRLParser.fact_return retval = new DRLParser.fact_return();
         retval.start = input.LT(1);
@@ -10880,16 +10881,16 @@
         RewriteRuleSubtreeStream stream_pattern_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1235:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1235:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )?
             {
-            pushFollow(FOLLOW_pattern_type_in_fact4547);
+            pushFollow(FOLLOW_pattern_type_in_fact4561);
             pattern_type245=pattern_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type245.getTree());
-            LEFT_PAREN246=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4552); if (state.failed) return retval; 
+            LEFT_PAREN246=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4566); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN246);
 
             if ( state.backtracking==0 ) {
@@ -10898,7 +10899,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: ( constraints )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1242:4: ( constraints )?
             int alt88=2;
             int LA88_0 = input.LA(1);
 
@@ -10907,9 +10908,9 @@
             }
             switch (alt88) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1238:4: constraints
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1242:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact4563);
+                    pushFollow(FOLLOW_constraints_in_fact4577);
                     constraints247=constraints();
 
                     state._fsp--;
@@ -10921,13 +10922,13 @@
 
             }
 
-            RIGHT_PAREN248=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4569); if (state.failed) return retval; 
+            RIGHT_PAREN248=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4583); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN248);
 
             if ( state.backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:4: ( constr_parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:4: ( constr_parameters )?
             int alt89=2;
             int LA89_0 = input.LA(1);
 
@@ -10936,9 +10937,9 @@
             }
             switch (alt89) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1240:4: constr_parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1244:4: constr_parameters
                     {
-                    pushFollow(FOLLOW_constr_parameters_in_fact4576);
+                    pushFollow(FOLLOW_constr_parameters_in_fact4590);
                     constr_parameters249=constr_parameters();
 
                     state._fsp--;
@@ -10969,21 +10970,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1248:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
+            // 1252:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:5: ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:5: ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT, "VT_FACT"), root_1);
 
                 adaptor.addChild(root_1, stream_pattern_type.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:28: ( constraints )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
                     adaptor.addChild(root_1, stream_constraints.nextTree());
 
                 }
                 stream_constraints.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:41: ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:41: ( constr_parameters )?
                 if ( stream_constr_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -11035,7 +11036,7 @@
     };
 
     // $ANTLR start "constraints"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:1: constraints : constraint ( COMMA constraint )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:1: constraints : constraint ( COMMA constraint )* ;
     public final DRLParser.constraints_return constraints() throws RecognitionException {
         DRLParser.constraints_return retval = new DRLParser.constraints_return();
         retval.start = input.LT(1);
@@ -11051,18 +11052,18 @@
         Object COMMA251_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:2: ( constraint ( COMMA constraint )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:4: constraint ( COMMA constraint )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:2: ( constraint ( COMMA constraint )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints4622);
+            pushFollow(FOLLOW_constraint_in_constraints4636);
             constraint250=constraint();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint250.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:15: ( COMMA constraint )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:15: ( COMMA constraint )*
             loop90:
             do {
                 int alt90=2;
@@ -11075,14 +11076,14 @@
 
                 switch (alt90) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:17: COMMA constraint
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:17: COMMA constraint
             	    {
-            	    COMMA251=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4626); if (state.failed) return retval;
+            	    COMMA251=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4640); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA251, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints4633);
+            	    pushFollow(FOLLOW_constraint_in_constraints4647);
             	    constraint252=constraint();
 
             	    state._fsp--;
@@ -11126,7 +11127,7 @@
     };
 
     // $ANTLR start "constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:1: constraint : or_constr ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1268:1: constraint : or_constr ;
     public final DRLParser.constraint_return constraint() throws RecognitionException {
         DRLParser.constraint_return retval = new DRLParser.constraint_return();
         retval.start = input.LT(1);
@@ -11138,12 +11139,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1265:2: ( or_constr )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1265:4: or_constr
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:2: ( or_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint4647);
+            pushFollow(FOLLOW_or_constr_in_constraint4661);
             or_constr253=or_constr();
 
             state._fsp--;
@@ -11178,7 +11179,7 @@
     };
 
     // $ANTLR start "or_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1271:1: or_constr : or_constr_config ( DOUBLE_PIPE and_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:1: or_constr : or_constr_config ( DOUBLE_PIPE and_constr )* ;
     public final DRLParser.or_constr_return or_constr() throws RecognitionException {
         DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
         retval.start = input.LT(1);
@@ -11194,18 +11195,18 @@
         Object DOUBLE_PIPE255_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:3: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:6: or_constr_config ( DOUBLE_PIPE and_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:3: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1277:6: or_constr_config ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_config_in_or_constr4680);
+            pushFollow(FOLLOW_or_constr_config_in_or_constr4694);
             or_constr_config254=or_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr_config254.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:9: ( DOUBLE_PIPE and_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1279:9: ( DOUBLE_PIPE and_constr )*
             loop91:
             do {
                 int alt91=2;
@@ -11218,14 +11219,14 @@
 
                 switch (alt91) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:10: DOUBLE_PIPE and_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1279:10: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE255=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4702); if (state.failed) return retval;
+            	    DOUBLE_PIPE255=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4716); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE255_tree = (Object)adaptor.create(DOUBLE_PIPE255);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE255_tree, root_0);
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr4738);
+            	    pushFollow(FOLLOW_and_constr_in_or_constr4752);
             	    and_constr256=and_constr();
 
             	    state._fsp--;
@@ -11269,7 +11270,7 @@
     };
 
     // $ANTLR start "or_constr_config"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1281:1: or_constr_config : ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1285:1: or_constr_config : ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr );
     public final DRLParser.or_constr_config_return or_constr_config() throws RecognitionException {
         DRLParser.or_constr_config_return retval = new DRLParser.or_constr_config_return();
         retval.start = input.LT(1);
@@ -11291,7 +11292,7 @@
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_and_constr=new RewriteRuleSubtreeStream(adaptor,"rule and_constr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1282:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1286:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr )
             int alt92=2;
             int LA92_0 = input.LA(1);
 
@@ -11338,24 +11339,24 @@
             }
             switch (alt92) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr
                     {
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4797);
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4811);
                     and_constr257=and_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_and_constr.add(and_constr257.getTree());
-                    SINGLE_PIPE258=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4808); if (state.failed) return retval; 
+                    SINGLE_PIPE258=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4822); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SINGLE_PIPE.add(SINGLE_PIPE258);
 
-                    pushFollow(FOLLOW_constr_parameters_in_or_constr_config4857);
+                    pushFollow(FOLLOW_constr_parameters_in_or_constr_config4871);
                     constr_parameters259=constr_parameters();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters259.getTree());
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4883);
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4897);
                     and_constr260=and_constr();
 
                     state._fsp--;
@@ -11364,7 +11365,7 @@
 
 
                     // AST REWRITE
-                    // elements: SINGLE_PIPE, and_constr, constr_parameters, and_constr
+                    // elements: and_constr, and_constr, constr_parameters, SINGLE_PIPE
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11374,14 +11375,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1291:7: -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
+                    // 1295:7: -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:10: ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1295:10: ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_PIPE.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:13: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1297:13: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -11399,11 +11400,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1296:5: and_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:5: and_constr
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4953);
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4967);
                     and_constr261=and_constr();
 
                     state._fsp--;
@@ -11440,7 +11441,7 @@
     };
 
     // $ANTLR start "and_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1299:1: and_constr : and_constr_config ( DOUBLE_AMPER unary_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1303:1: and_constr : and_constr_config ( DOUBLE_AMPER unary_constr )* ;
     public final DRLParser.and_constr_return and_constr() throws RecognitionException {
         DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
         retval.start = input.LT(1);
@@ -11456,18 +11457,18 @@
         Object DOUBLE_AMPER263_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:3: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:3: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1306:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_config_in_and_constr4995);
+            pushFollow(FOLLOW_and_constr_config_in_and_constr5009);
             and_constr_config262=and_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr_config262.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:11: ( DOUBLE_AMPER unary_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:11: ( DOUBLE_AMPER unary_constr )*
             loop93:
             do {
                 int alt93=2;
@@ -11480,14 +11481,14 @@
 
                 switch (alt93) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:12: DOUBLE_AMPER unary_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:12: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER263=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr5019); if (state.failed) return retval;
+            	    DOUBLE_AMPER263=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr5033); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER263_tree = (Object)adaptor.create(DOUBLE_AMPER263);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER263_tree, root_0);
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr5058);
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr5072);
             	    unary_constr264=unary_constr();
 
             	    state._fsp--;
@@ -11531,7 +11532,7 @@
     };
 
     // $ANTLR start "and_constr_config"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1311:1: and_constr_config : ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:1: and_constr_config : ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr );
     public final DRLParser.and_constr_config_return and_constr_config() throws RecognitionException {
         DRLParser.and_constr_config_return retval = new DRLParser.and_constr_config_return();
         retval.start = input.LT(1);
@@ -11553,14 +11554,14 @@
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_unary_constr=new RewriteRuleSubtreeStream(adaptor,"rule unary_constr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1312:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1316:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr )
             int alt95=2;
             int LA95_0 = input.LA(1);
 
             if ( (LA95_0==ID) ) {
                 int LA95_1 = input.LA(2);
 
-                if ( (((synpred13_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred13_DRL())) ) {
+                if ( ((synpred13_DRL()||(synpred13_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL)))))) ) {
                     alt95=1;
                 }
                 else if ( (true) ) {
@@ -11600,18 +11601,18 @@
             }
             switch (alt95) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr
                     {
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5138);
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5152);
                     unary_constr265=unary_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr265.getTree());
-                    SINGLE_AMPER266=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5149); if (state.failed) return retval; 
+                    SINGLE_AMPER266=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5163); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SINGLE_AMPER.add(SINGLE_AMPER266);
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:12: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:12: ( constr_parameters )?
                     int alt94=2;
                     int LA94_0 = input.LA(1);
 
@@ -11620,9 +11621,9 @@
                     }
                     switch (alt94) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:12: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:12: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_and_constr_config5198);
+                            pushFollow(FOLLOW_constr_parameters_in_and_constr_config5212);
                             constr_parameters267=constr_parameters();
 
                             state._fsp--;
@@ -11634,7 +11635,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5229);
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5243);
                     unary_constr268=unary_constr();
 
                     state._fsp--;
@@ -11643,7 +11644,7 @@
 
 
                     // AST REWRITE
-                    // elements: SINGLE_AMPER, constr_parameters, unary_constr, unary_constr
+                    // elements: unary_constr, unary_constr, SINGLE_AMPER, constr_parameters
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11653,14 +11654,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1321:7: -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
+                    // 1325:7: -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1321:10: ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:10: ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_AMPER.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:13: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:13: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -11678,11 +11679,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1326:5: unary_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1330:5: unary_constr
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5310);
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5324);
                     unary_constr269=unary_constr();
 
                     state._fsp--;
@@ -11719,7 +11720,7 @@
     };
 
     // $ANTLR start "unary_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1386:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
     public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
         DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
         retval.start = input.LT(1);
@@ -11742,22 +11743,22 @@
 
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1394:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
             int alt96=3;
             alt96 = dfa96.predict(input);
             switch (alt96) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1390:4: eval_key paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1394:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr5359);
+                    pushFollow(FOLLOW_eval_key_in_unary_constr5373);
                     eval_key270=eval_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key270.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5362);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5376);
                     paren_chunk271=paren_chunk();
 
                     state._fsp--;
@@ -11767,11 +11768,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:4: field_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1395:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr5367);
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr5381);
                     field_constraint272=field_constraint();
 
                     state._fsp--;
@@ -11781,21 +11782,21 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1392:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1396:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN273=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5373); if (state.failed) return retval;
+                    LEFT_PAREN273=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5387); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN273, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr5383);
+                    pushFollow(FOLLOW_or_constr_in_unary_constr5397);
                     or_constr274=or_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr274.getTree());
-                    RIGHT_PAREN275=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5388); if (state.failed) return retval;
+                    RIGHT_PAREN275=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5402); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN275_tree = (Object)adaptor.create(RIGHT_PAREN275);
                     adaptor.addChild(root_0, RIGHT_PAREN275_tree);
@@ -11845,7 +11846,7 @@
     };
 
     // $ANTLR start "field_constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
     public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
         DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
         retval.start = input.LT(1);
@@ -11876,7 +11877,7 @@
         	boolean isArrow = false;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
             int alt98=2;
             int LA98_0 = input.LA(1);
 
@@ -11906,21 +11907,21 @@
             }
             switch (alt98) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint5408);
+                    pushFollow(FOLLOW_label_in_field_constraint5422);
                     label276=label();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_label.add(label276.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint5410);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5424);
                     accessor_path277=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path277.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:3: ( or_restr_connective | arw= ARROW paren_chunk )?
                     int alt97=3;
                     int LA97_0 = input.LA(1);
 
@@ -11935,9 +11936,9 @@
                     }
                     switch (alt97) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:5: or_restr_connective
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5417);
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5431);
                             or_restr_connective278=or_restr_connective();
 
                             state._fsp--;
@@ -11947,15 +11948,15 @@
                             }
                             break;
                         case 2 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:27: arw= ARROW paren_chunk
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5423); if (state.failed) return retval; 
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5437); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_ARROW.add(arw);
 
                             if ( state.backtracking==0 ) {
                               	emit(arw, DroolsEditorType.SYMBOL);	
                             }
-                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5427);
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5441);
                             paren_chunk279=paren_chunk();
 
                             state._fsp--;
@@ -11973,7 +11974,7 @@
 
 
                     // AST REWRITE
-                    // elements: or_restr_connective, label, label, accessor_path, paren_chunk, accessor_path
+                    // elements: or_restr_connective, label, accessor_path, paren_chunk, label, accessor_path
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11983,15 +11984,15 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1411:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1415:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:39: ^( VT_FIELD accessor_path )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
@@ -12003,9 +12004,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VK_EVAL, arw), root_1);
@@ -12019,21 +12020,21 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1412:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1416:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1416:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1416:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
                         adaptor.addChild(root_2, stream_accessor_path.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:53: ( or_restr_connective )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1416:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
@@ -12052,15 +12053,15 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:4: accessor_path or_restr_connective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1417:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint5485);
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5499);
                     accessor_path280=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path280.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5487);
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5501);
                     or_restr_connective281=or_restr_connective();
 
                     state._fsp--;
@@ -12069,7 +12070,7 @@
 
 
                     // AST REWRITE
-                    // elements: or_restr_connective, accessor_path
+                    // elements: accessor_path, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -12079,9 +12080,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1414:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1418:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1414:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
@@ -12125,7 +12126,7 @@
     };
 
     // $ANTLR start "label"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1417:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1421:1: label : value= ID COLON -> VT_LABEL[$value] ;
     public final DRLParser.label_return label() throws RecognitionException {
         DRLParser.label_return retval = new DRLParser.label_return();
         retval.start = input.LT(1);
@@ -12141,16 +12142,16 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418:2: (value= ID COLON -> VT_LABEL[$value] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418:4: value= ID COLON
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1422:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1422:4: value= ID COLON
             {
-            value=(Token)match(input,ID,FOLLOW_ID_in_label5514); if (state.failed) return retval; 
+            value=(Token)match(input,ID,FOLLOW_ID_in_label5528); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(value);
 
             if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON282=(Token)match(input,COLON,FOLLOW_COLON_in_label5521); if (state.failed) return retval; 
+            COLON282=(Token)match(input,COLON,FOLLOW_COLON_in_label5535); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON282);
 
             if ( state.backtracking==0 ) {
@@ -12169,7 +12170,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1420:3: -> VT_LABEL[$value]
+            // 1424:3: -> VT_LABEL[$value]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
@@ -12204,7 +12205,7 @@
     };
 
     // $ANTLR start "or_restr_connective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1423:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
     public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
         DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
         retval.start = input.LT(1);
@@ -12220,18 +12221,18 @@
         Object DOUBLE_PIPE284_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1424:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1424:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1428:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1428:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5542);
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5556);
             and_restr_connective283=and_restr_connective();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective283.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1424:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1428:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
             loop99:
             do {
                 int alt99=2;
@@ -12250,13 +12251,13 @@
 
                 switch (alt99) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1424:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1428:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_PIPE284=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5548); if (state.failed) return retval;
+            	    DOUBLE_PIPE284=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5562); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_PIPE284_tree = (Object)adaptor.create(DOUBLE_PIPE284);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE284_tree, root_0);
@@ -12264,7 +12265,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_PIPE284, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5558);
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5572);
             	    and_restr_connective285=and_restr_connective();
 
             	    state._fsp--;
@@ -12313,7 +12314,7 @@
     };
 
     // $ANTLR start "and_restr_connective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1437:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1441:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
     public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
         DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
         retval.start = input.LT(1);
@@ -12329,18 +12330,18 @@
         Object DOUBLE_AMPER287_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1442:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1442:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5579);
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5593);
             constraint_expression286=constraint_expression();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression286.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1442:26: ({...}? => DOUBLE_AMPER constraint_expression )*
             loop100:
             do {
                 int alt100=2;
@@ -12359,13 +12360,13 @@
 
                 switch (alt100) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1442:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_AMPER287=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5585); if (state.failed) return retval;
+            	    DOUBLE_AMPER287=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5599); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	    DOUBLE_AMPER287_tree = (Object)adaptor.create(DOUBLE_AMPER287);
             	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER287_tree, root_0);
@@ -12373,7 +12374,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(DOUBLE_AMPER287, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5592);
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5606);
             	    constraint_expression288=constraint_expression();
 
             	    state._fsp--;
@@ -12422,7 +12423,7 @@
     };
 
     // $ANTLR start "constraint_expression"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1451:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );
     public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
         DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
         retval.start = input.LT(1);
@@ -12453,16 +12454,16 @@
         RewriteRuleSubtreeStream stream_custom_operator=new RewriteRuleSubtreeStream(adaptor,"rule custom_operator");
         RewriteRuleSubtreeStream stream_simple_operator=new RewriteRuleSubtreeStream(adaptor,"rule simple_operator");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:3: ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:3: ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN )
             int alt104=4;
             alt104 = dfa104.predict(input);
             switch (alt104) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1454:5: compound_operator
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5620);
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5634);
                     compound_operator289=compound_operator();
 
                     state._fsp--;
@@ -12472,15 +12473,15 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:4: simple_operator (ans= constr_parameters )? expression_value
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:4: simple_operator (ans= constr_parameters )? expression_value
                     {
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5625);
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5639);
                     simple_operator290=simple_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_simple_operator.add(simple_operator290.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:23: (ans= constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:23: (ans= constr_parameters )?
                     int alt101=2;
                     int LA101_0 = input.LA(1);
 
@@ -12489,9 +12490,9 @@
                     }
                     switch (alt101) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:23: ans= constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:23: ans= constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5629);
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5643);
                             ans=constr_parameters();
 
                             state._fsp--;
@@ -12503,7 +12504,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_expression_value_in_constraint_expression5632);
+                    pushFollow(FOLLOW_expression_value_in_constraint_expression5646);
                     expression_value291=expression_value();
 
                     state._fsp--;
@@ -12512,7 +12513,7 @@
 
 
                     // AST REWRITE
-                    // elements: expression_value, constr_parameters, simple_operator
+                    // elements: constr_parameters, expression_value, simple_operator
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -12522,9 +12523,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1456:5: -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )?
+                    // 1460:5: -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )?
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:8: ^( simple_operator expression_value )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:8: ^( simple_operator expression_value )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_simple_operator.nextNode(), root_1);
@@ -12533,9 +12534,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:44: ( ^( constr_parameters ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:44: ( ^( constr_parameters ) )?
                         if ( stream_constr_parameters.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:44: ^( constr_parameters )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:44: ^( constr_parameters )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
@@ -12552,15 +12553,15 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:4: custom_operator (ans= constr_parameters )? ( expression_value )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:4: custom_operator (ans= constr_parameters )? ( expression_value )?
                     {
-                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5654);
+                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5668);
                     custom_operator292=custom_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_custom_operator.add(custom_operator292.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:23: (ans= constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:23: (ans= constr_parameters )?
                     int alt102=2;
                     int LA102_0 = input.LA(1);
 
@@ -12569,9 +12570,9 @@
                     }
                     switch (alt102) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:23: ans= constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:23: ans= constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5658);
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5672);
                             ans=constr_parameters();
 
                             state._fsp--;
@@ -12583,7 +12584,7 @@
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:43: ( expression_value )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:43: ( expression_value )?
                     int alt103=2;
                     int LA103_0 = input.LA(1);
 
@@ -12592,9 +12593,9 @@
                     }
                     switch (alt103) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:43: expression_value
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:43: expression_value
                             {
-                            pushFollow(FOLLOW_expression_value_in_constraint_expression5661);
+                            pushFollow(FOLLOW_expression_value_in_constraint_expression5675);
                             expression_value293=expression_value();
 
                             state._fsp--;
@@ -12609,7 +12610,7 @@
 
 
                     // AST REWRITE
-                    // elements: custom_operator, expression_value, constr_parameters
+                    // elements: expression_value, custom_operator, constr_parameters
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -12619,14 +12620,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1458:5: -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )?
+                    // 1462:5: -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )?
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:8: ^( custom_operator ( expression_value )? )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:8: ^( custom_operator ( expression_value )? )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_custom_operator.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:26: ( expression_value )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:26: ( expression_value )?
                         if ( stream_expression_value.hasNext() ) {
                             adaptor.addChild(root_1, stream_expression_value.nextTree());
 
@@ -12635,9 +12636,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:45: ( ^( constr_parameters ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:45: ( ^( constr_parameters ) )?
                         if ( stream_constr_parameters.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:45: ^( constr_parameters )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1462:45: ^( constr_parameters )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
@@ -12654,21 +12655,21 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1463:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN294=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5685); if (state.failed) return retval;
+                    LEFT_PAREN294=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5699); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN294, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5694);
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5708);
                     or_restr_connective295=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective295.getTree());
-                    RIGHT_PAREN296=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5699); if (state.failed) return retval;
+                    RIGHT_PAREN296=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5713); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     RIGHT_PAREN296_tree = (Object)adaptor.create(RIGHT_PAREN296);
                     adaptor.addChild(root_0, RIGHT_PAREN296_tree);
@@ -12744,7 +12745,7 @@
     };
 
     // $ANTLR start "simple_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1505:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) ;
     public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
         DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
         retval.start = input.LT(1);
@@ -12769,12 +12770,12 @@
           if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1509:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1514:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
             int alt105=6;
             switch ( input.LA(1) ) {
             case EQUAL:
@@ -12817,9 +12818,9 @@
 
             switch (alt105) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1511:7: EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1515:7: EQUAL
                     {
-                    EQUAL297=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5742); if (state.failed) return retval;
+                    EQUAL297=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5756); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     EQUAL297_tree = (Object)adaptor.create(EQUAL297);
                     root_0 = (Object)adaptor.becomeRoot(EQUAL297_tree, root_0);
@@ -12835,9 +12836,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1517:7: GREATER
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1521:7: GREATER
                     {
-                    GREATER298=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator5801); if (state.failed) return retval;
+                    GREATER298=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator5815); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     GREATER298_tree = (Object)adaptor.create(GREATER298);
                     root_0 = (Object)adaptor.becomeRoot(GREATER298_tree, root_0);
@@ -12854,9 +12855,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1523:7: GREATER_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1527:7: GREATER_EQUAL
                     {
-                    GREATER_EQUAL299=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator5840); if (state.failed) return retval;
+                    GREATER_EQUAL299=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator5854); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     GREATER_EQUAL299_tree = (Object)adaptor.create(GREATER_EQUAL299);
                     root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL299_tree, root_0);
@@ -12873,9 +12874,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1529:7: LESS
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1533:7: LESS
                     {
-                    LESS300=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator5875); if (state.failed) return retval;
+                    LESS300=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator5889); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     LESS300_tree = (Object)adaptor.create(LESS300);
                     root_0 = (Object)adaptor.becomeRoot(LESS300_tree, root_0);
@@ -12892,9 +12893,9 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1535:7: LESS_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1539:7: LESS_EQUAL
                     {
-                    LESS_EQUAL301=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator5910); if (state.failed) return retval;
+                    LESS_EQUAL301=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator5924); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     LESS_EQUAL301_tree = (Object)adaptor.create(LESS_EQUAL301);
                     root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL301_tree, root_0);
@@ -12911,9 +12912,9 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:7: NOT_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:7: NOT_EQUAL
                     {
-                    NOT_EQUAL302=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator5945); if (state.failed) return retval;
+                    NOT_EQUAL302=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator5959); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     NOT_EQUAL302_tree = (Object)adaptor.create(NOT_EQUAL302);
                     root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL302_tree, root_0);
@@ -12961,7 +12962,7 @@
     };
 
     // $ANTLR start "custom_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:1: custom_operator : ( not_key )? ( approx_symb )? operator_key ( square_chunk )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:1: custom_operator : ( not_key )? ( approx_symb )? operator_key ( square_chunk )? ;
     public final DRLParser.custom_operator_return custom_operator() throws RecognitionException {
         DRLParser.custom_operator_return retval = new DRLParser.custom_operator_return();
         retval.start = input.LT(1);
@@ -12979,12 +12980,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:3: ( ( not_key )? ( approx_symb )? operator_key ( square_chunk )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:6: ( not_key )? ( approx_symb )? operator_key ( square_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:3: ( ( not_key )? ( approx_symb )? operator_key ( square_chunk )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:6: ( not_key )? ( approx_symb )? operator_key ( square_chunk )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:6: ( not_key )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:6: ( not_key )?
             int alt106=2;
             int LA106_0 = input.LA(1);
 
@@ -13004,9 +13005,9 @@
             }
             switch (alt106) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:6: not_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:6: not_key
                     {
-                    pushFollow(FOLLOW_not_key_in_custom_operator6017);
+                    pushFollow(FOLLOW_not_key_in_custom_operator6031);
                     not_key303=not_key();
 
                     state._fsp--;
@@ -13018,7 +13019,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:6: ( approx_symb )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:6: ( approx_symb )?
             int alt107=2;
             int LA107_0 = input.LA(1);
 
@@ -13027,9 +13028,9 @@
             }
             switch (alt107) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:6: approx_symb
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1559:6: approx_symb
                     {
-                    pushFollow(FOLLOW_approx_symb_in_custom_operator6025);
+                    pushFollow(FOLLOW_approx_symb_in_custom_operator6039);
                     approx_symb304=approx_symb();
 
                     state._fsp--;
@@ -13041,13 +13042,13 @@
 
             }
 
-            pushFollow(FOLLOW_operator_key_in_custom_operator6028);
+            pushFollow(FOLLOW_operator_key_in_custom_operator6042);
             operator_key305=operator_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key305.getTree(), root_0);
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:6: ( square_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1560:6: ( square_chunk )?
             int alt108=2;
             int LA108_0 = input.LA(1);
 
@@ -13056,9 +13057,9 @@
             }
             switch (alt108) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:6: square_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1560:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_custom_operator6036);
+                    pushFollow(FOLLOW_square_chunk_in_custom_operator6050);
                     square_chunk306=square_chunk();
 
                     state._fsp--;
@@ -13104,7 +13105,7 @@
     };
 
     // $ANTLR start "compound_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1563:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
     public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
         DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
         retval.start = input.LT(1);
@@ -13131,12 +13132,12 @@
 
          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1565:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:2: ( in_key | not_key in_key )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:2: ( in_key | not_key in_key )
             int alt109=2;
             int LA109_0 = input.LA(1);
 
@@ -13166,9 +13167,9 @@
             }
             switch (alt109) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:4: in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator6081);
+                    pushFollow(FOLLOW_in_key_in_compound_operator6095);
                     in_key307=in_key();
 
                     state._fsp--;
@@ -13178,15 +13179,15 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:14: not_key in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator6086);
+                    pushFollow(FOLLOW_not_key_in_compound_operator6100);
                     not_key308=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key308.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator6088);
+                    pushFollow(FOLLOW_in_key_in_compound_operator6102);
                     in_key309=in_key();
 
                     state._fsp--;
@@ -13201,17 +13202,17 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN310=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator6099); if (state.failed) return retval;
+            LEFT_PAREN310=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator6113); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN310, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator6107);
+            pushFollow(FOLLOW_expression_value_in_compound_operator6121);
             expression_value311=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value311.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:21: ( COMMA expression_value )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1573:21: ( COMMA expression_value )*
             loop110:
             do {
                 int alt110=2;
@@ -13224,13 +13225,13 @@
 
                 switch (alt110) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:23: COMMA expression_value
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1573:23: COMMA expression_value
             	    {
-            	    COMMA312=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6111); if (state.failed) return retval;
+            	    COMMA312=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6125); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA312, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator6116);
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator6130);
             	    expression_value313=expression_value();
 
             	    state._fsp--;
@@ -13245,7 +13246,7 @@
                 }
             } while (true);
 
-            RIGHT_PAREN314=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6124); if (state.failed) return retval;
+            RIGHT_PAREN314=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6138); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             RIGHT_PAREN314_tree = (Object)adaptor.create(RIGHT_PAREN314);
             adaptor.addChild(root_0, RIGHT_PAREN314_tree);
@@ -13291,7 +13292,7 @@
     };
 
     // $ANTLR start "constr_parameters"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:1: constr_parameters : AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:1: constr_parameters : AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) ;
     public final DRLParser.constr_parameters_return constr_parameters() throws RecognitionException {
         DRLParser.constr_parameters_return retval = new DRLParser.constr_parameters_return();
         retval.start = input.LT(1);
@@ -13312,16 +13313,16 @@
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_constr_attr=new RewriteRuleSubtreeStream(adaptor,"rule constr_attr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:2: ( AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1591:3: AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:2: ( AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:3: AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN
             {
-            AT315=(Token)match(input,AT,FOLLOW_AT_in_constr_parameters6159); if (state.failed) return retval; 
+            AT315=(Token)match(input,AT,FOLLOW_AT_in_constr_parameters6173); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_AT.add(AT315);
 
-            LEFT_PAREN316=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_parameters6164); if (state.failed) return retval; 
+            LEFT_PAREN316=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_parameters6178); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN316);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:5: ( constr_attr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:5: ( constr_attr )*
             loop111:
             do {
                 int alt111=2;
@@ -13334,9 +13335,9 @@
 
                 switch (alt111) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:5: constr_attr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1597:5: constr_attr
             	    {
-            	    pushFollow(FOLLOW_constr_attr_in_constr_parameters6171);
+            	    pushFollow(FOLLOW_constr_attr_in_constr_parameters6185);
             	    constr_attr317=constr_attr();
 
             	    state._fsp--;
@@ -13351,7 +13352,7 @@
                 }
             } while (true);
 
-            RIGHT_PAREN318=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_parameters6176); if (state.failed) return retval; 
+            RIGHT_PAREN318=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_parameters6190); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN318);
 
 
@@ -13367,14 +13368,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1595:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
+            // 1599:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:6: ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:6: ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CONSTR_ATTRIBUTES, "VT_CONSTR_ATTRIBUTES"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:29: ( constr_attr )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1599:29: ( constr_attr )*
                 while ( stream_constr_attr.hasNext() ) {
                     adaptor.addChild(root_1, stream_constr_attr.nextTree());
 
@@ -13415,7 +13416,7 @@
     };
 
     // $ANTLR start "constr_attr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:1: constr_attr : ( c_param_id | c_param_kind | c_param_args | c_param_cut | c_param_prior );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:1: constr_attr : ( c_param_id | c_param_kind | c_param_args | c_param_cut | c_param_prior );
     public final DRLParser.constr_attr_return constr_attr() throws RecognitionException {
         DRLParser.constr_attr_return retval = new DRLParser.constr_attr_return();
         retval.start = input.LT(1);
@@ -13435,7 +13436,7 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:3: ( c_param_id | c_param_kind | c_param_args | c_param_cut | c_param_prior )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:3: ( c_param_id | c_param_kind | c_param_args | c_param_cut | c_param_prior )
             int alt112=5;
             int LA112_0 = input.LA(1);
 
@@ -13496,11 +13497,11 @@
             }
             switch (alt112) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:5: c_param_id
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:5: c_param_id
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_id_in_constr_attr6212);
+                    pushFollow(FOLLOW_c_param_id_in_constr_attr6226);
                     c_param_id319=c_param_id();
 
                     state._fsp--;
@@ -13510,11 +13511,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:7: c_param_kind
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:7: c_param_kind
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_kind_in_constr_attr6224);
+                    pushFollow(FOLLOW_c_param_kind_in_constr_attr6238);
                     c_param_kind320=c_param_kind();
 
                     state._fsp--;
@@ -13524,11 +13525,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:7: c_param_args
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:7: c_param_args
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_args_in_constr_attr6232);
+                    pushFollow(FOLLOW_c_param_args_in_constr_attr6246);
                     c_param_args321=c_param_args();
 
                     state._fsp--;
@@ -13538,11 +13539,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:7: c_param_cut
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1610:7: c_param_cut
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_cut_in_constr_attr6240);
+                    pushFollow(FOLLOW_c_param_cut_in_constr_attr6254);
                     c_param_cut322=c_param_cut();
 
                     state._fsp--;
@@ -13552,11 +13553,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:7: c_param_prior
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:7: c_param_prior
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_prior_in_constr_attr6248);
+                    pushFollow(FOLLOW_c_param_prior_in_constr_attr6262);
                     c_param_prior323=c_param_prior();
 
                     state._fsp--;
@@ -13593,7 +13594,7 @@
     };
 
     // $ANTLR start "c_param_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1611:1: c_param_id : id_key EQUALS cid= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:1: c_param_id : id_key EQUALS cid= STRING ;
     public final DRLParser.c_param_id_return c_param_id() throws RecognitionException {
         DRLParser.c_param_id_return retval = new DRLParser.c_param_id_return();
         retval.start = input.LT(1);
@@ -13609,19 +13610,19 @@
         Object EQUALS325_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:3: ( id_key EQUALS cid= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1613:5: id_key EQUALS cid= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1616:3: ( id_key EQUALS cid= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1617:5: id_key EQUALS cid= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_id_key_in_c_param_id6270);
+            pushFollow(FOLLOW_id_key_in_c_param_id6284);
             id_key324=id_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(id_key324.getTree(), root_0);
-            EQUALS325=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id6277); if (state.failed) return retval;
-            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id6286); if (state.failed) return retval;
+            EQUALS325=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id6291); if (state.failed) return retval;
+            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id6300); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             cid_tree = (Object)adaptor.create(cid);
             adaptor.addChild(root_0, cid_tree);
@@ -13655,7 +13656,7 @@
     };
 
     // $ANTLR start "c_param_kind"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:1: c_param_kind : kind_key EQUALS type= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1622:1: c_param_kind : kind_key EQUALS type= STRING ;
     public final DRLParser.c_param_kind_return c_param_kind() throws RecognitionException {
         DRLParser.c_param_kind_return retval = new DRLParser.c_param_kind_return();
         retval.start = input.LT(1);
@@ -13671,19 +13672,19 @@
         Object EQUALS327_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:3: ( kind_key EQUALS type= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1620:5: kind_key EQUALS type= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:3: ( kind_key EQUALS type= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1624:5: kind_key EQUALS type= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_kind_key_in_c_param_kind6307);
+            pushFollow(FOLLOW_kind_key_in_c_param_kind6321);
             kind_key326=kind_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(kind_key326.getTree(), root_0);
-            EQUALS327=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_kind6314); if (state.failed) return retval;
-            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_kind6323); if (state.failed) return retval;
+            EQUALS327=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_kind6328); if (state.failed) return retval;
+            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_kind6337); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             type_tree = (Object)adaptor.create(type);
             adaptor.addChild(root_0, type_tree);
@@ -13717,7 +13718,7 @@
     };
 
     // $ANTLR start "c_param_cut"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1625:1: c_param_cut : kut_key EQUALS kut= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:1: c_param_cut : kut_key EQUALS kut= STRING ;
     public final DRLParser.c_param_cut_return c_param_cut() throws RecognitionException {
         DRLParser.c_param_cut_return retval = new DRLParser.c_param_cut_return();
         retval.start = input.LT(1);
@@ -13733,19 +13734,19 @@
         Object EQUALS329_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:3: ( kut_key EQUALS kut= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:5: kut_key EQUALS kut= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:3: ( kut_key EQUALS kut= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:5: kut_key EQUALS kut= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_kut_key_in_c_param_cut6346);
+            pushFollow(FOLLOW_kut_key_in_c_param_cut6360);
             kut_key328=kut_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(kut_key328.getTree(), root_0);
-            EQUALS329=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut6353); if (state.failed) return retval;
-            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut6362); if (state.failed) return retval;
+            EQUALS329=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut6367); if (state.failed) return retval;
+            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut6376); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             kut_tree = (Object)adaptor.create(kut);
             adaptor.addChild(root_0, kut_tree);
@@ -13779,7 +13780,7 @@
     };
 
     // $ANTLR start "c_param_args"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1632:1: c_param_args : args_key EQUALS pms= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1636:1: c_param_args : args_key EQUALS pms= STRING ;
     public final DRLParser.c_param_args_return c_param_args() throws RecognitionException {
         DRLParser.c_param_args_return retval = new DRLParser.c_param_args_return();
         retval.start = input.LT(1);
@@ -13795,19 +13796,19 @@
         Object EQUALS331_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:3: ( args_key EQUALS pms= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:5: args_key EQUALS pms= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1637:3: ( args_key EQUALS pms= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:5: args_key EQUALS pms= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_args_key_in_c_param_args6384);
+            pushFollow(FOLLOW_args_key_in_c_param_args6398);
             args_key330=args_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(args_key330.getTree(), root_0);
-            EQUALS331=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args6391); if (state.failed) return retval;
-            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args6400); if (state.failed) return retval;
+            EQUALS331=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args6405); if (state.failed) return retval;
+            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args6414); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             pms_tree = (Object)adaptor.create(pms);
             adaptor.addChild(root_0, pms_tree);
@@ -13841,7 +13842,7 @@
     };
 
     // $ANTLR start "c_param_prior"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1639:1: c_param_prior : prior_key EQUALS pri= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1643:1: c_param_prior : prior_key EQUALS pri= STRING ;
     public final DRLParser.c_param_prior_return c_param_prior() throws RecognitionException {
         DRLParser.c_param_prior_return retval = new DRLParser.c_param_prior_return();
         retval.start = input.LT(1);
@@ -13857,19 +13858,19 @@
         Object EQUALS333_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:3: ( prior_key EQUALS pri= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:5: prior_key EQUALS pri= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1644:3: ( prior_key EQUALS pri= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:5: prior_key EQUALS pri= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_prior_key_in_c_param_prior6423);
+            pushFollow(FOLLOW_prior_key_in_c_param_prior6437);
             prior_key332=prior_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(prior_key332.getTree(), root_0);
-            EQUALS333=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior6430); if (state.failed) return retval;
-            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior6440); if (state.failed) return retval;
+            EQUALS333=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior6444); if (state.failed) return retval;
+            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior6454); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             pri_tree = (Object)adaptor.create(pri);
             adaptor.addChild(root_0, pri_tree);
@@ -13903,7 +13904,7 @@
     };
 
     // $ANTLR start "operator_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1649:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.operator_key_return operator_key() throws RecognitionException {
         DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
         retval.start = input.LT(1);
@@ -13916,14 +13917,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1654:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(false)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6480); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6494); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -13942,7 +13943,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1652:9: -> VK_OPERATOR[$id]
+            // 1656:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -13977,7 +13978,7 @@
     };
 
     // $ANTLR start "neg_operator_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1655:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
         DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
         retval.start = input.LT(1);
@@ -13990,14 +13991,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1660:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(true)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6525); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6539); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14016,7 +14017,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1658:9: -> VK_OPERATOR[$id]
+            // 1662:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -14051,7 +14052,7 @@
     };
 
     // $ANTLR start "expression_value"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1661:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
     public final DRLParser.expression_value_return expression_value() throws RecognitionException {
         DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
         retval.start = input.LT(1);
@@ -14067,12 +14068,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:4: ( accessor_path | literal_constraint | paren_chunk )
             int alt113=3;
             switch ( input.LA(1) ) {
             case ID:
@@ -14104,9 +14105,9 @@
 
             switch (alt113) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:5: accessor_path
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1666:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value6562);
+                    pushFollow(FOLLOW_accessor_path_in_expression_value6576);
                     accessor_path334=accessor_path();
 
                     state._fsp--;
@@ -14116,9 +14117,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:4: literal_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1667:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value6567);
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value6581);
                     literal_constraint335=literal_constraint();
 
                     state._fsp--;
@@ -14128,9 +14129,9 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1664:4: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value6573);
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value6587);
                     paren_chunk336=paren_chunk();
 
                     state._fsp--;
@@ -14184,7 +14185,7 @@
     };
 
     // $ANTLR start "literal_constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1678:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
     public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
         DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
         retval.start = input.LT(1);
@@ -14204,7 +14205,7 @@
         Object NULL341_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1683:2: ( STRING | INT | FLOAT | BOOL | NULL )
             int alt114=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -14242,11 +14243,11 @@
 
             switch (alt114) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:4: STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1683:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING337=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6592); if (state.failed) return retval;
+                    STRING337=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6606); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     STRING337_tree = (Object)adaptor.create(STRING337);
                     adaptor.addChild(root_0, STRING337_tree);
@@ -14258,11 +14259,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:4: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT338=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6599); if (state.failed) return retval;
+                    INT338=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6613); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT338_tree = (Object)adaptor.create(INT338);
                     adaptor.addChild(root_0, INT338_tree);
@@ -14274,11 +14275,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1681:4: FLOAT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1685:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT339=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6606); if (state.failed) return retval;
+                    FLOAT339=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6620); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     FLOAT339_tree = (Object)adaptor.create(FLOAT339);
                     adaptor.addChild(root_0, FLOAT339_tree);
@@ -14290,11 +14291,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:4: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL340=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6613); if (state.failed) return retval;
+                    BOOL340=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6627); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL340_tree = (Object)adaptor.create(BOOL340);
                     adaptor.addChild(root_0, BOOL340_tree);
@@ -14306,11 +14307,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1683:4: NULL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL341=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6620); if (state.failed) return retval;
+                    NULL341=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6634); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     NULL341_tree = (Object)adaptor.create(NULL341);
                     adaptor.addChild(root_0, NULL341_tree);
@@ -14349,7 +14350,7 @@
     };
 
     // $ANTLR start "pattern_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
         DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
         retval.start = input.LT(1);
@@ -14366,16 +14367,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6635); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6649); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:11: (id+= DOT id+= ID )*
             loop115:
             do {
                 int alt115=2;
@@ -14388,15 +14389,15 @@
 
                 switch (alt115) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6641); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6655); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6645); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6659); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -14415,7 +14416,7 @@
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:6: ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: ( dimension_definition )*
             loop116:
             do {
                 int alt116=2;
@@ -14428,9 +14429,9 @@
 
                 switch (alt116) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:6: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6660);
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6674);
             	    dimension_definition342=dimension_definition();
 
             	    state._fsp--;
@@ -14458,9 +14459,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1691:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1695:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
@@ -14473,7 +14474,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:28: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -14514,7 +14515,7 @@
     };
 
     // $ANTLR start "data_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.data_type_return data_type() throws RecognitionException {
         DRLParser.data_type_return retval = new DRLParser.data_type_return();
         retval.start = input.LT(1);
@@ -14531,16 +14532,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6688); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6702); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:11: (id+= DOT id+= ID )*
             loop117:
             do {
                 int alt117=2;
@@ -14553,15 +14554,15 @@
 
                 switch (alt117) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6694); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6708); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6698); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6712); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -14576,7 +14577,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:31: ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:31: ( dimension_definition )*
             loop118:
             do {
                 int alt118=2;
@@ -14589,9 +14590,9 @@
 
                 switch (alt118) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:31: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type6703);
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type6717);
             	    dimension_definition343=dimension_definition();
 
             	    state._fsp--;
@@ -14612,7 +14613,7 @@
 
 
             // AST REWRITE
-            // elements: dimension_definition, ID
+            // elements: ID, dimension_definition
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -14622,9 +14623,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1697:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1701:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1697:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
@@ -14637,7 +14638,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1697:25: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -14678,7 +14679,7 @@
     };
 
     // $ANTLR start "dimension_definition"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1704:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
     public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
         DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
         retval.start = input.LT(1);
@@ -14692,12 +14693,12 @@
         Object RIGHT_SQUARE345_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:4: LEFT_SQUARE RIGHT_SQUARE
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE344=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6732); if (state.failed) return retval;
+            LEFT_SQUARE344=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6746); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             LEFT_SQUARE344_tree = (Object)adaptor.create(LEFT_SQUARE344);
             adaptor.addChild(root_0, LEFT_SQUARE344_tree);
@@ -14705,7 +14706,7 @@
             if ( state.backtracking==0 ) {
               	emit(LEFT_SQUARE344, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE345=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6739); if (state.failed) return retval;
+            RIGHT_SQUARE345=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6753); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             RIGHT_SQUARE345_tree = (Object)adaptor.create(RIGHT_SQUARE345);
             adaptor.addChild(root_0, RIGHT_SQUARE345_tree);
@@ -14742,7 +14743,7 @@
     };
 
     // $ANTLR start "accessor_path"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1709:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
     public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
         DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
         retval.start = input.LT(1);
@@ -14759,16 +14760,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:4: accessor_element ( DOT accessor_element )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path6753);
+            pushFollow(FOLLOW_accessor_element_in_accessor_path6767);
             accessor_element346=accessor_element();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element346.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:21: ( DOT accessor_element )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:21: ( DOT accessor_element )*
             loop119:
             do {
                 int alt119=2;
@@ -14781,15 +14782,15 @@
 
                 switch (alt119) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:23: DOT accessor_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:23: DOT accessor_element
             	    {
-            	    DOT347=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6757); if (state.failed) return retval; 
+            	    DOT347=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6771); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(DOT347);
 
             	    if ( state.backtracking==0 ) {
             	      	emit(DOT347, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6761);
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6775);
             	    accessor_element348=accessor_element();
 
             	    state._fsp--;
@@ -14817,9 +14818,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1707:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1711:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
@@ -14867,7 +14868,7 @@
     };
 
     // $ANTLR start "accessor_element"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1710:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
     public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
         DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
         retval.start = input.LT(1);
@@ -14882,16 +14883,16 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:4: ID ( square_chunk )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1715:4: ID ( square_chunk )*
             {
-            ID349=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6785); if (state.failed) return retval; 
+            ID349=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6799); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID349);
 
             if ( state.backtracking==0 ) {
               	emit(ID349, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1712:3: ( square_chunk )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:3: ( square_chunk )*
             loop120:
             do {
                 int alt120=2;
@@ -14904,9 +14905,9 @@
 
                 switch (alt120) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1712:3: square_chunk
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6791);
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6805);
             	    square_chunk350=square_chunk();
 
             	    state._fsp--;
@@ -14924,7 +14925,7 @@
 
 
             // AST REWRITE
-            // elements: ID, square_chunk
+            // elements: square_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -14934,15 +14935,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1713:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1717:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:30: ( square_chunk )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
@@ -14983,7 +14984,7 @@
     };
 
     // $ANTLR start "rhs_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1716:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1722:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
     public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
         DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
         retval.start = input.LT(1);
@@ -14998,10 +14999,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1719:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1719:5: rc= rhs_chunk_data
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6820);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6836);
             rc=rhs_chunk_data();
 
             state._fsp--;
@@ -15023,7 +15024,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1720:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1726:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
@@ -15058,7 +15059,7 @@
     };
 
     // $ANTLR start "rhs_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:1: rhs_chunk_data : THEN ( not_end_key )* end_key ( SEMICOLON )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:1: rhs_chunk_data : THEN ( not_end_key )* end_key ( SEMICOLON )? ;
     public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
         DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
         retval.start = input.LT(1);
@@ -15076,12 +15077,12 @@
         Object SEMICOLON354_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN351=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6839); if (state.failed) return retval;
+            THEN351=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6856); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             THEN351_tree = (Object)adaptor.create(THEN351);
             adaptor.addChild(root_0, THEN351_tree);
@@ -15092,7 +15093,7 @@
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:4: ( not_end_key )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:4: ( not_end_key )*
             loop121:
             do {
                 int alt121=2;
@@ -15114,9 +15115,9 @@
 
                 switch (alt121) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:4: not_end_key
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:4: not_end_key
             	    {
-            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6848);
+            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6865);
             	    not_end_key352=not_end_key();
 
             	    state._fsp--;
@@ -15131,13 +15132,13 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6854);
+            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6871);
             end_key353=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key353.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:3: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:3: ( SEMICOLON )?
             int alt122=2;
             int LA122_0 = input.LA(1);
 
@@ -15146,9 +15147,9 @@
             }
             switch (alt122) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:3: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:3: SEMICOLON
                     {
-                    SEMICOLON354=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6859); if (state.failed) return retval;
+                    SEMICOLON354=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6876); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     SEMICOLON354_tree = (Object)adaptor.create(SEMICOLON354);
                     adaptor.addChild(root_0, SEMICOLON354_tree);
@@ -15191,7 +15192,7 @@
     };
 
     // $ANTLR start "curly_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1734:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2538:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
     public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
         DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
         retval.start = input.LT(1);
@@ -15206,10 +15207,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:5: cc= curly_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2541:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2541:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6878);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6903);
             cc=curly_chunk_data(false);
 
             state._fsp--;
@@ -15231,7 +15232,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1738:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 2542:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
@@ -15266,7 +15267,7 @@
     };
 
     // $ANTLR start "curly_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1741:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2545:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
     public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
         retval.start = input.LT(1);
@@ -15284,12 +15285,12 @@
         Object rc1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1742:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1742:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2546:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2546:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6901); if (state.failed) return retval;
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6926); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -15302,7 +15303,7 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2553:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
             loop123:
             do {
                 int alt123=3;
@@ -15318,7 +15319,7 @@
 
                 switch (alt123) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2553:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15339,9 +15340,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1749:87: curly_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2553:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6929);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6954);
             	    curly_chunk_data355=curly_chunk_data(true);
 
             	    state._fsp--;
@@ -15356,7 +15357,7 @@
                 }
             } while (true);
 
-            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6940); if (state.failed) return retval;
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6965); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -15398,7 +15399,7 @@
     };
 
     // $ANTLR start "paren_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1759:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2563:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
         DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
         retval.start = input.LT(1);
@@ -15413,10 +15414,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1762:5: pc= paren_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2566:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2566:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6961);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6986);
             pc=paren_chunk_data(false);
 
             state._fsp--;
@@ -15438,7 +15439,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1763:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 2567:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -15473,7 +15474,7 @@
     };
 
     // $ANTLR start "paren_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2570:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
     public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -15491,12 +15492,12 @@
         Object rp1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2571:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2571:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data6985); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data7010); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -15509,7 +15510,7 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2578:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
             loop124:
             do {
                 int alt124=3;
@@ -15525,7 +15526,7 @@
 
                 switch (alt124) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2578:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15546,9 +15547,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1774:87: paren_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2578:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data7013);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data7038);
             	    paren_chunk_data356=paren_chunk_data(true);
 
             	    state._fsp--;
@@ -15563,7 +15564,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data7024); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data7049); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -15605,7 +15606,7 @@
     };
 
     // $ANTLR start "square_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1784:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2588:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
     public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
         DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
         retval.start = input.LT(1);
@@ -15620,10 +15621,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1787:5: sc= square_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2591:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2591:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk7045);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk7070);
             sc=square_chunk_data(false);
 
             state._fsp--;
@@ -15645,7 +15646,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1788:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 2592:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
@@ -15680,7 +15681,7 @@
     };
 
     // $ANTLR start "square_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1791:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2595:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
     public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
         retval.start = input.LT(1);
@@ -15698,12 +15699,12 @@
         Object rs1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1792:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1792:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2596:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2596:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data7068); if (state.failed) return retval;
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data7093); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -15716,7 +15717,7 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1799:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2603:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
             loop125:
             do {
                 int alt125=3;
@@ -15732,7 +15733,7 @@
 
                 switch (alt125) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1799:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2603:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15753,9 +15754,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1799:88: square_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2603:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data7095);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data7120);
             	    square_chunk_data357=square_chunk_data(true);
 
             	    state._fsp--;
@@ -15770,7 +15771,7 @@
                 }
             } while (true);
 
-            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data7106); if (state.failed) return retval;
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data7131); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -15812,7 +15813,7 @@
     };
 
     // $ANTLR start "lock_on_active_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2613:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
     public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
         DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
         retval.start = input.LT(1);
@@ -15837,26 +15838,26 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1812:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1812:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2616:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2616:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "lock_on_active_key", "(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, \"-\") && validateLT(5, DroolsSoftKeywords.ACTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7130); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7155); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7134); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7159); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7138); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7163); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7142); if (state.failed) return retval; 
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7167); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7146); if (state.failed) return retval; 
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7171); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id3);
 
             if ( state.backtracking==0 ) {
@@ -15882,7 +15883,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1818:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 2622:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
@@ -15917,7 +15918,7 @@
     };
 
     // $ANTLR start "date_effective_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1821:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2625:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
     public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
         DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
         retval.start = input.LT(1);
@@ -15938,20 +15939,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1824:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2628:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2628:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7178); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7203); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7182); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7207); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7186); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7211); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -15975,7 +15976,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1828:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 2632:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
@@ -16010,7 +16011,7 @@
     };
 
     // $ANTLR start "date_expires_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1831:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2635:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
     public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
         DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
         retval.start = input.LT(1);
@@ -16031,20 +16032,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1834:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2638:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2638:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7219); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7244); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7223); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7248); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7227); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7252); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16068,7 +16069,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1838:3: -> VK_DATE_EXPIRES[$start, text]
+            // 2642:3: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
@@ -16103,7 +16104,7 @@
     };
 
     // $ANTLR start "no_loop_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1841:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2645:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
     public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
         DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
         retval.start = input.LT(1);
@@ -16124,20 +16125,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1844:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2648:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2648:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7259); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7284); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7263); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7288); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7267); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7292); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16161,7 +16162,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1848:3: -> VK_NO_LOOP[$start, text]
+            // 2652:3: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
@@ -16196,7 +16197,7 @@
     };
 
     // $ANTLR start "auto_focus_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1851:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2655:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
     public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
         DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
         retval.start = input.LT(1);
@@ -16217,20 +16218,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1854:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1854:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2658:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2658:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7299); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7324); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7303); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7328); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7307); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7332); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16254,7 +16255,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1858:3: -> VK_AUTO_FOCUS[$start, text]
+            // 2662:3: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
@@ -16289,7 +16290,7 @@
     };
 
     // $ANTLR start "activation_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1861:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2665:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
     public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
         DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
         retval.start = input.LT(1);
@@ -16310,20 +16311,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1864:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1864:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2668:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2668:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7339); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7364); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7343); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7368); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7347); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7372); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16347,7 +16348,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1868:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 2672:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
@@ -16382,7 +16383,7 @@
     };
 
     // $ANTLR start "agenda_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1871:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2675:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
     public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
         DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
         retval.start = input.LT(1);
@@ -16403,20 +16404,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1874:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1874:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2678:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2678:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7379); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7404); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7383); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7408); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7387); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7412); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16440,7 +16441,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1878:3: -> VK_AGENDA_GROUP[$start, text]
+            // 2682:3: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
@@ -16475,7 +16476,7 @@
     };
 
     // $ANTLR start "ruleflow_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1881:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2685:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
     public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
         DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
         retval.start = input.LT(1);
@@ -16496,20 +16497,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1884:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2688:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2688:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7419); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7444); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7423); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7448); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7427); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7452); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16533,7 +16534,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1888:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 2692:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
@@ -16568,7 +16569,7 @@
     };
 
     // $ANTLR start "entry_point_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2695:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
     public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
         DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
         retval.start = input.LT(1);
@@ -16589,20 +16590,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1894:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1894:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2698:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2698:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7459); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7484); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7463); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7488); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7467); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7492); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16626,7 +16627,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1898:3: -> VK_ENTRY_POINT[$start, text]
+            // 2702:3: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
@@ -16661,7 +16662,7 @@
     };
 
     // $ANTLR start "duration_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1901:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2705:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
     public final DRLParser.duration_key_return duration_key() throws RecognitionException {
         DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
         retval.start = input.LT(1);
@@ -16674,14 +16675,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2706:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2706:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7496); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7521); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16700,7 +16701,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1904:3: -> VK_DURATION[$id]
+            // 2708:3: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
@@ -16735,7 +16736,7 @@
     };
 
     // $ANTLR start "package_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1907:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2711:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
     public final DRLParser.package_key_return package_key() throws RecognitionException {
         DRLParser.package_key_return retval = new DRLParser.package_key_return();
         retval.start = input.LT(1);
@@ -16748,14 +16749,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2712:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2712:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7523); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7548); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16774,7 +16775,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1910:3: -> VK_PACKAGE[$id]
+            // 2714:3: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
@@ -16809,7 +16810,7 @@
     };
 
     // $ANTLR start "import_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1913:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2717:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
     public final DRLParser.import_key_return import_key() throws RecognitionException {
         DRLParser.import_key_return retval = new DRLParser.import_key_return();
         retval.start = input.LT(1);
@@ -16822,14 +16823,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2718:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2718:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7550); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7575); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16848,7 +16849,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1916:3: -> VK_IMPORT[$id]
+            // 2720:3: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
@@ -16883,7 +16884,7 @@
     };
 
     // $ANTLR start "dialect_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1919:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2723:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
     public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
         DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
         retval.start = input.LT(1);
@@ -16896,14 +16897,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2724:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2724:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7577); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7602); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16922,7 +16923,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1922:3: -> VK_DIALECT[$id]
+            // 2726:3: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
@@ -16957,7 +16958,7 @@
     };
 
     // $ANTLR start "prior_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1925:1: prior_key : {...}? =>id= ID -> VK_PRIOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2729:1: prior_key : {...}? =>id= ID -> VK_PRIOR[$id] ;
     public final DRLParser.prior_key_return prior_key() throws RecognitionException {
         DRLParser.prior_key_return retval = new DRLParser.prior_key_return();
         retval.start = input.LT(1);
@@ -16970,14 +16971,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2730:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2730:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "prior_key", "(validateIdentifierKey(DroolsSoftKeywords.PRIOR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_prior_key7605); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_prior_key7630); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16996,7 +16997,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1928:5: -> VK_PRIOR[$id]
+            // 2732:5: -> VK_PRIOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PRIOR, id));
 
@@ -17031,7 +17032,7 @@
     };
 
     // $ANTLR start "entail_mode_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1931:1: entail_mode_key : {...}? =>id= ID -> VK_ENTAIL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2735:1: entail_mode_key : {...}? =>id= ID -> VK_ENTAIL[$id] ;
     public final DRLParser.entail_mode_key_return entail_mode_key() throws RecognitionException {
         DRLParser.entail_mode_key_return retval = new DRLParser.entail_mode_key_return();
         retval.start = input.LT(1);
@@ -17044,14 +17045,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1932:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1932:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2736:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2736:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entail_mode_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTAIL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_entail_mode_key7638); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_entail_mode_key7663); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17070,7 +17071,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1934:5: -> VK_ENTAIL[$id]
+            // 2738:5: -> VK_ENTAIL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTAIL, id));
 
@@ -17105,7 +17106,7 @@
     };
 
     // $ANTLR start "filter_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1937:1: filter_key : {...}? =>id= ID -> VK_FILTER[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2741:1: filter_key : {...}? =>id= ID -> VK_FILTER[$id] ;
     public final DRLParser.filter_key_return filter_key() throws RecognitionException {
         DRLParser.filter_key_return retval = new DRLParser.filter_key_return();
         retval.start = input.LT(1);
@@ -17118,14 +17119,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1938:3: ({...}? =>id= ID -> VK_FILTER[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1938:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2742:3: ({...}? =>id= ID -> VK_FILTER[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2742:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FILTER)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "filter_key", "(validateIdentifierKey(DroolsSoftKeywords.FILTER))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_filter_key7671); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_filter_key7696); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17144,7 +17145,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1940:5: -> VK_FILTER[$id]
+            // 2744:5: -> VK_FILTER[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FILTER, id));
 
@@ -17179,7 +17180,7 @@
     };
 
     // $ANTLR start "salience_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1944:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2748:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
     public final DRLParser.salience_key_return salience_key() throws RecognitionException {
         DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
         retval.start = input.LT(1);
@@ -17192,14 +17193,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1945:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1945:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2749:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2749:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7704); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7729); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17218,7 +17219,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1947:3: -> VK_SALIENCE[$id]
+            // 2751:3: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
@@ -17253,7 +17254,7 @@
     };
 
     // $ANTLR start "enabled_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1950:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2754:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
     public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
         DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
         retval.start = input.LT(1);
@@ -17266,14 +17267,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1951:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1951:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2755:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2755:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7731); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7756); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17292,7 +17293,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1953:3: -> VK_ENABLED[$id]
+            // 2757:3: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
@@ -17327,7 +17328,7 @@
     };
 
     // $ANTLR start "attributes_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1956:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2760:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
     public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
         DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
         retval.start = input.LT(1);
@@ -17340,14 +17341,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1957:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1957:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2761:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2761:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7758); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7783); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17366,7 +17367,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1959:3: -> VK_ATTRIBUTES[$id]
+            // 2763:3: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
@@ -17401,7 +17402,7 @@
     };
 
     // $ANTLR start "rule_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1962:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2766:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
     public final DRLParser.rule_key_return rule_key() throws RecognitionException {
         DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
         retval.start = input.LT(1);
@@ -17414,14 +17415,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1963:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1963:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2767:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2767:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7785); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7810); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17440,7 +17441,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1965:3: -> VK_RULE[$id]
+            // 2769:3: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
@@ -17475,7 +17476,7 @@
     };
 
     // $ANTLR start "extend_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1968:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2772:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
     public final DRLParser.extend_key_return extend_key() throws RecognitionException {
         DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
         retval.start = input.LT(1);
@@ -17488,14 +17489,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1969:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1969:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2773:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2773:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "extend_key", "(validateIdentifierKey(DroolsSoftKeywords.EXTEND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7812); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7837); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17514,7 +17515,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1971:3: -> VK_EXTEND[$id]
+            // 2775:3: -> VK_EXTEND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
@@ -17549,7 +17550,7 @@
     };
 
     // $ANTLR start "template_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1974:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2778:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
     public final DRLParser.template_key_return template_key() throws RecognitionException {
         DRLParser.template_key_return retval = new DRLParser.template_key_return();
         retval.start = input.LT(1);
@@ -17562,14 +17563,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1975:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1975:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2779:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2779:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7839); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7864); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17588,7 +17589,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1977:3: -> VK_TEMPLATE[$id]
+            // 2781:3: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
@@ -17623,7 +17624,7 @@
     };
 
     // $ANTLR start "query_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1980:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2784:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
     public final DRLParser.query_key_return query_key() throws RecognitionException {
         DRLParser.query_key_return retval = new DRLParser.query_key_return();
         retval.start = input.LT(1);
@@ -17636,14 +17637,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1981:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1981:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2785:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2785:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7866); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7891); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17662,7 +17663,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1983:3: -> VK_QUERY[$id]
+            // 2787:3: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
@@ -17697,7 +17698,7 @@
     };
 
     // $ANTLR start "declare_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1986:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2790:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
     public final DRLParser.declare_key_return declare_key() throws RecognitionException {
         DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
         retval.start = input.LT(1);
@@ -17710,14 +17711,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1987:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1987:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2791:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2791:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7893); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7918); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17736,7 +17737,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1989:3: -> VK_DECLARE[$id]
+            // 2793:3: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
@@ -17771,7 +17772,7 @@
     };
 
     // $ANTLR start "function_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1992:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2796:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
     public final DRLParser.function_key_return function_key() throws RecognitionException {
         DRLParser.function_key_return retval = new DRLParser.function_key_return();
         retval.start = input.LT(1);
@@ -17784,14 +17785,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2797:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2797:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7920); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7945); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17810,7 +17811,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1995:3: -> VK_FUNCTION[$id]
+            // 2799:3: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
@@ -17845,7 +17846,7 @@
     };
 
     // $ANTLR start "global_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1998:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2802:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
     public final DRLParser.global_key_return global_key() throws RecognitionException {
         DRLParser.global_key_return retval = new DRLParser.global_key_return();
         retval.start = input.LT(1);
@@ -17858,14 +17859,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2803:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2803:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7947); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7972); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17884,7 +17885,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2001:3: -> VK_GLOBAL[$id]
+            // 2805:3: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
@@ -17919,7 +17920,7 @@
     };
 
     // $ANTLR start "eval_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2004:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2808:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
     public final DRLParser.eval_key_return eval_key() throws RecognitionException {
         DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
         retval.start = input.LT(1);
@@ -17932,14 +17933,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2809:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2809:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7974); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7999); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17958,7 +17959,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2007:3: -> VK_EVAL[$id]
+            // 2811:3: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
@@ -17993,7 +17994,7 @@
     };
 
     // $ANTLR start "not_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2010:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2814:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
     public final DRLParser.not_key_return not_key() throws RecognitionException {
         DRLParser.not_key_return retval = new DRLParser.not_key_return();
         retval.start = input.LT(1);
@@ -18006,14 +18007,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2815:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2815:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_not_key8001); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key8026); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18032,7 +18033,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2013:3: -> VK_NOT[$id]
+            // 2817:3: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
@@ -18067,7 +18068,7 @@
     };
 
     // $ANTLR start "in_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2016:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2820:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
     public final DRLParser.in_key_return in_key() throws RecognitionException {
         DRLParser.in_key_return retval = new DRLParser.in_key_return();
         retval.start = input.LT(1);
@@ -18080,14 +18081,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2821:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2821:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_in_key8028); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key8053); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18106,7 +18107,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2019:3: -> VK_IN[$id]
+            // 2823:3: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
@@ -18141,7 +18142,7 @@
     };
 
     // $ANTLR start "or_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2022:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2826:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
     public final DRLParser.or_key_return or_key() throws RecognitionException {
         DRLParser.or_key_return retval = new DRLParser.or_key_return();
         retval.start = input.LT(1);
@@ -18154,14 +18155,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2827:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2827:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_or_key8055); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key8080); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18180,7 +18181,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2025:3: -> VK_OR[$id]
+            // 2829:3: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
@@ -18215,7 +18216,7 @@
     };
 
     // $ANTLR start "and_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2028:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2832:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
     public final DRLParser.and_key_return and_key() throws RecognitionException {
         DRLParser.and_key_return retval = new DRLParser.and_key_return();
         retval.start = input.LT(1);
@@ -18228,14 +18229,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2833:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2833:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_and_key8082); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key8107); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18254,7 +18255,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2031:3: -> VK_AND[$id]
+            // 2835:3: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
@@ -18289,7 +18290,7 @@
     };
 
     // $ANTLR start "equiv_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2034:1: equiv_key : {...}? =>id= ID -> VK_EQUIV[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2838:1: equiv_key : {...}? =>id= ID -> VK_EQUIV[$id] ;
     public final DRLParser.equiv_key_return equiv_key() throws RecognitionException {
         DRLParser.equiv_key_return retval = new DRLParser.equiv_key_return();
         retval.start = input.LT(1);
@@ -18302,14 +18303,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2035:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2035:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2839:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2839:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EQUIV)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "equiv_key", "(validateIdentifierKey(DroolsSoftKeywords.EQUIV))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_equiv_key8112); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_equiv_key8137); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18328,7 +18329,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2037:5: -> VK_EQUIV[$id]
+            // 2841:5: -> VK_EQUIV[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EQUIV, id));
 
@@ -18363,7 +18364,7 @@
     };
 
     // $ANTLR start "xor_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2040:1: xor_key : {...}? =>id= ID -> VK_XOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2844:1: xor_key : {...}? =>id= ID -> VK_XOR[$id] ;
     public final DRLParser.xor_key_return xor_key() throws RecognitionException {
         DRLParser.xor_key_return retval = new DRLParser.xor_key_return();
         retval.start = input.LT(1);
@@ -18376,14 +18377,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2041:3: ({...}? =>id= ID -> VK_XOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2041:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2845:3: ({...}? =>id= ID -> VK_XOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2845:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.XOR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "xor_key", "(validateIdentifierKey(DroolsSoftKeywords.XOR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_xor_key8148); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_xor_key8173); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18402,7 +18403,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2043:5: -> VK_XOR[$id]
+            // 2847:5: -> VK_XOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_XOR, id));
 
@@ -18437,7 +18438,7 @@
     };
 
     // $ANTLR start "implies_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2046:1: implies_key : {...}? =>id= ID -> VK_IMPLIES[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2850:1: implies_key : {...}? =>id= ID -> VK_IMPLIES[$id] ;
     public final DRLParser.implies_key_return implies_key() throws RecognitionException {
         DRLParser.implies_key_return retval = new DRLParser.implies_key_return();
         retval.start = input.LT(1);
@@ -18450,14 +18451,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2047:3: ({...}? =>id= ID -> VK_IMPLIES[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2047:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2851:3: ({...}? =>id= ID -> VK_IMPLIES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2851:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPLIES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "implies_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPLIES))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_implies_key8183); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_implies_key8208); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18476,7 +18477,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2049:5: -> VK_IMPLIES[$id]
+            // 2853:5: -> VK_IMPLIES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPLIES, id));
 
@@ -18511,7 +18512,7 @@
     };
 
     // $ANTLR start "exists_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2053:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2857:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
     public final DRLParser.exists_key_return exists_key() throws RecognitionException {
         DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
         retval.start = input.LT(1);
@@ -18524,14 +18525,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2858:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2858:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8223); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8248); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18550,7 +18551,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2056:3: -> VK_EXISTS[$id]
+            // 2860:3: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
@@ -18585,7 +18586,7 @@
     };
 
     // $ANTLR start "forall_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2059:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2863:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
     public final DRLParser.forall_key_return forall_key() throws RecognitionException {
         DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
         retval.start = input.LT(1);
@@ -18598,14 +18599,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2864:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2864:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8250); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8275); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18624,7 +18625,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2062:3: -> VK_FORALL[$id]
+            // 2866:3: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
@@ -18659,7 +18660,7 @@
     };
 
     // $ANTLR start "forany_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2065:1: forany_key : {...}? =>id= ID -> VK_FORANY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2869:1: forany_key : {...}? =>id= ID -> VK_FORANY[$id] ;
     public final DRLParser.forany_key_return forany_key() throws RecognitionException {
         DRLParser.forany_key_return retval = new DRLParser.forany_key_return();
         retval.start = input.LT(1);
@@ -18672,14 +18673,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2066:3: ({...}? =>id= ID -> VK_FORANY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2066:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2870:3: ({...}? =>id= ID -> VK_FORANY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2870:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORANY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forany_key", "(validateIdentifierKey(DroolsSoftKeywords.FORANY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_forany_key8279); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forany_key8304); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18698,7 +18699,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2068:5: -> VK_FORANY[$id]
+            // 2872:5: -> VK_FORANY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORANY, id));
 
@@ -18733,7 +18734,7 @@
     };
 
     // $ANTLR start "action_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2071:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2875:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
     public final DRLParser.action_key_return action_key() throws RecognitionException {
         DRLParser.action_key_return retval = new DRLParser.action_key_return();
         retval.start = input.LT(1);
@@ -18746,14 +18747,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2072:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2072:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2876:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2876:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8312); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8337); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18772,7 +18773,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2074:3: -> VK_ACTION[$id]
+            // 2878:3: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
@@ -18807,7 +18808,7 @@
     };
 
     // $ANTLR start "reverse_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2077:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2881:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
     public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
         DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
         retval.start = input.LT(1);
@@ -18820,14 +18821,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2078:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2078:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2882:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2882:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8339); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8364); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18846,7 +18847,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2080:3: -> VK_REVERSE[$id]
+            // 2884:3: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
@@ -18881,7 +18882,7 @@
     };
 
     // $ANTLR start "result_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2083:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2887:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
     public final DRLParser.result_key_return result_key() throws RecognitionException {
         DRLParser.result_key_return retval = new DRLParser.result_key_return();
         retval.start = input.LT(1);
@@ -18894,14 +18895,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2888:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2888:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8366); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8391); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18920,7 +18921,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2086:3: -> VK_RESULT[$id]
+            // 2890:3: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
@@ -18955,7 +18956,7 @@
     };
 
     // $ANTLR start "end_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2089:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2893:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
     public final DRLParser.end_key_return end_key() throws RecognitionException {
         DRLParser.end_key_return retval = new DRLParser.end_key_return();
         retval.start = input.LT(1);
@@ -18968,14 +18969,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2090:2: ({...}? =>id= ID -> VK_END[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2090:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2894:2: ({...}? =>id= ID -> VK_END[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2894:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "end_key", "(validateIdentifierKey(DroolsSoftKeywords.END))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8393); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8418); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18994,7 +18995,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2092:3: -> VK_END[$id]
+            // 2896:3: -> VK_END[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_END, id));
 
@@ -19029,7 +19030,7 @@
     };
 
     // $ANTLR start "not_end_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2095:1: not_end_key : {...}? =>any= . ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2899:1: not_end_key : {...}? =>any= . ;
     public final DRLParser.not_end_key_return not_end_key() throws RecognitionException {
         DRLParser.not_end_key_return retval = new DRLParser.not_end_key_return();
         retval.start = input.LT(1);
@@ -19041,8 +19042,8 @@
         Object any_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2096:2: ({...}? =>any= . )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2096:4: {...}? =>any= .
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2900:2: ({...}? =>any= . )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2900:4: {...}? =>any= .
             {
             root_0 = (Object)adaptor.nil();
 
@@ -19088,7 +19089,7 @@
     };
 
     // $ANTLR start "init_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2100:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2904:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
     public final DRLParser.init_key_return init_key() throws RecognitionException {
         DRLParser.init_key_return retval = new DRLParser.init_key_return();
         retval.start = input.LT(1);
@@ -19101,14 +19102,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2101:2: ({...}? =>id= ID -> VK_INIT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2101:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2905:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2905:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "init_key", "(validateIdentifierKey(DroolsSoftKeywords.INIT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8440); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8465); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19127,7 +19128,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2103:3: -> VK_INIT[$id]
+            // 2907:3: -> VK_INIT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_INIT, id));
 
@@ -19162,7 +19163,7 @@
     };
 
     // $ANTLR start "subject_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2107:1: subject_key : {...}? =>id= ID -> VK_SUBJECT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2911:1: subject_key : {...}? =>id= ID -> VK_SUBJECT[$id] ;
     public final DRLParser.subject_key_return subject_key() throws RecognitionException {
         DRLParser.subject_key_return retval = new DRLParser.subject_key_return();
         retval.start = input.LT(1);
@@ -19175,14 +19176,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2108:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2108:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2912:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2912:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "subject_key", "(validateIdentifierKey(DroolsSoftKeywords.SUBJECT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_subject_key8471); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_subject_key8496); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19201,7 +19202,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2110:5: -> VK_SUBJECT[$id]
+            // 2914:5: -> VK_SUBJECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SUBJECT, id));
 
@@ -19236,7 +19237,7 @@
     };
 
     // $ANTLR start "weight_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2114:1: weight_key : {...}? =>id= ID -> VK_WEIGHT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2918:1: weight_key : {...}? =>id= ID -> VK_WEIGHT[$id] ;
     public final DRLParser.weight_key_return weight_key() throws RecognitionException {
         DRLParser.weight_key_return retval = new DRLParser.weight_key_return();
         retval.start = input.LT(1);
@@ -19249,14 +19250,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2115:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2115:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2919:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2919:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "weight_key", "(validateIdentifierKey(DroolsSoftKeywords.WEIGHT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_weight_key8509); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_weight_key8534); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19275,7 +19276,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2117:5: -> VK_WEIGHT[$id]
+            // 2921:5: -> VK_WEIGHT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_WEIGHT, id));
 
@@ -19310,7 +19311,7 @@
     };
 
     // $ANTLR start "very_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2121:1: very_key : {...}? =>id= ID -> VK_VERY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2925:1: very_key : {...}? =>id= ID -> VK_VERY[$id] ;
     public final DRLParser.very_key_return very_key() throws RecognitionException {
         DRLParser.very_key_return retval = new DRLParser.very_key_return();
         retval.start = input.LT(1);
@@ -19323,14 +19324,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122:3: ({...}? =>id= ID -> VK_VERY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2926:3: ({...}? =>id= ID -> VK_VERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2926:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.VERY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "very_key", "(validateIdentifierKey(DroolsSoftKeywords.VERY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_very_key8548); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_very_key8573); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19349,7 +19350,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2124:5: -> VK_VERY[$id]
+            // 2928:5: -> VK_VERY[$id]
             {
             }
 
@@ -19382,7 +19383,7 @@
     };
 
     // $ANTLR start "id_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2138:1: id_key : {...}? =>id= ID -> VK_CONSTRID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2942:1: id_key : {...}? =>id= ID -> VK_CONSTRID[$id] ;
     public final DRLParser.id_key_return id_key() throws RecognitionException {
         DRLParser.id_key_return retval = new DRLParser.id_key_return();
         retval.start = input.LT(1);
@@ -19395,14 +19396,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2139:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2139:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2943:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2943:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "id_key", "(validateIdentifierKey(DroolsSoftKeywords.CID))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_id_key8598); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_id_key8623); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19421,7 +19422,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2141:5: -> VK_CONSTRID[$id]
+            // 2945:5: -> VK_CONSTRID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_CONSTRID, id));
 
@@ -19456,7 +19457,7 @@
     };
 
     // $ANTLR start "kut_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2144:1: kut_key : {...}? =>id= ID -> VK_CUT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2948:1: kut_key : {...}? =>id= ID -> VK_CUT[$id] ;
     public final DRLParser.kut_key_return kut_key() throws RecognitionException {
         DRLParser.kut_key_return retval = new DRLParser.kut_key_return();
         retval.start = input.LT(1);
@@ -19469,14 +19470,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2145:3: ({...}? =>id= ID -> VK_CUT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2145:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2949:3: ({...}? =>id= ID -> VK_CUT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2949:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "kut_key", "(validateIdentifierKey(DroolsSoftKeywords.CUT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_kut_key8646); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_kut_key8671); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19495,7 +19496,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2147:5: -> VK_CUT[$id]
+            // 2951:5: -> VK_CUT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_CUT, id));
 
@@ -19530,7 +19531,7 @@
     };
 
     // $ANTLR start "kind_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2150:1: kind_key : {...}? =>id= ID -> VK_KIND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2954:1: kind_key : {...}? =>id= ID -> VK_KIND[$id] ;
     public final DRLParser.kind_key_return kind_key() throws RecognitionException {
         DRLParser.kind_key_return retval = new DRLParser.kind_key_return();
         retval.start = input.LT(1);
@@ -19543,14 +19544,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:3: ({...}? =>id= ID -> VK_KIND[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2955:3: ({...}? =>id= ID -> VK_KIND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2955:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.KIND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "kind_key", "(validateIdentifierKey(DroolsSoftKeywords.KIND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_kind_key8683); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_kind_key8708); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19569,7 +19570,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2153:5: -> VK_KIND[$id]
+            // 2957:5: -> VK_KIND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_KIND, id));
 
@@ -19604,7 +19605,7 @@
     };
 
     // $ANTLR start "args_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2156:1: args_key : {...}? =>id= ID -> VK_ARGS[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2960:1: args_key : {...}? =>id= ID -> VK_ARGS[$id] ;
     public final DRLParser.args_key_return args_key() throws RecognitionException {
         DRLParser.args_key_return retval = new DRLParser.args_key_return();
         retval.start = input.LT(1);
@@ -19617,14 +19618,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:3: ({...}? =>id= ID -> VK_ARGS[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2961:3: ({...}? =>id= ID -> VK_ARGS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2961:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "args_key", "(validateIdentifierKey(DroolsSoftKeywords.ARGS))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_args_key8720); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_args_key8745); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19643,7 +19644,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2159:5: -> VK_ARGS[$id]
+            // 2963:5: -> VK_ARGS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ARGS, id));
 
@@ -19678,7 +19679,7 @@
     };
 
     // $ANTLR start "approx_symb"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:1: approx_symb : APPROX -> VK_APPROX ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2971:1: approx_symb : APPROX -> VK_APPROX ;
     public final DRLParser.approx_symb_return approx_symb() throws RecognitionException {
         DRLParser.approx_symb_return retval = new DRLParser.approx_symb_return();
         retval.start = input.LT(1);
@@ -19691,10 +19692,10 @@
         RewriteRuleTokenStream stream_APPROX=new RewriteRuleTokenStream(adaptor,"token APPROX");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2168:3: ( APPROX -> VK_APPROX )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2168:5: APPROX
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2972:3: ( APPROX -> VK_APPROX )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2972:5: APPROX
             {
-            APPROX358=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8761); if (state.failed) return retval; 
+            APPROX358=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8786); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_APPROX.add(APPROX358);
 
 
@@ -19710,7 +19711,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2168:12: -> VK_APPROX
+            // 2972:12: -> VK_APPROX
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_APPROX, "VK_APPROX"));
 
@@ -19741,16 +19742,16 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:5: ( LEFT_PAREN or_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:6: LEFT_PAREN or_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:5: ( LEFT_PAREN or_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:6: LEFT_PAREN or_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2312); if (state.failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred1_DRL2314);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2326); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2328);
         or_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:24: ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:24: ( constr_parameters )?
         int alt126=2;
         int LA126_0 = input.LA(1);
 
@@ -19759,9 +19760,9 @@
         }
         switch (alt126) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:24: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:24: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred1_DRL2316);
+                pushFollow(FOLLOW_constr_parameters_in_synpred1_DRL2330);
                 constr_parameters();
 
                 state._fsp--;
@@ -19779,16 +19780,16 @@
 
     // $ANTLR start synpred2_DRL
     public final void synpred2_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:5: LEFT_PAREN equiv_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:5: LEFT_PAREN equiv_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2388); if (state.failed) return ;
-        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2390);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2402); if (state.failed) return ;
+        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2404);
         equiv_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:26: ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:26: ( constr_parameters )?
         int alt127=2;
         int LA127_0 = input.LA(1);
 
@@ -19797,9 +19798,9 @@
         }
         switch (alt127) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:26: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:26: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred2_DRL2392);
+                pushFollow(FOLLOW_constr_parameters_in_synpred2_DRL2406);
                 constr_parameters();
 
                 state._fsp--;
@@ -19817,16 +19818,16 @@
 
     // $ANTLR start synpred3_DRL
     public final void synpred3_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:4: ( LEFT_PAREN xor_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:5: LEFT_PAREN xor_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:4: ( LEFT_PAREN xor_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:5: LEFT_PAREN xor_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2493); if (state.failed) return ;
-        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2495);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2507); if (state.failed) return ;
+        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2509);
         xor_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:24: ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:24: ( constr_parameters )?
         int alt128=2;
         int LA128_0 = input.LA(1);
 
@@ -19835,9 +19836,9 @@
         }
         switch (alt128) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:24: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:24: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred3_DRL2497);
+                pushFollow(FOLLOW_constr_parameters_in_synpred3_DRL2511);
                 constr_parameters();
 
                 state._fsp--;
@@ -19855,16 +19856,16 @@
 
     // $ANTLR start synpred4_DRL
     public final void synpred4_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( LEFT_PAREN implies_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:6: LEFT_PAREN implies_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:5: ( LEFT_PAREN implies_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:6: LEFT_PAREN implies_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred4_DRL2602); if (state.failed) return ;
-        pushFollow(FOLLOW_implies_key_in_synpred4_DRL2604);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred4_DRL2616); if (state.failed) return ;
+        pushFollow(FOLLOW_implies_key_in_synpred4_DRL2618);
         implies_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:29: ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:29: ( constr_parameters )?
         int alt129=2;
         int LA129_0 = input.LA(1);
 
@@ -19873,9 +19874,9 @@
         }
         switch (alt129) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:29: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:29: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred4_DRL2606);
+                pushFollow(FOLLOW_constr_parameters_in_synpred4_DRL2620);
                 constr_parameters();
 
                 state._fsp--;
@@ -19893,7 +19894,7 @@
 
     // $ANTLR start synpred5_DRL
     public final void synpred5_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )
         int alt131=2;
         int LA131_0 = input.LA(1);
 
@@ -19912,14 +19913,14 @@
         }
         switch (alt131) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:6: or_key ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:6: or_key ( constr_parameters )?
                 {
-                pushFollow(FOLLOW_or_key_in_synpred5_DRL2724);
+                pushFollow(FOLLOW_or_key_in_synpred5_DRL2738);
                 or_key();
 
                 state._fsp--;
                 if (state.failed) return ;
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:14: ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:14: ( constr_parameters )?
                 int alt130=2;
                 int LA130_0 = input.LA(1);
 
@@ -19928,9 +19929,9 @@
                 }
                 switch (alt130) {
                     case 1 :
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:14: constr_parameters
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:14: constr_parameters
                         {
-                        pushFollow(FOLLOW_constr_parameters_in_synpred5_DRL2727);
+                        pushFollow(FOLLOW_constr_parameters_in_synpred5_DRL2741);
                         constr_parameters();
 
                         state._fsp--;
@@ -19945,9 +19946,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:34: DOUBLE_PIPE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:34: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2731); if (state.failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2745); if (state.failed) return ;
 
                 }
                 break;
@@ -19957,16 +19958,16 @@
 
     // $ANTLR start synpred6_DRL
     public final void synpred6_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:5: ( LEFT_PAREN and_key ( square_chunk )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:6: LEFT_PAREN and_key ( square_chunk )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:5: ( LEFT_PAREN and_key ( square_chunk )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:6: LEFT_PAREN and_key ( square_chunk )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2862); if (state.failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred6_DRL2864);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2876); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred6_DRL2878);
         and_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:25: ( square_chunk )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:25: ( square_chunk )?
         int alt132=2;
         int LA132_0 = input.LA(1);
 
@@ -19975,9 +19976,9 @@
         }
         switch (alt132) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:25: square_chunk
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:25: square_chunk
                 {
-                pushFollow(FOLLOW_square_chunk_in_synpred6_DRL2866);
+                pushFollow(FOLLOW_square_chunk_in_synpred6_DRL2880);
                 square_chunk();
 
                 state._fsp--;
@@ -19995,7 +19996,7 @@
 
     // $ANTLR start synpred7_DRL
     public final void synpred7_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:5: ( and_key ( constr_parameters )? | DOUBLE_AMPER )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: ( and_key ( constr_parameters )? | DOUBLE_AMPER )
         int alt134=2;
         int LA134_0 = input.LA(1);
 
@@ -20014,14 +20015,14 @@
         }
         switch (alt134) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:6: and_key ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:6: and_key ( constr_parameters )?
                 {
-                pushFollow(FOLLOW_and_key_in_synpred7_DRL2954);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2968);
                 and_key();
 
                 state._fsp--;
                 if (state.failed) return ;
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:14: ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:14: ( constr_parameters )?
                 int alt133=2;
                 int LA133_0 = input.LA(1);
 
@@ -20030,9 +20031,9 @@
                 }
                 switch (alt133) {
                     case 1 :
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:14: constr_parameters
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:14: constr_parameters
                         {
-                        pushFollow(FOLLOW_constr_parameters_in_synpred7_DRL2956);
+                        pushFollow(FOLLOW_constr_parameters_in_synpred7_DRL2970);
                         constr_parameters();
 
                         state._fsp--;
@@ -20047,9 +20048,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:34: DOUBLE_AMPER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:34: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2960); if (state.failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2974); if (state.failed) return ;
 
                 }
                 break;
@@ -20059,10 +20060,10 @@
 
     // $ANTLR start synpred8_DRL
     public final void synpred8_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:4: ( SEMICOLON )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:5: SEMICOLON
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:4: ( SEMICOLON )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred8_DRL3115); if (state.failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred8_DRL3129); if (state.failed) return ;
 
         }
     }
@@ -20070,11 +20071,11 @@
 
     // $ANTLR start synpred9_DRL
     public final void synpred9_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:13: LEFT_PAREN ( or_key | and_key )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3152); if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:24: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3166); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:24: ( or_key | and_key )
         int alt135=2;
         int LA135_0 = input.LA(1);
 
@@ -20104,9 +20105,9 @@
         }
         switch (alt135) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:25: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred9_DRL3155);
+                pushFollow(FOLLOW_or_key_in_synpred9_DRL3169);
                 or_key();
 
                 state._fsp--;
@@ -20115,9 +20116,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:32: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred9_DRL3157);
+                pushFollow(FOLLOW_and_key_in_synpred9_DRL3171);
                 and_key();
 
                 state._fsp--;
@@ -20135,11 +20136,11 @@
 
     // $ANTLR start synpred10_DRL
     public final void synpred10_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:6: LEFT_PAREN ( or_key | and_key )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL3280); if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:17: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL3294); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:17: ( or_key | and_key )
         int alt136=2;
         int LA136_0 = input.LA(1);
 
@@ -20169,9 +20170,9 @@
         }
         switch (alt136) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:18: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred10_DRL3283);
+                pushFollow(FOLLOW_or_key_in_synpred10_DRL3297);
                 or_key();
 
                 state._fsp--;
@@ -20180,9 +20181,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:25: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:995:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred10_DRL3285);
+                pushFollow(FOLLOW_and_key_in_synpred10_DRL3299);
                 and_key();
 
                 state._fsp--;
@@ -20200,10 +20201,10 @@
 
     // $ANTLR start synpred11_DRL
     public final void synpred11_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:5: ( LEFT_PAREN )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:6: LEFT_PAREN
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:5: ( LEFT_PAREN )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred11_DRL4241); if (state.failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred11_DRL4255); if (state.failed) return ;
 
         }
     }
@@ -20211,15 +20212,15 @@
 
     // $ANTLR start synpred12_DRL
     public final void synpred12_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:5: ( and_constr SINGLE_PIPE )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:6: and_constr SINGLE_PIPE
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:5: ( and_constr SINGLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1287:6: and_constr SINGLE_PIPE
         {
-        pushFollow(FOLLOW_and_constr_in_synpred12_DRL4784);
+        pushFollow(FOLLOW_and_constr_in_synpred12_DRL4798);
         and_constr();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred12_DRL4786); if (state.failed) return ;
+        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred12_DRL4800); if (state.failed) return ;
 
         }
     }
@@ -20227,15 +20228,15 @@
 
     // $ANTLR start synpred13_DRL
     public final void synpred13_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:5: ( unary_constr SINGLE_AMPER )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:6: unary_constr SINGLE_AMPER
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:5: ( unary_constr SINGLE_AMPER )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1317:6: unary_constr SINGLE_AMPER
         {
-        pushFollow(FOLLOW_unary_constr_in_synpred13_DRL5125);
+        pushFollow(FOLLOW_unary_constr_in_synpred13_DRL5139);
         unary_constr();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred13_DRL5127); if (state.failed) return ;
+        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred13_DRL5141); if (state.failed) return ;
 
         }
     }
@@ -20443,9 +20444,9 @@
     static final String DFA1_eofS =
         "\1\2\11\uffff";
     static final String DFA1_minS =
-        "\2\153\2\uffff\1\0\5\uffff";
+        "\2\154\2\uffff\1\0\5\uffff";
     static final String DFA1_maxS =
-        "\1\153\1\u008e\2\uffff\1\0\5\uffff";
+        "\1\154\1\u008f\2\uffff\1\0\5\uffff";
     static final String DFA1_acceptS =
         "\2\uffff\2\2\1\uffff\4\2\1\1";
     static final String DFA1_specialS =
@@ -20493,7 +20494,7 @@
             this.transition = DFA1_transition;
         }
         public String getDescription() {
-            return "436:4: ( package_statement )?";
+            return "440:4: ( package_statement )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -20550,9 +20551,9 @@
     static final String DFA5_eofS =
         "\20\uffff";
     static final String DFA5_minS =
-        "\2\153\1\uffff\2\0\13\uffff";
+        "\2\154\1\uffff\2\0\13\uffff";
     static final String DFA5_maxS =
-        "\1\153\1\u008e\1\uffff\2\0\13\uffff";
+        "\1\154\1\u008f\1\uffff\2\0\13\uffff";
     static final String DFA5_acceptS =
         "\2\uffff\1\1\2\uffff\3\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11";
     static final String DFA5_specialS =
@@ -20606,7 +20607,7 @@
             this.transition = DFA5_transition;
         }
         public String getDescription() {
-            return "494:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+            return "498:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -20621,9 +20622,9 @@
                         s = -1;
                         if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
 
-                        else if ( (LA5_1==ID) && ((!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, Dro!
 olsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords
.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPO!
 RT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))|!
 |((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((val
idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(!
 1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, Dr!
 oolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeyword
s.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "fun!
 ction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(!
 ((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, Dro
olsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drool!
 sSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2,!
  "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(!
 (validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi
erKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateL!
 T(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, D!
 roolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywo
rds.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dro
olsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey!
 (DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoft!
 Keywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&
((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "i
mport") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoft!
 Keywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywor!
 ds.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(
(validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((!
 ((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "impo
rt") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool!
 sSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && valid!
 ateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IM
PORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 )||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((!
 validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, D
roolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(Dro!
 olsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeyw!
 ords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|
|((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((!
 (validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((valida!
 teIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, Drool
sSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeyw!
 ords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ||(((validateLT(1, "import") && validateLT(2, "function") ))&&((valida
teIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdenti!
 fierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKe
ywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.!
 FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTI!
 ON))))))||!((((((validateLT(1, "import") && validateLT(2, "function") 
))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeyw
ords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw!
 ords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TE!
 MPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI
dentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validate!
 LT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoft
Keywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof!
 tKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywo!
 rds.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((val
idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifie!
 rKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKe
ywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!
 (((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validat!
 eIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dr
oolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, Dro!
 olsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function")
 ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((valid!
 ateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(!
 1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(
DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyword!
 s.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((
(validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateId!
 entifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool!
 sSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "f
unction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2!
 , "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyword!
 s.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((v
alidateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drool!
 sSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.
IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKe!
 ywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((v
alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKey
words.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validat!
 eLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE!
 )))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateId
entifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateId!
 entifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKey!
 words.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)
))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((v!
 alidateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((valida!
 teLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsS
oftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeyword!
 s.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)!
 )))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentif
ierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(!
 DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drools!
 SoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.F
UNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((!
 validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey
(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.Q!
 UERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))!
 )||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIde
ntifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, Dro!
 olsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool!
 sSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLO
BAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((!
 validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((va!
 lidateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dro
olsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dr!
 oolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUE
RY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&(!
 (validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(!
 1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKe
ywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)!
 ))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((vali
dateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKe!
 y(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(D!
 roolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeyword
s.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))))) {s = 3;}
+                        else if ( (LA5_1==ID) && ((!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIden!
 tifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftK
eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && vali!
 dateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECL!
 ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((vali
dateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdent!
 ifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKe!
 y(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKey
words.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function")!
  ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdenti
fierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey!
 (DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drool!
 sSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE!
 )))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&(!
 (validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1,
 DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, Drools!
 SoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") &!
 & validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw
ords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") &!
 & validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw
ords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DEC!
 LARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))!
 ))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((vali
dateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && vali!
 dateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.I
MPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function")!
  ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((!
 validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((valida
teLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsS!
 oftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKe!
 ywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION
))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))|!
 |!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((!
 ((validateLT(1, "import") && validateLT(2, "function") ))&&((validateI
dentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKey!
 words.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.!
 FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((
validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") )!
 )&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((v!
 alidateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, D
roolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.T!
 EMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLAT!
 E)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdenti
fierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "!
 import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSo!
 ftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECL
ARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((valida!
 teIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKe
ywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLO!
 BAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((valida
teIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((v!
 alidateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIden!
 tifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Drools
SoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKey!
 words.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DE!
 CLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||
!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((v!
 alidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validat!
 eLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeyw
ords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validate!
 LT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSo!
 ftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))|
|(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifie!
 rKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoft
Keywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywor!
 ds.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMP!
 LATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&(
(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKey
words.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1,
 DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentif!
 ierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSo!
 ftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL
)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLAR!
 E)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentif
ierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoft!
 Keywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLAR
E))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIden!
 tifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, Droo!
 lsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.
DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))!
 ))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!
 !((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifi
erKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && v!
 alidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyword
s.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifi!
 erKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && va
lidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Dro!
 olsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKe!
 y(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TE
MPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 ))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "funct!
 ion") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val
idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT!
 (1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSo!
 ftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPOR
T)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valid!
 ateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIde!
 ntifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Dro
olsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, Droo!
 lsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valida
teIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftK
eywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeyword!
 s.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((
validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") !
 && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKey
words.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTIO!
 N)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE))!
 )&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateI
dentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((valida!
 teLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1!
 , DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.
DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsS!
 oftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&(!
 (validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdent
ifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drools!
 SoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.Q
UERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))))) {s = 3;}
 
-                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden!
 tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Drool
sSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER!
 )))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentif
ierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(!
 DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(
((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENT
AIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dro
olsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierK
ey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)
))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((va!
 lidateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeyw
ords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va!
 lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dr
oolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateLT(1, DroolsSoftKeywords.TE!
 MPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifier
Key(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||(
(validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC
T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIden!
 tifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw
ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw!
 ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY!
 ))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va
lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))
)||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentif!
 ierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FIL!
 TER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden
tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.
ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)!
 ))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(
DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))))) {s = 4;}
+                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden!
 tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Drool
sSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER!
 )))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentif
ierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(!
 DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(
((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENT
AIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dro
olsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierK
ey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoft!
 Keywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT
)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((v!
 alidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeyw
ords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va!
 lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dr
oolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIA!
 LECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifier
Key(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||(
(validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC
T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIden!
 tifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw
ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey
(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKey!
 words.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va
lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))
)||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentif!
 ierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FIL!
 TER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden
tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.
ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)!
 ))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(
DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))))) {s = 4;}
 
                         else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
 
@@ -20694,11 +20695,11 @@
     static final String DFA12_eofS =
         "\16\uffff";
     static final String DFA12_minS =
-        "\2\153\1\uffff\1\153\1\uffff\1\153\1\u008a\3\153\2\u008a\1\157\1"+
-        "\153";
+        "\2\154\1\uffff\1\154\1\uffff\1\154\1\u008b\3\154\2\u008b\1\160\1"+
+        "\154";
     static final String DFA12_maxS =
-        "\1\157\1\161\1\uffff\1\u0089\1\uffff\1\153\1\u008a\3\u0089\2\u008a"+
-        "\2\u0089";
+        "\1\160\1\162\1\uffff\1\u008a\1\uffff\1\154\1\u008b\3\u008a\2\u008b"+
+        "\2\u008a";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\11\uffff";
     static final String DFA12_specialS =
@@ -20750,7 +20751,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "565:3: ( parameters )?";
+            return "569:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -20758,9 +20759,9 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\153\1\uffff\1\u008a\1\uffff\1\153";
+        "\2\154\1\uffff\1\u008b\1\uffff\1\154";
     static final String DFA17_maxS =
-        "\1\153\1\u0089\1\uffff\1\u008a\1\uffff\1\u0089";
+        "\1\154\1\u008a\1\uffff\1\u008b\1\uffff\1\u008a";
     static final String DFA17_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\1\uffff";
     static final String DFA17_specialS =
@@ -20804,7 +20805,7 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "590:4: ( data_type )?";
+            return "594:4: ( data_type )?";
         }
     }
     static final String DFA29_eotS =
@@ -20812,9 +20813,9 @@
     static final String DFA29_eofS =
         "\12\uffff";
     static final String DFA29_minS =
-        "\2\153\5\uffff\1\0\2\uffff";
+        "\2\154\5\uffff\1\0\2\uffff";
     static final String DFA29_maxS =
-        "\1\u008b\1\u008e\5\uffff\1\0\2\uffff";
+        "\1\u008c\1\u008f\5\uffff\1\0\2\uffff";
     static final String DFA29_acceptS =
         "\2\uffff\4\2\1\1\1\uffff\2\2";
     static final String DFA29_specialS =
@@ -20863,7 +20864,7 @@
             this.transition = DFA29_transition;
         }
         public String getDescription() {
-            return "680:3: ( extend_key rule_id )?";
+            return "684:3: ( extend_key rule_id )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -20937,9 +20938,9 @@
     static final String DFA38_eofS =
         "\21\uffff";
     static final String DFA38_minS =
-        "\1\153\1\0\17\uffff";
+        "\1\154\1\0\17\uffff";
     static final String DFA38_maxS =
-        "\1\153\1\0\17\uffff";
+        "\1\154\1\0\17\uffff";
     static final String DFA38_acceptS =
         "\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+
         "\15\1\16\1\17";
@@ -20995,7 +20996,7 @@
             this.transition = DFA38_transition;
         }
         public String getDescription() {
-            return "749:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );";
+            return "753:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21068,9 +21069,9 @@
     static final String DFA61_eofS =
         "\12\uffff";
     static final String DFA61_minS =
-        "\1\153\1\0\10\uffff";
+        "\1\154\1\0\10\uffff";
     static final String DFA61_maxS =
-        "\1\157\1\0\10\uffff";
+        "\1\160\1\0\10\uffff";
     static final String DFA61_acceptS =
         "\2\uffff\1\7\1\1\1\2\1\3\1\4\1\5\1\6\1\10";
     static final String DFA61_specialS =
@@ -21118,7 +21119,7 @@
             this.transition = DFA61_transition;
         }
         public String getDescription() {
-            return "958:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )";
+            return "962:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21162,9 +21163,9 @@
     static final String DFA80_eofS =
         "\13\uffff";
     static final String DFA80_minS =
-        "\1\152\1\0\11\uffff";
+        "\1\153\1\0\11\uffff";
     static final String DFA80_maxS =
-        "\1\u008b\1\0\11\uffff";
+        "\1\u008c\1\0\11\uffff";
     static final String DFA80_acceptS =
         "\2\uffff\1\2\7\uffff\1\1";
     static final String DFA80_specialS =
@@ -21213,7 +21214,7 @@
             this.transition = DFA80_transition;
         }
         public String getDescription() {
-            return "1184:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+            return "1188:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21247,9 +21248,9 @@
     static final String DFA82_eofS =
         "\14\uffff";
     static final String DFA82_minS =
-        "\1\152\1\0\12\uffff";
+        "\1\153\1\0\12\uffff";
     static final String DFA82_maxS =
-        "\1\u008b\1\0\12\uffff";
+        "\1\u008c\1\0\12\uffff";
     static final String DFA82_acceptS =
         "\2\uffff\1\2\1\3\7\uffff\1\1";
     static final String DFA82_specialS =
@@ -21299,7 +21300,7 @@
             this.transition = DFA82_transition;
         }
         public String getDescription() {
-            return "1198:4: ({...}? paren_chunk | square_chunk )?";
+            return "1202:4: ({...}? paren_chunk | square_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21333,9 +21334,9 @@
     static final String DFA96_eofS =
         "\20\uffff";
     static final String DFA96_minS =
-        "\2\153\13\uffff\1\0\2\uffff";
+        "\2\154\13\uffff\1\0\2\uffff";
     static final String DFA96_maxS =
-        "\1\157\1\u008f\13\uffff\1\0\2\uffff";
+        "\1\160\1\u0090\13\uffff\1\0\2\uffff";
     static final String DFA96_acceptS =
         "\2\uffff\1\3\1\2\13\uffff\1\1";
     static final String DFA96_specialS =
@@ -21390,7 +21391,7 @@
             this.transition = DFA96_transition;
         }
         public String getDescription() {
-            return "1386:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+            return "1390:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21424,10 +21425,10 @@
     static final String DFA104_eofS =
         "\64\uffff";
     static final String DFA104_minS =
-        "\2\153\11\uffff\1\153\1\4\15\uffff\1\0\17\uffff\2\0\1\uffff\5\0"+
+        "\2\154\11\uffff\1\154\1\4\15\uffff\1\0\17\uffff\2\0\1\uffff\5\0"+
         "\2\uffff";
     static final String DFA104_maxS =
-        "\2\u008f\11\uffff\1\u0089\1\u0099\15\uffff\1\0\17\uffff\2\0\1\uffff"+
+        "\2\u0090\11\uffff\1\u008a\1\u009a\15\uffff\1\0\17\uffff\2\0\1\uffff"+
         "\5\0\2\uffff";
     static final String DFA104_acceptS =
         "\2\uffff\1\2\5\uffff\1\3\1\4\1\3\2\uffff\1\3\15\uffff\11\3\10\uffff"+
@@ -21450,7 +21451,7 @@
             "",
             "\1\43\1\34\1\uffff\1\43\1\32\1\37\1\40\1\43\3\uffff\2\43\1"+
             "\36\1\35\4\uffff\1\41\1\42\7\uffff\2\43\1\33",
-            "\147\54\1\52\2\54\1\55\1\53\6\54\1\60\1\56\17\54\1\57\1\61"+
+            "\150\54\1\52\2\54\1\55\1\53\6\54\1\60\1\56\17\54\1\57\1\61"+
             "\21\54",
             "",
             "",
@@ -21523,7 +21524,7 @@
             this.transition = DFA104_transition;
         }
         public String getDescription() {
-            return "1451:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+            return "1455:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -21755,551 +21756,551 @@
     }
  
 
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit538 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit543 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_EOF_in_compilation_unit548 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement603 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement607 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_package_statement609 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_id636 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_DOT_in_package_id642 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_package_id646 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement684 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement691 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement709 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement717 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement725 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement730 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_import_statement757 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement759 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement762 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement800 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement802 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement804 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement807 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name841 = new BitSet(new long[]{0x0000000000000002L,0x0000300000000000L});
-    public static final BitSet FOLLOW_DOT_in_import_name847 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_import_name851 = new BitSet(new long[]{0x0000000000000002L,0x0000300000000000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name858 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global898 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_data_type_in_global900 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_global_id_in_global902 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global904 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id933 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function965 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_data_type_in_function967 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_function_id_in_function970 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_parameters_in_function972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id1004 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query1036 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
-    public static final BitSet FOLLOW_query_id_in_query1038 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_parameters_in_query1046 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query1055 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_end_key_in_query1062 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query1064 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id1099 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id1115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1134 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1143 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters1146 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1150 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1159 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1185 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1188 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1199 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1205 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1228 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1231 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1235 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1240 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_end_key_in_type_declaration1245 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1277 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1296 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1304 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1311 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1336 = new BitSet(new long[]{0x0000000000000000L,0x0018000000000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1342 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1348 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1354 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1358 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1386 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1392 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1429 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
-    public static final BitSet FOLLOW_template_id_in_template1431 = new BitSet(new long[]{0x0000000000000000L,0x00000C0000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1438 = new BitSet(new long[]{0x0000000000000000L,0x00000C0000000000L});
-    public static final BitSet FOLLOW_template_slot_in_template1446 = new BitSet(new long[]{0x0000000000000000L,0x00008C0000000000L});
-    public static final BitSet FOLLOW_end_key_in_template1453 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1490 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1506 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1526 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1528 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1530 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1559 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1596 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1598 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_extend_key_in_rule1607 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1609 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1613 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1616 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_when_part_in_rule1619 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1622 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1666 = new BitSet(new long[]{0x0000000000000000L,0x0008880000000000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1672 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1682 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1719 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1740 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1742 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1752 = new BitSet(new long[]{0x0000000000000002L,0x0001080000000000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1756 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1763 = new BitSet(new long[]{0x0000000000000002L,0x0001080000000000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1808 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1813 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1820 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1827 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1833 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1839 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1845 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1851 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1857 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1863 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1868 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_in_rule_attribute1874 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1879 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_filter_in_rule_attribute1884 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1898 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1903 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1917 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1922 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1937 = new BitSet(new long[]{0x0000000000000000L,0x0040800000000000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1950 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1961 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1981 = new BitSet(new long[]{0x0000000000000000L,0x0080800000000000L});
-    public static final BitSet FOLLOW_INT_in_salience1990 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop2014 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop2019 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2034 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus2039 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group2056 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group2061 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2075 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group2080 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2094 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group2099 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration2113 = new BitSet(new long[]{0x0000000000000000L,0x0080800000000000L});
-    public static final BitSet FOLLOW_INT_in_duration2126 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_duration2137 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect2157 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_dialect2162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2180 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2185 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_key_in_prior2202 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_prior2207 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2224 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_entail_mode2229 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_filter_key_in_filter2251 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_filter2256 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2276 = new BitSet(new long[]{0x0000000000000002L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2297 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2324 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2334 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2343 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2352 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2358 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2402 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_equiv_key_in_lhs_or2415 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2429 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2442 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2450 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2462 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2507 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_xor_key_in_lhs_or2520 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2534 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2547 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2555 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2616 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_implies_key_in_lhs_or2629 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2643 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2656 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2664 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2676 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2711 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2738 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2740 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2753 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2764 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
-    public static final BitSet FOLLOW_hedge_in_lhs_or2794 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_or2796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_very_key_in_hedge2838 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2874 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2884 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2892 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2901 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2907 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2941 = new BitSet(new long[]{0x0000000000000002L,0x0200080000000000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2971 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2973 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2987 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3001 = new BitSet(new long[]{0x0000000000000002L,0x0200080000000000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3042 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary3050 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3056 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3062 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3068 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary3074 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3080 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3091 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3097 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary3105 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary3119 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist3135 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3169 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3177 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3184 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3199 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3245 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3247 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not3270 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3292 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3299 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3308 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3314 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3324 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval3363 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3372 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall3399 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3404 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3412 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forany_key_in_lhs_forany3449 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3456 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3467 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
-    public static final BitSet FOLLOW_subject_key_in_lhs_forany3486 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3490 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
-    public static final BitSet FOLLOW_weight_key_in_lhs_forany3501 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3505 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3521 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3582 = new BitSet(new long[]{0x0000000000000002L,0x0C00000000000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source3586 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source3596 = new BitSet(new long[]{0x0000000000000000L,0x3000080000000000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3616 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source3632 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3649 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source3665 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause3697 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause3702 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause3709 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause3714 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements3729 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements3736 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements3745 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements3752 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3778 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3787 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3795 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3800 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3810 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3816 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3870 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3880 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3885 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3896 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3900 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3905 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3917 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3921 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3926 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3942 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3948 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4006 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4030 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data4042 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4058 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause4085 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause4091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement4113 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement4122 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement4129 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement4134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4161 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4169 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id4195 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id4212 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source4232 = new BitSet(new long[]{0x0000000000000002L,0x0000900000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source4247 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source4254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain4287 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain4294 = new BitSet(new long[]{0x0000000000000002L,0x0000900000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4310 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain4324 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain4335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4371 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern4386 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding4414 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding4420 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4427 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4435 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4443 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression4484 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4496 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4502 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression4507 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact4547 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4552 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
-    public static final BitSet FOLLOW_constraints_in_fact4563 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4569 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_fact4576 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints4622 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints4626 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_constraint_in_constraints4633 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint4647 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_constr_config_in_or_constr4680 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4702 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr4738 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4797 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4808 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_or_constr_config4857 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4883 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4953 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_config_in_and_constr4995 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr5019 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr5058 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5138 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5149 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_and_constr_config5198 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5229 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5310 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr5359 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr5367 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5373 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr5383 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5388 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint5408 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint5410 = new BitSet(new long[]{0x0000000000000002L,0x0000880000000000L,0x000000000000807FL});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5417 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint5423 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint5485 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5487 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label5514 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_COLON_in_label5521 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5542 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5548 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5558 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5579 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5585 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5592 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5620 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5625 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5629 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_expression_value_in_constraint_expression5632 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5654 = new BitSet(new long[]{0x0000000000000002L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5658 = new BitSet(new long[]{0x0000000000000002L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_expression_value_in_constraint_expression5661 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5685 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5694 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5699 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator5742 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator5801 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator5840 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator5875 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator5910 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator5945 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_custom_operator6017 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_approx_symb_in_custom_operator6025 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_operator_key_in_custom_operator6028 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_square_chunk_in_custom_operator6036 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator6081 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator6086 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator6088 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator6099 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator6107 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator6111 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator6116 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6124 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_constr_parameters6159 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_parameters6164 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
-    public static final BitSet FOLLOW_constr_attr_in_constr_parameters6171 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_parameters6176 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_id_in_constr_attr6212 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_kind_in_constr_attr6224 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_args_in_constr_attr6232 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_cut_in_constr_attr6240 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_prior_in_constr_attr6248 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_id_key_in_c_param_id6270 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_id6277 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_id6286 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_kind_key_in_c_param_kind6307 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_kind6314 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_kind6323 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_kut_key_in_c_param_cut6346 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_cut6353 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_cut6362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_args_key_in_c_param_args6384 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_args6391 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_args6400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_key_in_c_param_prior6423 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_prior6430 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_prior6440 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key6480 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key6525 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value6562 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value6567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value6573 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint6592 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint6599 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6606 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint6613 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint6620 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type6635 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type6641 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type6645 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6660 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_ID_in_data_type6688 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_DOT_in_data_type6694 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type6698 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type6703 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6739 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path6753 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path6757 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path6761 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element6785 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element6791 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6820 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6839 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6848 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6854 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6859 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6878 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6901 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data6913 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6929 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6961 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data6985 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data6997 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data7013 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data7024 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk7045 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data7068 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data7080 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data7095 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data7106 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7130 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7134 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7138 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7142 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key7178 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key7182 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key7186 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key7219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key7223 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key7227 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key7259 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key7263 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key7267 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key7299 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key7303 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key7307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key7339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key7343 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key7347 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key7379 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key7383 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key7387 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7419 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7423 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7427 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key7459 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key7463 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key7467 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key7496 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key7523 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key7550 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key7577 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_prior_key7605 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entail_mode_key7638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_filter_key7671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key7704 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key7731 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key7758 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key7785 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key7812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key7839 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key7866 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key7893 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key7920 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key7947 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key7974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key8001 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key8028 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key8055 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key8082 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_equiv_key8112 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_xor_key8148 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_implies_key8183 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key8223 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key8250 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forany_key8279 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key8312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key8339 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key8366 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_end_key8393 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_init_key8440 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_subject_key8471 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_weight_key8509 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_very_key8548 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_id_key8598 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_kut_key8646 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_kind_key8683 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_args_key8720 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_APPROX_in_approx_symb8761 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2312 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2314 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred1_DRL2316 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2388 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2390 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred2_DRL2392 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2493 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2495 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred3_DRL2497 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred4_DRL2602 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_implies_key_in_synpred4_DRL2604 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred4_DRL2606 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred5_DRL2724 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred5_DRL2727 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2731 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2862 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2864 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_square_chunk_in_synpred6_DRL2866 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2954 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred7_DRL2956 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred8_DRL3115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3152 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL3280 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred10_DRL3283 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred10_DRL3285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred11_DRL4241 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_synpred12_DRL4784 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred12_DRL4786 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unary_constr_in_synpred13_DRL5125 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred13_DRL5127 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit551 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit556 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit561 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement616 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement620 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id649 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_DOT_in_package_id655 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id659 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement697 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement704 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement710 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement716 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement738 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement743 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement748 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement770 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement772 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement775 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement813 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement815 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement817 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name854 = new BitSet(new long[]{0x0000000000000002L,0x0000600000000000L});
+    public static final BitSet FOLLOW_DOT_in_import_name860 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name864 = new BitSet(new long[]{0x0000000000000002L,0x0000600000000000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name871 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global911 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_data_type_in_global913 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_global_id_in_global915 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global917 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function978 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_data_type_in_function980 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_function_id_in_function983 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_parameters_in_function985 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function987 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id1017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query1049 = new BitSet(new long[]{0x0000000000000000L,0x0000900000000000L});
+    public static final BitSet FOLLOW_query_id_in_query1051 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_parameters_in_query1059 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query1068 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_end_key_in_query1075 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query1077 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id1112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id1128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1147 = new BitSet(new long[]{0x0000000000000000L,0x0004100000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1156 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters1159 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1163 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1172 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1198 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1201 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1212 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1218 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1241 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1244 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1248 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1253 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_end_key_in_type_declaration1258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1309 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1317 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1324 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1350 = new BitSet(new long[]{0x0000000000000000L,0x0030000000000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1356 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1362 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1368 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1372 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1400 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1443 = new BitSet(new long[]{0x0000000000000000L,0x0000900000000000L});
+    public static final BitSet FOLLOW_template_id_in_template1445 = new BitSet(new long[]{0x0000000000000000L,0x0000180000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1452 = new BitSet(new long[]{0x0000000000000000L,0x0000180000000000L});
+    public static final BitSet FOLLOW_template_slot_in_template1460 = new BitSet(new long[]{0x0000000000000000L,0x0001180000000000L});
+    public static final BitSet FOLLOW_end_key_in_template1467 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1471 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1540 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1542 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1544 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1610 = new BitSet(new long[]{0x0000000000000000L,0x0000900000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1612 = new BitSet(new long[]{0x0000000000000000L,0x0048100000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_extend_key_in_rule1621 = new BitSet(new long[]{0x0000000000000000L,0x0000900000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1623 = new BitSet(new long[]{0x0000000000000000L,0x0048100000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1627 = new BitSet(new long[]{0x0000000000000000L,0x0048100000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1630 = new BitSet(new long[]{0x0000000000000000L,0x0048100000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_when_part_in_rule1633 = new BitSet(new long[]{0x0000000000000000L,0x0048100000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1636 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1680 = new BitSet(new long[]{0x0000000000000000L,0x0011100000000000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1686 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1696 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1733 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1754 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1756 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1766 = new BitSet(new long[]{0x0000000000000002L,0x0002100000000000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1770 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1777 = new BitSet(new long[]{0x0000000000000002L,0x0002100000000000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1816 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1822 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1827 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1841 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1853 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1871 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1877 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1882 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_in_rule_attribute1888 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1893 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_in_rule_attribute1898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1912 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1917 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1931 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1951 = new BitSet(new long[]{0x0000000000000000L,0x0081000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1964 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1975 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1995 = new BitSet(new long[]{0x0000000000000000L,0x0101000000000000L});
+    public static final BitSet FOLLOW_INT_in_salience2004 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience2013 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop2028 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop2033 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2048 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus2053 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group2070 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group2075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2089 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group2094 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2108 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group2113 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration2127 = new BitSet(new long[]{0x0000000000000000L,0x0101000000000000L});
+    public static final BitSet FOLLOW_INT_in_duration2140 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_duration2151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect2171 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_dialect2176 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2194 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active2199 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_prior2216 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_prior2221 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2238 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_entail_mode2243 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_key_in_filter2265 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_filter2270 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2290 = new BitSet(new long[]{0x0000000000000002L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2311 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2338 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2348 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2357 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2366 = new BitSet(new long[]{0x0000000000000000L,0x0005100000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2416 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_lhs_or2429 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2443 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2456 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2464 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2476 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2521 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_xor_key_in_lhs_or2534 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2548 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2561 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2569 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2630 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_implies_key_in_lhs_or2643 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2657 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2670 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2678 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2690 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2725 = new BitSet(new long[]{0x0000000000000002L,0x0200100000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2752 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2754 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2767 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2778 = new BitSet(new long[]{0x0000000000000002L,0x0200100000000000L});
+    public static final BitSet FOLLOW_hedge_in_lhs_or2808 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_or2810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_very_key_in_hedge2852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2888 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2898 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2906 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2915 = new BitSet(new long[]{0x0000000000000000L,0x0005100000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2921 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2955 = new BitSet(new long[]{0x0000000000000002L,0x0400100000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2985 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2987 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and3001 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3015 = new BitSet(new long[]{0x0000000000000002L,0x0400100000000000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3056 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary3064 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3070 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3076 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3082 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary3088 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3094 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3105 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3111 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary3119 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary3133 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist3149 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3176 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3183 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3191 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3198 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3213 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3259 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not3284 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3306 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3313 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3322 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3328 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3338 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval3377 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3386 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall3413 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3418 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3426 = new BitSet(new long[]{0x0000000000000000L,0x0005100000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3432 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forany_key_in_lhs_forany3463 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3470 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3481 = new BitSet(new long[]{0x0000000000000000L,0x0004100000000000L});
+    public static final BitSet FOLLOW_subject_key_in_lhs_forany3500 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3504 = new BitSet(new long[]{0x0000000000000000L,0x0004100000000000L});
+    public static final BitSet FOLLOW_weight_key_in_lhs_forany3515 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3519 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3535 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3596 = new BitSet(new long[]{0x0000000000000002L,0x1800000000000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source3600 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source3610 = new BitSet(new long[]{0x0000000000000000L,0x6000100000000000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3630 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source3646 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3663 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source3679 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause3711 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3716 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause3723 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3728 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3743 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements3750 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3759 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements3766 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3792 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3801 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3809 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3814 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3824 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3830 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3838 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3884 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3894 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3899 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3910 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3914 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3919 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3931 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3935 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3940 = new BitSet(new long[]{0x0000000000000000L,0x0002100000000000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3956 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4020 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4044 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data4056 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4072 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4083 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause4099 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause4105 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement4127 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement4136 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement4143 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement4148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4175 = new BitSet(new long[]{0x0000000000000000L,0x0000900000000000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id4209 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id4226 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source4246 = new BitSet(new long[]{0x0000000000000002L,0x0001200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source4261 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source4268 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain4301 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain4308 = new BitSet(new long[]{0x0000000000000002L,0x0001200000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4324 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain4338 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain4349 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern4400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding4428 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding4434 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4441 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4449 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4498 = new BitSet(new long[]{0x0000000000000002L,0x0200100000000000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4510 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4516 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4521 = new BitSet(new long[]{0x0000000000000002L,0x0200100000000000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact4561 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4566 = new BitSet(new long[]{0x0000000000000000L,0x0005100000000000L});
+    public static final BitSet FOLLOW_constraints_in_fact4577 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4583 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_fact4590 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints4636 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints4640 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_constraint_in_constraints4647 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint4661 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_constr_config_in_or_constr4694 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4716 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr4752 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4811 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4822 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_or_constr_config4871 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4967 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_config_in_and_constr5009 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr5033 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr5072 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5163 = new BitSet(new long[]{0x0000000000000000L,0x0009100000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_and_constr_config5212 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5243 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5324 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr5373 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5376 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr5381 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5387 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr5397 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5402 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint5422 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5424 = new BitSet(new long[]{0x0000000000000002L,0x0001100000000000L,0x00000000000100FEL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5431 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint5437 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5441 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5499 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L,0x00000000000100FCL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label5528 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_COLON_in_label5535 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5556 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5562 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L,0x00000000000100FCL});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5572 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5593 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5599 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L,0x00000000000100FCL});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5606 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5634 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5639 = new BitSet(new long[]{0x0000000000000000L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5643 = new BitSet(new long[]{0x0000000000000000L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5646 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5668 = new BitSet(new long[]{0x0000000000000002L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5672 = new BitSet(new long[]{0x0000000000000002L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5675 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5699 = new BitSet(new long[]{0x0000000000000000L,0x0001100000000000L,0x00000000000100FCL});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5708 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5713 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator5756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator5815 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator5854 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator5889 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator5924 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator5959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_custom_operator6031 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_approx_symb_in_custom_operator6039 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_operator_key_in_custom_operator6042 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_square_chunk_in_custom_operator6050 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6095 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator6100 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6102 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator6113 = new BitSet(new long[]{0x0000000000000000L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6121 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator6125 = new BitSet(new long[]{0x0000000000000000L,0x0189900000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6130 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6138 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_constr_parameters6173 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_parameters6178 = new BitSet(new long[]{0x0000000000000000L,0x0004100000000000L});
+    public static final BitSet FOLLOW_constr_attr_in_constr_parameters6185 = new BitSet(new long[]{0x0000000000000000L,0x0004100000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_parameters6190 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_id_in_constr_attr6226 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_kind_in_constr_attr6238 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_args_in_constr_attr6246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_cut_in_constr_attr6254 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_prior_in_constr_attr6262 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_id_key_in_c_param_id6284 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_id6291 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_id6300 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_kind_key_in_c_param_kind6321 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_kind6328 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_kind6337 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_kut_key_in_c_param_cut6360 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_cut6367 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_cut6376 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_args_key_in_c_param_args6398 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_args6405 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_args6414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_c_param_prior6437 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_prior6444 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_prior6454 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key6494 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key6539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value6576 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value6581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value6587 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint6606 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint6613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6620 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint6627 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint6634 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6649 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type6655 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6659 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_ID_in_data_type6702 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_DOT_in_data_type6708 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type6712 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type6717 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6746 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6753 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6767 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path6771 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6775 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element6799 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element6805 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6836 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6856 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6865 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6871 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6876 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6903 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6926 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data6938 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6954 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6965 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6986 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data7010 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data7022 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data7038 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data7049 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk7070 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data7093 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data7105 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data7120 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000007FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data7131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7155 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7159 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7163 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7167 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7171 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7203 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key7207 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7211 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key7248 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7284 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key7288 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7324 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key7328 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7364 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key7368 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key7408 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7412 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7444 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7448 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7452 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7484 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key7488 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7492 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key7521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key7548 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key7575 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key7602 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_prior_key7630 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entail_mode_key7663 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_filter_key7696 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key7729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key7756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key7783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key7810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key7837 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key7864 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key7891 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key7918 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key7945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key7972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key7999 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key8026 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key8053 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key8080 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key8107 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_equiv_key8137 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_xor_key8173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_implies_key8208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key8248 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key8275 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forany_key8304 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key8337 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key8364 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key8391 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_end_key8418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key8465 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_subject_key8496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_weight_key8534 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_very_key8573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_id_key8623 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_kut_key8671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_kind_key8708 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_args_key8745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_APPROX_in_approx_symb8786 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2326 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2328 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred1_DRL2330 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2402 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2404 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred2_DRL2406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2507 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2509 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred3_DRL2511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred4_DRL2616 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_implies_key_in_synpred4_DRL2618 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred4_DRL2620 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred5_DRL2738 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred5_DRL2741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2745 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2876 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2878 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_square_chunk_in_synpred6_DRL2880 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2968 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred7_DRL2970 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred8_DRL3129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3166 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3169 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3171 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL3294 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred10_DRL3297 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred10_DRL3299 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred11_DRL4255 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_synpred12_DRL4798 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred12_DRL4800 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_synpred13_DRL5139 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred13_DRL5141 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-05-23 11:52:09
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-05-31 19:40:40
 
 	package org.drools.lang;
 
@@ -36,159 +36,160 @@
 
 public class DescrBuilderTree extends TreeParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_KIND", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO!
 _FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_KIND", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "TH!
 EN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX", "EOL", "WS", "Esca
peSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_KIND", "VT_CONSEQUENCES", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK!
 _NO_LOOP", "VK_AUTO_FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_KIND", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", !
 "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX",
 "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
     public static final int VT_ACCESSOR_ELEMENT=40;
-    public static final int ACCUMULATE=124;
+    public static final int ACCUMULATE=125;
     public static final int VT_DATA_TYPE=41;
-    public static final int DOT_STAR=109;
-    public static final int VK_APPROX=98;
-    public static final int VK_OPERATOR=92;
+    public static final int DOT_STAR=110;
+    public static final int VK_APPROX=99;
+    public static final int VK_OPERATOR=93;
     public static final int VT_CONSTRID=48;
-    public static final int VK_FUNCTION=75;
-    public static final int VK_GLOBAL=76;
-    public static final int VK_AND=82;
-    public static final int EQUALS=116;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
-    public static final int VK_AUTO_FOCUS=59;
-    public static final int VK_SALIENCE=65;
+    public static final int VK_FUNCTION=76;
+    public static final int VK_GLOBAL=77;
+    public static final int VK_AND=83;
+    public static final int EQUALS=117;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_AUTO_FOCUS=60;
+    public static final int VK_SALIENCE=66;
     public static final int EOF=-1;
     public static final int VT_CUT=51;
     public static final int VT_CONSTR_ATTRIBUTES=50;
     public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int DOUBLE_AMPER=121;
-    public static final int GREATER=130;
-    public static final int EOL=144;
-    public static final int VK_EQUIV=83;
-    public static final int VK_IMPORT=70;
-    public static final int NOT_EQUAL=134;
-    public static final int VK_ACTION=89;
+    public static final int DOUBLE_AMPER=122;
+    public static final int GREATER=131;
+    public static final int EOL=145;
+    public static final int VK_EQUIV=84;
+    public static final int VK_IMPORT=71;
+    public static final int NOT_EQUAL=135;
+    public static final int VK_ACTION=90;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=68;
-    public static final int LESS=132;
+    public static final int VK_RULE=69;
+    public static final int LESS=133;
     public static final int VT_SLOT=15;
-    public static final int VK_OR=81;
-    public static final int VK_ARGS=104;
+    public static final int VK_OR=82;
+    public static final int VK_ARGS=105;
     public static final int VT_HEDGE=49;
-    public static final int VK_CUT=97;
+    public static final int VK_CUT=98;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=102;
-    public static final int VK_FILTER=101;
-    public static final int NULL=136;
-    public static final int BOOL=118;
-    public static final int VK_ENTAIL=99;
+    public static final int VK_AT=103;
+    public static final int VK_FILTER=102;
+    public static final int NULL=137;
+    public static final int BOOL=119;
+    public static final int VK_ENTAIL=100;
     public static final int VT_KIND=54;
-    public static final int VK_QUERY=73;
-    public static final int VK_SUBJECT=95;
-    public static final int INT=119;
-    public static final int SEMICOLON=106;
-    public static final int VK_PRIOR=100;
+    public static final int VK_QUERY=74;
+    public static final int VK_SUBJECT=96;
+    public static final int INT=120;
+    public static final int SEMICOLON=107;
+    public static final int VK_PRIOR=101;
     public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
     public static final int VT_FACT_BINDING=35;
-    public static final int CUT=150;
-    public static final int VK_RULEFLOW_GROUP=62;
-    public static final int VK_ENTRY_POINT=78;
-    public static final int SINGLE_AMPER=127;
+    public static final int CUT=151;
+    public static final int VK_RULEFLOW_GROUP=63;
+    public static final int VK_ENTRY_POINT=79;
+    public static final int SINGLE_AMPER=128;
+    public static final int VK_RESULT=92;
     public static final int VT_PACKAGE_ID=43;
-    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=145;
-    public static final int VK_NO_LOOP=58;
-    public static final int LEFT_CURLY=140;
+    public static final int WS=146;
+    public static final int VK_NO_LOOP=59;
+    public static final int LEFT_CURLY=141;
     public static final int VT_FACT=6;
     public static final int VT_PATTERN=34;
-    public static final int VK_IN=80;
-    public static final int LEFT_PAREN=111;
-    public static final int LESS_EQUAL=133;
+    public static final int VK_IN=81;
+    public static final int LEFT_PAREN=112;
+    public static final int LESS_EQUAL=134;
     public static final int VT_RULE_ID=12;
     public static final int VT_IMPORT_ID=44;
-    public static final int MISC=142;
-    public static final int FROM=122;
+    public static final int MISC=143;
+    public static final int FROM=123;
     public static final int VT_XOR=28;
-    public static final int COLLECT=125;
-    public static final int EscapeSequence=146;
-    public static final int VK_ACTIVATION_GROUP=60;
-    public static final int VK_ENABLED=66;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
-    public static final int VK_END=93;
-    public static final int VK_PACKAGE=71;
-    public static final int OVER=123;
-    public static final int VK_EXTEND=69;
-    public static final int RIGHT_SQUARE=138;
-    public static final int RIGHT_CURLY=141;
-    public static final int SINGLE_PIPE=126;
+    public static final int COLLECT=126;
+    public static final int EscapeSequence=147;
+    public static final int VK_ACTIVATION_GROUP=61;
+    public static final int VK_ENABLED=67;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=153;
+    public static final int VK_END=94;
+    public static final int VK_PACKAGE=72;
+    public static final int OVER=124;
+    public static final int VK_EXTEND=70;
+    public static final int RIGHT_SQUARE=139;
+    public static final int RIGHT_CURLY=142;
+    public static final int SINGLE_PIPE=127;
     public static final int VT_FACT_OR=36;
-    public static final int VK_IMPLIES=85;
+    public static final int VK_IMPLIES=86;
     public static final int VT_FIELD=38;
-    public static final int FLOAT=135;
+    public static final int FLOAT=136;
     public static final int VT_ACCUMULATE_ID_CLAUSE=31;
-    public static final int VK_EXISTS=86;
-    public static final int VK_FORANY=88;
-    public static final int VK_DATE_EXPIRES=56;
-    public static final int ID=107;
-    public static final int HexDigit=147;
-    public static final int VK_EVAL=77;
+    public static final int VK_EXISTS=87;
+    public static final int VK_FORANY=89;
+    public static final int VK_DATE_EXPIRES=57;
+    public static final int ID=108;
+    public static final int HexDigit=148;
+    public static final int VK_EVAL=78;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_WEIGHT=96;
-    public static final int APPROX=143;
-    public static final int AT=114;
-    public static final int DOUBLE_PIPE=120;
+    public static final int VK_WEIGHT=97;
+    public static final int APPROX=144;
+    public static final int AT=115;
+    public static final int DOUBLE_PIPE=121;
     public static final int VT_ARGS=53;
-    public static final int RIGHT_PAREN=113;
+    public static final int RIGHT_PAREN=114;
     public static final int VT_IMPLIES=29;
-    public static final int VK_XOR=84;
+    public static final int VK_XOR=85;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int THEN=139;
+    public static final int THEN=140;
     public static final int VT_EXPRESSION_CHAIN=33;
-    public static final int COMMA=112;
-    public static final int EQUAL=129;
+    public static final int COMMA=113;
+    public static final int EQUAL=130;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=103;
-    public static final int VK_DIALECT=64;
+    public static final int VK_CONSTRID=104;
+    public static final int VK_DIALECT=65;
     public static final int VT_QUERY_ID=9;
-    public static final int DOT=108;
+    public static final int DOT=109;
     public static final int VT_PRIOR=52;
     public static final int VT_GLOBAL_ID=45;
-    public static final int VK_NOT=79;
+    public static final int VK_NOT=80;
+    public static final int VT_CONSEQUENCES=55;
     public static final int VT_FROM_SOURCE=32;
-    public static final int VK_DECLARE=74;
+    public static final int VK_DECLARE=75;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=90;
-    public static final int VK_LOCK_ON_ACTIVE=57;
-    public static final int VK_TEMPLATE=72;
-    public static final int VK_DURATION=63;
+    public static final int VK_REVERSE=91;
+    public static final int VK_LOCK_ON_ACTIVE=58;
+    public static final int VK_TEMPLATE=73;
+    public static final int VK_DURATION=64;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int VT_AND_INFIX=25;
     public static final int VT_ACCESSOR_PATH=39;
-    public static final int MULTI_LINE_COMMENT=153;
-    public static final int VK_FORALL=87;
-    public static final int COLON=115;
+    public static final int MULTI_LINE_COMMENT=154;
+    public static final int VK_FORALL=88;
+    public static final int COLON=116;
     public static final int VT_AND_IMPLICIT=22;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=67;
-    public static final int WHEN=117;
-    public static final int UnicodeEscape=148;
+    public static final int VK_ATTRIBUTES=68;
+    public static final int WHEN=118;
+    public static final int UnicodeEscape=149;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_DATE_EFFECTIVE=55;
+    public static final int VK_DATE_EFFECTIVE=56;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VT_PARAM_LIST=47;
-    public static final int ARROW=128;
+    public static final int ARROW=129;
     public static final int VT_BIND_FIELD=37;
-    public static final int VK_AGENDA_GROUP=61;
+    public static final int VK_AGENDA_GROUP=62;
     public static final int VT_CONSTRAINTS=7;
-    public static final int LEFT_SQUARE=137;
-    public static final int GREATER_EQUAL=131;
-    public static final int OctalEscape=149;
-    public static final int VK_KIND=105;
-    public static final int VK_INIT=94;
-    public static final int STRING=110;
+    public static final int LEFT_SQUARE=138;
+    public static final int GREATER_EQUAL=132;
+    public static final int OctalEscape=150;
+    public static final int VK_KIND=106;
+    public static final int VK_INIT=95;
+    public static final int STRING=111;
 
     // delegates
     // delegators
@@ -5247,12 +5248,12 @@
  
 
     public static final BitSet FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit51 = new BitSet(new long[]{0xFF80000000000028L,0x0000003800001F57L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xFF80000000000028L,0x0000003800001F57L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit51 = new BitSet(new long[]{0xFF00000000000028L,0x0000007000003EAFL});
+    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xFF00000000000028L,0x0000007000003EAFL});
     public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement72 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_package_id_in_package_statement76 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id103 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id107 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id107 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L});
     public static final BitSet FOLLOW_rule_attribute_in_statement125 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement135 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement145 = new BitSet(new long[]{0x0000000000000002L});
@@ -5268,7 +5269,7 @@
     public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement255 = new BitSet(new long[]{0x0000100000000000L});
     public static final BitSet FOLLOW_import_name_in_function_import_statement259 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name278 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name282 = new BitSet(new long[]{0x0000000000000008L,0x0000280000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name282 = new BitSet(new long[]{0x0000000000000008L,0x0000500000000000L});
     public static final BitSet FOLLOW_DOT_STAR_in_import_name287 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_GLOBAL_in_global310 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_global314 = new BitSet(new long[]{0x0000200000000000L});
@@ -5280,7 +5281,7 @@
     public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_function357 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template382 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template386 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template395 = new BitSet(new long[]{0x0000000000008000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_template_slot_in_template395 = new BitSet(new long[]{0x0000000000008000L,0x0000000040000000L});
     public static final BitSet FOLLOW_VK_END_in_template403 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_SLOT_in_template_slot423 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_template_slot427 = new BitSet(new long[]{0x0000000000004000L});
@@ -5288,40 +5289,40 @@
     public static final BitSet FOLLOW_VK_QUERY_in_query453 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_QUERY_ID_in_query457 = new BitSet(new long[]{0x0000800000400000L});
     public static final BitSet FOLLOW_parameters_in_query461 = new BitSet(new long[]{0x0000800000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_query466 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_lhs_block_in_query466 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
     public static final BitSet FOLLOW_VK_END_in_query470 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_RULE_in_rule497 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule501 = new BitSet(new long[]{0x0000000000030000L,0x0024000000000020L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule501 = new BitSet(new long[]{0x0000000000030000L,0x0048000000000040L});
     public static final BitSet FOLLOW_VK_EXTEND_in_rule506 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_RULE_ID_in_rule510 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule520 = new BitSet(new long[]{0x0000000000030000L,0x0024000000000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule531 = new BitSet(new long[]{0x0000000000020000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule520 = new BitSet(new long[]{0x0000000000030000L,0x0048000000000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule531 = new BitSet(new long[]{0x0000000000020000L,0x0040000000000000L});
     public static final BitSet FOLLOW_when_part_in_rule540 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule545 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_WHEN_in_when_part564 = new BitSet(new long[]{0x0000800000400000L});
     public static final BitSet FOLLOW_lhs_block_in_when_part568 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes590 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes592 = new BitSet(new long[]{0xFF80000000000000L,0x0000003800000007L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes598 = new BitSet(new long[]{0xFF80000000000008L,0x0000003800000007L});
+    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes592 = new BitSet(new long[]{0xFF00000000000000L,0x000000700000000FL});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes598 = new BitSet(new long[]{0xFF00000000000008L,0x000000700000000FL});
     public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters622 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters627 = new BitSet(new long[]{0x0000020000000008L,0x0000080000000000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition649 = new BitSet(new long[]{0x0000020000000008L,0x0000080000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters627 = new BitSet(new long[]{0x0000020000000008L,0x0000100000000000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition649 = new BitSet(new long[]{0x0000020000000008L,0x0000100000000000L});
     public static final BitSet FOLLOW_argument_in_param_definition654 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_ID_in_argument674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
     public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration707 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration711 = new BitSet(new long[]{0x0000000000000000L,0x0004080020000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration720 = new BitSet(new long[]{0x0000000000000000L,0x0004080020000000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration733 = new BitSet(new long[]{0x0000000000000000L,0x0000080020000000L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration711 = new BitSet(new long[]{0x0000000000000000L,0x0008100040000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration720 = new BitSet(new long[]{0x0000000000000000L,0x0008100040000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration733 = new BitSet(new long[]{0x0000000000000000L,0x0000100040000000L});
     public static final BitSet FOLLOW_VK_END_in_type_declaration739 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_AT_in_decl_metadata764 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_decl_metadata768 = new BitSet(new long[]{0x0000000000100008L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata772 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_decl_field800 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_decl_field_initialization_in_decl_field804 = new BitSet(new long[]{0x0000020000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field809 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field814 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field809 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field814 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
     public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization841 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization845 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute868 = new BitSet(new long[]{0x0000000000000004L});
@@ -5358,7 +5359,7 @@
     public static final BitSet FOLLOW_VK_FILTER_in_rule_attribute1085 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_rule_attribute1089 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_CONSTR_ATTRIBUTES_in_constraint_attributes1116 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constr_attribute_in_constraint_attributes1121 = new BitSet(new long[]{0x0000000000000008L,0x0000039200000000L});
+    public static final BitSet FOLLOW_constr_attribute_in_constraint_attributes1121 = new BitSet(new long[]{0x0000000000000008L,0x0000072400000000L});
     public static final BitSet FOLLOW_VK_CONSTRID_in_constr_attribute1155 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_constr_attribute1159 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ARGS_in_constr_attribute1170 = new BitSet(new long[]{0x0000000000000004L});
@@ -5370,32 +5371,32 @@
     public static final BitSet FOLLOW_VK_PRIOR_in_constr_attribute1220 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_constr_attribute1224 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1259 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1264 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block1264 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1290 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1294 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1300 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1294 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1300 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1316 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1320 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1325 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1320 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1325 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1329 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1341 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1345 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1351 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1345 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1351 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1367 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1371 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1376 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1371 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1376 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1380 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_EQUIV_in_lhs1396 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1400 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1405 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1400 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1405 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1409 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_XOR_in_lhs1425 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1429 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1434 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1429 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1434 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1438 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPLIES_in_lhs1460 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1464 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1469 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1464 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1469 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1473 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXISTS_in_lhs1497 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1501 = new BitSet(new long[]{0x0000000000000008L});
@@ -5406,15 +5407,15 @@
     public static final BitSet FOLLOW_VK_EVAL_in_lhs1553 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1557 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_FORALL_in_lhs1569 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1574 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1574 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_VK_FORANY_in_lhs1593 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1598 = new BitSet(new long[]{0x0000000000000008L,0x0000000180000000L});
-    public static final BitSet FOLLOW_VK_SUBJECT_in_lhs1601 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1605 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
-    public static final BitSet FOLLOW_VK_WEIGHT_in_lhs1610 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1598 = new BitSet(new long[]{0x0000000000000008L,0x0000000300000000L});
+    public static final BitSet FOLLOW_VK_SUBJECT_in_lhs1601 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1605 = new BitSet(new long[]{0x0000000000000008L,0x0000000200000000L});
+    public static final BitSet FOLLOW_VK_WEIGHT_in_lhs1610 = new BitSet(new long[]{0x000200043F800008L,0x0800000003814000L});
     public static final BitSet FOLLOW_lhs_in_lhs1614 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_FROM_in_lhs1632 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1636 = new BitSet(new long[]{0x0000000100000000L,0x3000000000004000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1636 = new BitSet(new long[]{0x0000000100000000L,0x6000000000008000L});
     public static final BitSet FOLLOW_from_elements_in_lhs1640 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_lhs_pattern_in_lhs1651 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1672 = new BitSet(new long[]{0x0000000000000004L});
@@ -5432,7 +5433,7 @@
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1798 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1806 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1810 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1819 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1819 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
     public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1826 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1830 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1853 = new BitSet(new long[]{0x0000000000000004L});
@@ -5455,25 +5456,25 @@
     public static final BitSet FOLLOW_OVER_in_over_clause2020 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_over_element_in_over_clause2025 = new BitSet(new long[]{0x0000000000200008L});
     public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element2046 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element2048 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_over_element2048 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
     public static final BitSet FOLLOW_ID_in_over_element2052 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element2056 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression2079 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression2083 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2088 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression2083 = new BitSet(new long[]{0x000400F800100048L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2088 = new BitSet(new long[]{0x000400F800100048L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2096 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression2107 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2111 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2111 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2115 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression2128 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2132 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2132 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2136 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression2148 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression2152 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_field_element_in_fact_expression2152 = new BitSet(new long[]{0x000400F800100048L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2156 = new BitSet(new long[]{0x0004000000000008L});
     public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2161 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression2172 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2176 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2176 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2180 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression2191 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2195 = new BitSet(new long[]{0x0000000000000008L});
@@ -5490,21 +5491,21 @@
     public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression2289 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2293 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression2305 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2309 = new BitSet(new long[]{0x000400F800180048L,0xC3C0400410012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_VK_APPROX_in_fact_expression2314 = new BitSet(new long[]{0x000400F800180048L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2319 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2324 = new BitSet(new long[]{0x000000F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2309 = new BitSet(new long[]{0x000400F800180048L,0x8780800820024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_VK_APPROX_in_fact_expression2314 = new BitSet(new long[]{0x000400F800180048L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2319 = new BitSet(new long[]{0x000400F800100048L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2324 = new BitSet(new long[]{0x000000F800100048L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2329 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_IN_in_fact_expression2344 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2348 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2354 = new BitSet(new long[]{0x000000F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2348 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2354 = new BitSet(new long[]{0x000000F800100048L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_set_in_fact_expression2369 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2380 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2385 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2380 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2385 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2389 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_set_in_fact_expression2405 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2415 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2420 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2415 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2420 = new BitSet(new long[]{0x000000F800100040L,0x8780800020024000L,0x00000000000003FDL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2424 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2437 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_accessor_element_in_fact_expression2442 = new BitSet(new long[]{0x0000010000000008L});
@@ -5520,13 +5521,13 @@
     public static final BitSet FOLLOW_ID_in_accessor_element2563 = new BitSet(new long[]{0x0000000000080008L});
     public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2567 = new BitSet(new long[]{0x0000000000080008L});
     public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2588 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2592 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2600 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2592 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2600 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000400L});
     public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2622 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2626 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2634 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_ID_in_data_type2626 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2634 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000400L});
     public static final BitSet FOLLOW_VT_CUT_in_cut2662 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VK_CUT_in_cut2664 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_CONSTRID_in_constr_identifier2692 = new BitSet(new long[]{0x0000000000000004L});

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -22,6 +22,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.drools.compiler.TypeDeclarationError;
 import org.drools.lang.descr.AccumulateDescr;
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.AttributeDescr;
@@ -48,6 +49,8 @@
 import org.drools.lang.descr.RestrictionConnectiveDescr;
 import org.drools.lang.descr.ReturnValueRestrictionDescr;
 import org.drools.lang.descr.RuleDescr;
+import org.drools.lang.descr.TypeDeclarationDescr;
+import org.drools.lang.descr.TypeFieldDescr;
 import org.drools.lang.descr.VariableRestrictionDescr;
 import org.drools.util.ReflectiveVisitor;
 
@@ -64,6 +67,9 @@
     private static final String eol          = System.getProperty( "line.separator" );
     private String              template;
     private boolean             needsBracket = false;
+    
+    private boolean				inPattern = false;
+    private int					dep = 0;
 
     public synchronized String dump(final PackageDescr packageDescr) {
         this.drlDump = new StringBuffer();
@@ -76,12 +82,37 @@
     }
 
     public void visitAndDescr(final AndDescr descr) {
-        this.template = new String();
-        if ( !descr.getDescrs().isEmpty() ) {
-            this.template = processDescrList( descr.getDescrs() );
-        } else {
-            this.template = "";
-        }
+    	dep++;
+    	StringBuilder sb = new StringBuilder();
+    	
+    	if (! inPattern) {
+    		for (int j = 0; j < dep+1; j++)
+        		sb.append("\t");
+    		sb.append("( and ").append(DrlDumper.eol);
+    	
+    		Iterator iterator = descr.getDescrs().iterator();
+    		while (iterator.hasNext()) {    	
+    			visit( iterator.next() );
+    			sb.append(this.template);            
+    		}
+    		for (int j = 0; j < dep+1; j++)
+        		sb.append("\t");
+    		sb.append(")"+DrlDumper.eol);
+    		this.template = sb.toString();
+    	} else {
+    		if ( !descr.getDescrs().isEmpty() ) {
+              this.template = processDescrList( descr.getDescrs() );
+    		} else {
+    			this.template = "";
+    		}    		
+    	}
+    	dep--;
+//        this.template = new String();
+//        if ( !descr.getDescrs().isEmpty() ) {
+//            this.template = processDescrList( descr.getDescrs() );
+//        } else {
+//            this.template = "";
+//        }
     }
     
     private static Set needsQuotes = new HashSet();
@@ -122,8 +153,10 @@
     }
 
     public void visitPatternDescr(final PatternDescr descr) {
-        StringBuffer buf = new StringBuffer();
-        buf.append( "\t\t" );
+    	inPattern = true;
+        StringBuilder buf = new StringBuilder();
+        for (int j = 0; j < dep+2; j++)
+    		buf.append("\t");
         if ( descr.getIdentifier() != null ) {
             buf.append(  descr.getIdentifier() );
             buf.append( " : " );
@@ -134,7 +167,7 @@
         if ( !descr.getConstraint().getDescrs().isEmpty() ) {
             buf.append( processColoumnConstraintList( descr.getConstraint().getDescrs() ) );
         }
-        buf.append( " )" );
+        buf.append( " )" ).append(DrlDumper.eol);
         if( descr.getSource() != null ) {
             buf.append( " from " );
             this.template = buf.toString();
@@ -142,6 +175,7 @@
             buf.append( this.template );
         }
         this.template = buf.toString();
+        inPattern = false;
     }
 
     public void visitEvalDescr(final EvalDescr descr) {
@@ -210,8 +244,14 @@
     }
 
     public void visitFieldBindingDescr(final FieldBindingDescr descr) {
-        this.template = new String();
-        this.template = descr.getIdentifier() + " : " + descr.getFieldName();
+//        this.template = new String();
+//        this.template = descr.getIdentifier() + " : " + descr.getFieldName();
+    	if (descr.getFieldConstraint() != null) {
+    		visit(descr.getFieldConstraint());    	
+    		this.template = descr.getIdentifier() + " : " + this.template;
+    	} else {
+    		this.template = descr.getIdentifier() + " : " + descr.getFieldName();
+    	}
     }
 
     public void visitFunctionDescr(final FunctionDescr functionDescr) {
@@ -237,7 +277,10 @@
                 text = "\"" + text + "\"";
             }
         } else if( descr.getType() == LiteralRestrictionDescr.TYPE_STRING ) {
-            text = "\"" + text + "\"";
+        	if (text.length() == 0)
+        		text = "";
+        	else 
+        		text = "\"" + text + "\"";
         }
         this.template = descr.getEvaluator() + " " + text;
     }
@@ -253,21 +296,41 @@
     }
 
     public void visitNotDescr(final NotDescr descr) {
-        this.template = new String();
-        if ( !descr.getDescrs().isEmpty() ) {
-            this.template = "\t   not ( " + processDescrList( descr.getDescrs() ) +")";
-        } else {
-            this.template = "";
-        }
+    	dep++;    	
+    	StringBuilder sb = new StringBuilder();
+    	if (! inPattern) {
+	    	for (int j = 0; j < dep+1; j++)
+	    		sb.append("\t");
+	    	
+	    	sb.append("not ( ").append(DrlDumper.eol);
+	    		sb.append(processDescrList(descr.getDescrs()));
+	    	
+	    	for (int j = 0; j < dep+1; j++)
+		    	sb.append("\t");	
+	    	sb.append(")").append(DrlDumper.eol);
+	    	
+	    	this.template = sb.toString();
+    	} else {
+    		// Shouldn't be here...
+    	}
+//        this.template = new String();
+//        if ( !descr.getDescrs().isEmpty() ) {
+//            this.template = "\t   not ( " + processDescrList( descr.getDescrs() ) +")";
+//        } else {
+//            this.template = "";
+//        }
+        dep--;
     }
 
     public void visitOrDescr(final OrDescr descr) {
+    	dep++;
         this.template = new String();
         if ( !descr.getDescrs().isEmpty() ) {
             this.template = processOrDescrList( descr.getDescrs() );
         } else {
             this.template = " ";
         }
+        dep--;
     }
 
     public void visitPackageDescr(final PackageDescr packageDescr) {
@@ -278,6 +341,10 @@
         if ( packageDescr.getImports() != null ) {
             appendDrlDump( processImportsList( packageDescr.getImports() ) );
         }
+        if ( packageDescr.getTypeDeclarations() != null ) {
+            appendDrlDump( processTypeDeclarationList( packageDescr.getTypeDeclarations() ) );
+        }
+        
         if ( packageDescr.getGlobals() != null ) {
             appendDrlDump( processGlobalsList( packageDescr.getGlobals() ) );
         }
@@ -323,9 +390,9 @@
 
         	final RuleDescr ruleDescr = (RuleDescr) ruleobj;
             String rule = "rule \"" + ruleDescr.getName() + "\" " + DrlDumper.eol;
-            final String attribute = processAttribute( ruleDescr.getAttributes().values() );
+            final String attribute = ruleDescr.getAttributes() != null ? processAttribute( ruleDescr.getAttributes().values() ) : "";
             String lhs = "";
-            if ( !ruleDescr.getLhs().getDescrs().isEmpty() ) {
+            if ( ruleDescr.getLhs() != null && !ruleDescr.getLhs().getDescrs().isEmpty() ) {
                 lhs = "\t when" + DrlDumper.eol + processDescrList( ruleDescr.getLhs().getDescrs() ) + DrlDumper.eol;
             } else {
 
@@ -350,6 +417,34 @@
     }
 
     private String processOrDescrList(final List descr) {
+    	if (! inPattern) {
+	    	StringBuilder sb = new StringBuilder();
+	    	for (int j = 0; j < dep+1; j++)
+	    		sb.append("\t");
+	    	sb.append("( or ").append(DrlDumper.eol);
+	    	
+	    	for ( final Iterator iterator = descr.iterator(); iterator.hasNext(); ) {
+	            visit( iterator.next() );
+	            sb.append(this.template);            
+	        }
+	    	for (int j = 0; j < dep+1; j++)
+	    		sb.append("\t");
+	    	sb.append(")"+DrlDumper.eol);
+	    	
+	    	return sb.toString();
+    	} else {
+    		StringBuilder sb = new StringBuilder("( ");
+    		
+    		for ( final Iterator iterator = descr.iterator(); iterator.hasNext(); ) {
+                visit( iterator.next() );
+                sb.append(this.template);
+                if (iterator.hasNext()) 
+                	sb.append(" || ");
+                
+            }	
+    		return sb.toString();
+    	}
+    	/*
         String descrString = "";
         for ( final Iterator iterator = descr.iterator(); iterator.hasNext(); ) {
             visit( iterator.next() );
@@ -362,6 +457,7 @@
         }
         return descrString.substring( 0,
                                       descrString.length() - 4 );
+        */
     }
 
     private String processColoumnConstraintList(final List descr) {
@@ -437,7 +533,7 @@
             if ( obj.getClass().equals( PatternDescr.class ) || obj.getClass().equals( CollectDescr.class ) ) {
                 descrString += DrlDumper.eol;
             } else if ( ite.hasNext() ) {
-                descrString += " && ";
+                descrString += inPattern ? " && " : DrlDumper.eol;
             }
         }
         return descrString;
@@ -522,5 +618,40 @@
     private void appendDrlDump(final String temp) {
         this.drlDump.append( temp );
     }
+    
+    
+    
+    
+    private String processTypeDeclarationList(final List typeDeclarations) {
+        String typeList = "";
 
+        for ( final Iterator it = typeDeclarations.iterator(); it.hasNext(); ) {
+            final TypeDeclarationDescr typeDescr = (TypeDeclarationDescr) it.next(); 
+            visit(typeDescr); 
+            typeList += this.template;
+        }
+        return typeList + DrlDumper.eol;
+    }
+    
+    public void visitTypeDeclarationDescr(final TypeDeclarationDescr typeDescr) {
+        StringBuilder sb = new StringBuilder("declare ");
+        	String fullName = typeDescr.getTypeName();
+        	int idx = fullName.lastIndexOf('.');
+        	String simpleName = idx < 0 ? fullName : fullName.substring(idx+1);
+        
+        sb.append(simpleName).append(DrlDumper.eol);
+        
+        	for (TypeFieldDescr field : typeDescr.getFields().values()) {
+        		sb.append("\t");
+        		sb.append(field.getFieldName());
+        		sb.append(" : ");
+        		sb.append(field.getPattern().getObjectType());
+        		sb.append(DrlDumper.eol);
+        	}
+        
+        sb.append("end").append(DrlDumper.eol);
+        
+        this.template = sb.toString();
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RuleDescr.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -124,6 +124,10 @@
     public String getName() {
         return this.name;
     }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
 
     public String getDialect() {
         AttributeDescr dialect = this.attributes.get( "dialect" );

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/xml/RuleMLDumper.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/xml/RuleMLDumper.java	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/xml/RuleMLDumper.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -129,27 +129,13 @@
 import org.w3c.dom.Node;
 
 /**
- * This utility will take a AST of a rule package, and emit XML. This can be
- * used in porting from DRL to XML.
  * 
- * @author <a href="mailto:jayaramcs at gmail.com">Author Jayaram C S</a>
  */
 public class RuleMLDumper extends ReflectiveVisitor implements
 		PackageDescrDumper, DroolsDescrVisitor {
 
-	static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
 
-	static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
 
-	static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
-
-	static final String NAFFOLOGEQ = "naffologeq";
-
-	static final DocumentBuilderFactory naffologeqFactory = DocumentBuilderFactory
-			.newInstance();
-
-	static final Map<String, DocumentBuilderFactory> validators = new HashMap<String, DocumentBuilderFactory>();
-
 	private DocumentBuilderFactory doxFactory = DocumentBuilderFactory
 			.newInstance();
 
@@ -209,116 +195,8 @@
 			x.printStackTrace();
 		}
 	}
+	
 
-	// public void test() {
-	//		
-	// for (String lang : validators.keySet()) {
-	//			
-	// DocumentBuilderFactory factory = validators.get(lang);
-	//			
-	//									
-	// ByteArrayOutputStream bos = new ByteArrayOutputStream();
-	// format(dox, bos);
-	// ByteArrayInputStream bs = new ByteArrayInputStream(
-	// bos.toByteArray()
-	// );
-	//				
-	// try {
-	//					
-	// DocumentBuilder dob = factory.newDocumentBuilder();
-	// dob.setErrorHandler(new ErrorHandler () {
-	//
-	// public void error(SAXParseException exception)
-	// throws SAXException {
-	// System.err.println("Error");
-	// exception.printStackTrace();
-	//								
-	// }
-	//
-	// public void fatalError(SAXParseException exception)
-	// throws SAXException {
-	// System.err.println("Fatal Error");
-	// exception.printStackTrace();
-	//								
-	// }
-	//
-	// public void warning(SAXParseException exception)
-	// throws SAXException {
-	// System.err.println("Warning");
-	// exception.printStackTrace();
-	// }
-	//							
-	// });
-	// dob.parse(bs);
-	// System.out.println(lang.toUpperCase()+ "\t\t\t\t true\n");
-	//					
-	// } catch (SAXException e) {
-	//					
-	// System.out.println(lang.toUpperCase()+ "\t\t\t\t false\n");
-	// System.out.println(e.toString());
-	//					
-	// } catch (IOException e) {
-	// //
-	// System.out.println(e.toString());
-	// } catch (ParserConfigurationException e) {
-	// System.out.println(e.toString());
-	//				
-	// }
-	//											
-	//			  
-	// }
-	//		
-	// }
-
-	// public void test2(String schemaId) {
-	//		
-	//		
-	// String resLoc = "org/ruleml/"+schemaId+".xsd";
-	// URL schemaURL = null;
-	// try {
-	//			
-	// schemaURL = ((ClassPathResource)
-	// ResourceFactory.newClassPathResource(resLoc)).getURL();
-	//			
-	// } catch (IOException e) {
-	// //
-	// e.printStackTrace();
-	// }
-	//		
-	// ByteArrayOutputStream bos = new ByteArrayOutputStream();
-	// format(dox, bos);
-	// ByteArrayInputStream bs = new ByteArrayInputStream(
-	// bos.toByteArray()
-	// );
-	//		
-	//		
-	// Schema schema = null;
-	// try {
-	// String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
-	// SchemaFactory factory = SchemaFactory.newInstance(language);
-	// schema = factory.newSchema(schemaURL);
-	// } catch (Exception e) {
-	// e.printStackTrace();
-	// }
-	//
-	// try {
-	// Validator validator = schema.newValidator();
-	// SAXSource source = new SAXSource(
-	// new InputSource(bs));
-	//
-	//
-	// validator.validate(source);
-	// System.out.println();
-	// System.out.println("Validation passed.");
-	//
-	// } catch (Exception e) {
-	// // catching all validation exceptions
-	// System.out.println();
-	// System.out.println(e.toString());
-	// }
-	//			  			  			  			    	
-	// }
-
 	public synchronized String dump(InputStream drl, InputStream config) {
 
 		try {
@@ -497,7 +375,8 @@
 		if (descr.getIdentifier() != null) {
 			varName = context.getRuleName() + "." + descr.getIdentifier();
 		} else {
-			varName = context.getRuleName() + "." + context.getClassType();
+			String vtype = "$"+context.getClassType().toLowerCase();
+			varName = context.getRuleName() + "." + vtype;
 		}
 
 		varName = context.trySetCurrentObjectVariable(varName);
@@ -574,6 +453,7 @@
 
 			Element slot = dox.createElement("slot");
 			Element field = dox.createElement("Ind");
+				field.setAttribute("type",context.getCurrentFieldType());
 			field.setTextContent(context.getCurrentField());
 			slot.appendChild(field);
 
@@ -881,7 +761,10 @@
 		// visitChildren(elassert,packageDescr.getFunctions());
 		// visitChildren(elassert,packageDescr.getGlobals());
 		visitChildren(elassert, packageDescr.getImports());
+		
 		visitChildren(elassert, packageDescr.getTypeDeclarations());
+			context.setCurrDeclarations(packageDescr.getTypeDeclarations());
+		
 		visitChildren(ruleBase, packageDescr.getRules());
 
 		elassert.appendChild(ruleBase);
@@ -1145,6 +1028,7 @@
 
 		Element slot = dox.createElement("slot");
 		Element field = dox.createElement("Ind");
+			field.setAttribute("type",context.getCurrentFieldType());
 		field.setTextContent(context.getCurrentField());
 		slot.appendChild(field);
 
@@ -1233,7 +1117,9 @@
 		return (string == null || string.trim().length() == 0);
 	}
 
-	public void visitTypeDeclarationDescr(TypeDeclarationDescr descr) {
+	public void visitTypeDeclarationDescr(TypeDeclarationDescr descr) {		
+		
+		
 		context.mapClass(descr.getTypeName(), context.getPackageName() + "."
 				+ descr.getTypeName());
 
@@ -1316,6 +1202,8 @@
 
 		private KnowledgeBase kBase;
 
+		private List<TypeDeclarationDescr> currDeclarations;
+
 		public String validateVariable(String id) {
 			if (variables.containsKey(id)) {
 
@@ -1333,9 +1221,11 @@
 				}
 				return validateVariable(id);
 			}
+									
 			return id;
 		}
 
+		
 		public String getMappedClass(String objectType) {
 			return this.classMap.get(objectType);
 		}
@@ -1436,6 +1326,7 @@
 		 *            the currentObjectVariable to set
 		 */
 		public String trySetCurrentObjectVariable(String currentObjectVariable) {
+						
 			String name = validateVariable(currentObjectVariable);
 			this.currentObjectVariable = name;
 
@@ -1465,7 +1356,50 @@
 		public String getCurrentField() {
 			return currentField;
 		}
+		
+		public String getCurrentFieldType() {
+			if (getCurrentField().equals("class"))
+				return "java.lang.Class";
+			
+			List<TypeDeclarationDescr> candidates = getCurrDeclarations();
+			
+			String getterName = getCurrentField();
+				getterName = "get" + getterName.substring(0,1).toUpperCase() + getterName.substring(1);
+				
+			
+			for (TypeDeclarationDescr type : candidates) {
+				if (type.getTypeName().equals(getClassType())) {					
+					TypeFieldDescr field = type.getFields().get(getCurrentField());
+					return field.getPattern().getObjectType();
+				}
+				
+			} 
 
+			
+				try {							
+					String className = getPackageName()+"."+getClassType();
+					Class klass = Class.forName(className);	
+					Method getter = klass.getMethod(getterName);
+					return getter.getReturnType().getName();
+				} catch (Exception e) {			
+					return Object.class.getName();
+				}
+			
+			
+			
+		}
+
+
+		private List<TypeDeclarationDescr> getCurrDeclarations() {
+			return currDeclarations;
+		}
+		
+		
+		private void setCurrDeclarations(List<TypeDeclarationDescr> declars) {
+			currDeclarations = declars;
+		}
+
+
 		/**
 		 * @param currentFieldVariable
 		 *            the currentFieldVariable to set

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/ DescrBuilderTree.g.backup
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/ DescrBuilderTree.g.backup	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/ DescrBuilderTree.g.backup	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,437 @@
+tree grammar DescrBuilderTree;
+
+options{
+	tokenVocab=DRL;
+	ASTLabelType=DroolsTree;
+	TokenLabelType=DroolsToken;
+}
+
+ at header {
+	package org.drools.lang;
+
+	import java.util.HashMap;
+	import java.util.Map;
+	import java.util.LinkedList;
+	import org.drools.lang.descr.AccessorDescr;
+	import org.drools.lang.descr.AccumulateDescr;
+	import org.drools.lang.descr.AndDescr;
+	import org.drools.lang.descr.AttributeDescr;
+	import org.drools.lang.descr.BaseDescr;
+	import org.drools.lang.descr.BehaviorDescr;
+	import org.drools.lang.descr.DeclarativeInvokerDescr;
+	import org.drools.lang.descr.DescrFactory;
+	import org.drools.lang.descr.FactTemplateDescr;
+	import org.drools.lang.descr.FieldConstraintDescr;
+	import org.drools.lang.descr.FieldTemplateDescr;
+	import org.drools.lang.descr.FromDescr;
+	import org.drools.lang.descr.FunctionDescr;
+	import org.drools.lang.descr.FunctionImportDescr;
+	import org.drools.lang.descr.GlobalDescr;
+	import org.drools.lang.descr.ImportDescr;
+	import org.drools.lang.descr.PackageDescr;
+	import org.drools.lang.descr.PatternSourceDescr;
+	import org.drools.lang.descr.QueryDescr;
+	import org.drools.lang.descr.RuleDescr;
+	import org.drools.lang.descr.TypeDeclarationDescr;
+	import org.drools.lang.descr.TypeFieldDescr;
+}
+
+ at members {
+	DescrFactory factory = new DescrFactory();
+	PackageDescr packageDescr = null;
+	
+	public PackageDescr getPackageDescr() {
+		return packageDescr;
+	}
+}
+
+compilation_unit
+	:	^(VT_COMPILATION_UNIT package_statement statement*)
+	;
+ 
+package_statement returns [String packageName]
+	:	^(VK_PACKAGE packageId=package_id)
+	{	this.packageDescr = factory.createPackage($packageId.idList);	
+		$packageName = packageDescr.getName();	}
+	|	
+	{	this.packageDescr = factory.createPackage(null);	
+		$packageName = "";	}
+	;
+
+package_id returns [List idList]
+	:	^(VT_PACKAGE_ID tempList+=ID+)
+	{	$idList = $tempList;	}
+	;
+
+statement
+	:	a=rule_attribute
+	{	this.packageDescr.addAttribute($a.attributeDescr);	}
+	|	fi=function_import_statement
+	{	this.packageDescr.addFunctionImport($fi.functionImportDescr);	}
+	|	is=import_statement 
+	{	this.packageDescr.addImport($is.importDescr);	}
+	|	gl=global
+	{	this.packageDescr.addGlobal($gl.globalDescr);	}
+	|	fn=function
+	{	this.packageDescr.addFunction($fn.functionDescr);	}
+	|	tp=template
+	{	this.packageDescr.addFactTemplate($tp.factTemplateDescr);	}
+	|	rl=rule
+	{	this.packageDescr.addRule($rl.ruleDescr);	}
+	|	qr=query
+	{	this.packageDescr.addRule($qr.queryDescr);	}
+	|	td=type_declaration
+	{	this.packageDescr.addTypeDeclaration($td.declaration);	}
+	;
+
+import_statement returns [ImportDescr importDescr]
+	:	^(importStart=VK_IMPORT importId=import_name)
+	{	$importDescr = factory.createImport($importStart, $importId.idList, $importId.dotStar);	}
+	;
+
+function_import_statement returns [FunctionImportDescr functionImportDescr]
+	:	^(importStart=VT_FUNCTION_IMPORT VK_FUNCTION importId=import_name)
+	{	$functionImportDescr = factory.createFunctionImport($importStart, $importId.idList, $importId.dotStar);	}
+	;
+
+import_name returns[List idList, DroolsTree dotStar]
+	:	^(VT_IMPORT_ID tempList+=ID+ tempDotStar=DOT_STAR?)
+	{	$idList = $tempList;
+		$dotStar = $tempDotStar;	}
+	;
+
+global returns [GlobalDescr globalDescr]
+	:	^(start=VK_GLOBAL dt=data_type globalId=VT_GLOBAL_ID)
+	{	$globalDescr = factory.createGlobal($start,$dt.dataType, $globalId);	}
+	;
+
+function returns [FunctionDescr functionDescr]
+	:	^(start=VK_FUNCTION dt=data_type? functionId=VT_FUNCTION_ID params=parameters content=VT_CURLY_CHUNK)
+	{	$functionDescr = factory.createFunction($start, $dt.dataType, $functionId, $params.paramList, $content);	}
+	;
+
+template returns [FactTemplateDescr factTemplateDescr]
+ at init{
+	List slotList = new LinkedList<FieldTemplateDescr>();
+}	:	^(start=VK_TEMPLATE id=VT_TEMPLATE_ID
+			( ts=template_slot {slotList.add($ts.fieldTemplateDescr);})+ end=VK_END)
+	{	$factTemplateDescr = factory.createFactTemplate($start, $id, slotList, $end);	}
+	;
+
+template_slot returns [FieldTemplateDescr fieldTemplateDescr]
+	:	^(VT_SLOT dt=data_type id=VT_SLOT_ID)
+	{	$fieldTemplateDescr = factory.createFieldTemplate($dt.dataType, $id);	}
+	;
+
+query returns [QueryDescr queryDescr]
+	:	^(start=VK_QUERY id=VT_QUERY_ID params=parameters? lb=lhs_block end=VK_END)
+	{	$queryDescr = factory.createQuery($start, $id, $params.paramList, $lb.andDescr, $end);	}
+	;
+
+rule returns [RuleDescr ruleDescr]
+ at init {	List<Map> declMetadaList = new LinkedList<Map>();}
+	:	^(start=VK_RULE id=VT_RULE_ID  (^(VK_EXTEND parent_id=VT_RULE_ID))?
+		(dm=decl_metadata {declMetadaList.add($dm.attData);	})*
+		 ra=rule_attributes? 
+		 wn=when_part? content=VT_RHS_CHUNK)
+	{	$ruleDescr = factory.createRule($start, $id, $parent_id, $ra.attrList, $wn.andDescr, $content, declMetadaList);	}
+	;
+
+when_part returns [AndDescr andDescr]
+	:	WHEN lh=lhs_block
+	{	$andDescr = $lh.andDescr;	}
+	;
+
+rule_attributes returns [List attrList]
+ at init{
+	$attrList = new LinkedList<AttributeDescr>();
+}	:	^(VT_RULE_ATTRIBUTES VK_ATTRIBUTES? (rl=rule_attribute {attrList.add($rl.attributeDescr);})+)
+	;
+
+parameters returns [List paramList]
+ at init{
+	$paramList = new LinkedList<Map<BaseDescr, BaseDescr>>();
+}	:	^(VT_PARAM_LIST (p=param_definition {$paramList.add($p.param);})*)
+	;
+
+param_definition returns [Map param]
+	:	dt=data_type? a=argument
+	{	$param = new HashMap<BaseDescr, BaseDescr>();
+		$param.put($a.arg, $dt.dataType);	}
+	;
+
+argument returns [BaseDescr arg]
+	:	id=ID (LEFT_SQUARE rightList+=RIGHT_SQUARE)*
+	{	$arg = factory.createArgument($id, $rightList);	}
+	;
+
+type_declaration returns [TypeDeclarationDescr declaration]
+ at init {	List<Map> declMetadaList = new LinkedList<Map>();
+		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); }
+	:	^(VK_DECLARE id=VT_TYPE_DECLARE_ID 
+			(dm=decl_metadata {declMetadaList.add($dm.attData);	})* 
+			(df=decl_field {declFieldList.add($df.fieldDescr);	})* VK_END)
+	{	$declaration = factory.createTypeDeclr($id, declMetadaList, declFieldList);	}
+	;
+
+decl_metadata returns [Map attData]
+ at init {attData = new HashMap();}
+	:	^(AT att=ID pc=VT_PAREN_CHUNK?)
+	{	$attData.put($att, $pc);	}
+	;
+
+decl_field returns [TypeFieldDescr fieldDescr]
+ at init {List<Map> declMetadaList = new LinkedList<Map>(); }
+	:	^(id=ID init=decl_field_initialization? dt=data_type (dm=decl_metadata {declMetadaList.add($dm.attData);})*)
+	{	$fieldDescr = factory.createTypeField($id, $init.expr, $dt.dataType, declMetadaList);	}			
+	;
+
+decl_field_initialization returns [String expr]
+	:	^(EQUALS pc=VT_PAREN_CHUNK)
+	{	$expr = $pc.text.substring(1, $pc.text.length() -1 ).trim();	}
+	;
+
+rule_attribute returns [AttributeDescr attributeDescr]
+	:	(^(attrName=VK_SALIENCE (value=INT|value=VT_PAREN_CHUNK)) 
+	|	^(attrName=VK_NO_LOOP value=BOOL?)  
+	|	^(attrName=VK_AGENDA_GROUP value=STRING)  
+	|	^(attrName=VK_DURATION (value=INT|value=VT_PAREN_CHUNK))   
+	|	^(attrName=VK_ACTIVATION_GROUP value=STRING) 
+	|	^(attrName=VK_AUTO_FOCUS value=BOOL?) 
+	|	^(attrName=VK_DATE_EFFECTIVE value=STRING) 
+	|	^(attrName=VK_DATE_EXPIRES value=STRING) 
+	|	^(attrName=VK_ENABLED (value=BOOL|value=VT_PAREN_CHUNK)) 
+	|	^(attrName=VK_RULEFLOW_GROUP value=STRING) 
+	|	^(attrName=VK_LOCK_ON_ACTIVE value=BOOL?)
+	|	^(attrName=VK_DIALECT value=STRING)
+	| ^(attrName=VK_PRIOR value=VT_PAREN_CHUNK)
+	| ^(attrName=VK_ENTAIL value=STRING)
+	| ^(attrName=VK_FILTER value=STRING)
+	)
+	{	$attributeDescr = factory.createAttribute($attrName, $value);	}
+	;
+	
+lhs_block returns [AndDescr andDescr]
+ at init{
+	$andDescr = new AndDescr();
+}	:	^(VT_AND_IMPLICIT (dt=lhs {$andDescr.addDescr($dt.baseDescr);})*)
+	;
+
+lhs	returns [BaseDescr baseDescr]
+ at init{
+	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
+}	:	^(start=VT_OR_PREFIX param=VT_SQUARE_CHUNK? (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
+	{	$baseDescr = factory.createOr($start, lhsList, $param.text);	}
+	|	^(start=VT_OR_INFIX param=VT_SQUARE_CHUNK? dt1=lhs dt2=lhs)
+	{	lhsList.add($dt1.baseDescr);
+		lhsList.add($dt2.baseDescr);
+		$baseDescr = factory.createOr($start, lhsList, $param.text);	}
+	|	^(start=VT_AND_PREFIX param=VT_SQUARE_CHUNK? (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
+	{	$baseDescr = factory.createAnd($start, lhsList, $param.text);	}
+	|	^(start=VT_AND_INFIX param=VT_SQUARE_CHUNK? dt1=lhs dt2=lhs)
+	{	lhsList.add($dt1.baseDescr);
+		lhsList.add($dt2.baseDescr);
+		$baseDescr = factory.createAnd($start, lhsList, $param.text);	}
+		
+	|  ^(start=VT_EQUIV param=VT_SQUARE_CHUNK? dt1=lhs dt2=lhs)
+  { lhsList.add($dt1.baseDescr);
+    lhsList.add($dt2.baseDescr);
+    $baseDescr = factory.createEquiv($start, lhsList, $param.text);  }	
+  |  ^(start=VT_XOR param=VT_SQUARE_CHUNK? dt1=lhs dt2=lhs)
+  { lhsList.add($dt1.baseDescr);
+    lhsList.add($dt2.baseDescr);
+    $baseDescr = factory.createXor($start, lhsList, $param.text);  }  
+		
+		
+		
+	|	^(start=VK_EXISTS dt=lhs)
+	{	$baseDescr = factory.createExists($start, $dt.baseDescr);	}
+	|	^(start=VK_NOT dt=lhs)
+	{	$baseDescr = factory.createNot($start, $dt.baseDescr);	}
+	
+	|  ^(start=VT_HEDGE dt=lhs)
+  { $baseDescr = factory.createHedge($start, $dt.baseDescr);  }
+	
+	
+	|	^(start=VK_EVAL pc=VT_PAREN_CHUNK)
+	{	$baseDescr = factory.createEval($start, $pc);	}
+	|	^(start=VK_FORALL (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
+	{	$baseDescr = factory.createForAll($start, lhsList);	}
+	
+	|  ^(start=VK_FORANY (arg=lhs (VK_SUBJECT sub=lhs)? (VK_WEIGHT wgt=lhs)?) )
+  { $baseDescr = factory.createForAny($start, arg.baseDescr, sub == null ? null : sub.baseDescr, wgt == null ? null : wgt.baseDescr); }
+  
+	|	^(FROM pn=lhs_pattern fe=from_elements)
+	{	$baseDescr = factory.setupFrom($pn.baseDescr, $fe.patternSourceDescr);	}
+	|	pn=lhs_pattern
+	{	$baseDescr = $pn.baseDescr;	}
+	;
+
+from_elements returns [PatternSourceDescr patternSourceDescr]
+	:	^(start=ACCUMULATE dt=lhs
+	{	$patternSourceDescr = factory.createAccumulate($start, $dt.baseDescr);	} 
+		ret=accumulate_parts[$patternSourceDescr])
+	{	$patternSourceDescr = $ret.accumulateDescr;	}
+	|	^(start=COLLECT dt=lhs)
+	{	$patternSourceDescr = factory.createCollect($start, $dt.baseDescr);	}
+	|	^(start=VK_ENTRY_POINT entryId=VT_ENTRYPOINT_ID)
+	{	$patternSourceDescr = factory.createEntryPoint($start, $entryId);	}
+	|	fs=from_source_clause
+	{	$patternSourceDescr = $fs.fromDescr;	}
+	;
+
+accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr]
+	:	ac1=accumulate_init_clause[$patternSourceDescr]
+	{	$accumulateDescr = $ac1.accumulateDescr;	}
+	|	ac2=accumulate_id_clause[$patternSourceDescr]
+	{	$accumulateDescr = $ac2.accumulateDescr;	}
+	;
+
+accumulate_init_clause [PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] 
+	:	^(VT_ACCUMULATE_INIT_CLAUSE 
+			^(start=VK_INIT pc1=VT_PAREN_CHUNK) 
+			^(VK_ACTION pc2=VT_PAREN_CHUNK) 
+			rev=accumulate_init_reverse_clause?
+			^(VK_RESULT pc3=VT_PAREN_CHUNK))
+	{	if (null == rev){
+			$accumulateDescr = factory.setupAccumulateInit($accumulateParam, $start, $pc1, $pc2, $pc3, null);
+		} else {
+			$accumulateDescr = factory.setupAccumulateInit($accumulateParam, $start, $pc1, $pc2, $pc3, $rev.vkReverseChunk);
+		}	}
+	;
+
+accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk]
+	:	^(vk=VK_REVERSE pc=VT_PAREN_CHUNK)
+	{	$vkReverse = $vk;
+		$vkReverseChunk = $pc;	}
+	;
+
+accumulate_id_clause [PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr]
+	:	^(VT_ACCUMULATE_ID_CLAUSE id=ID pc=VT_PAREN_CHUNK)
+	{	$accumulateDescr = factory.setupAccumulateId($accumulateParam, $id, $pc);	}
+	;
+
+from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr]
+scope{
+	AccessorDescr accessorDescr;
+}	:	^(VT_FROM_SOURCE id=ID pc=VT_PAREN_CHUNK? 
+	{	$from_source_clause::accessorDescr = factory.createAccessor($id, $pc);	
+		$retAccessorDescr = $from_source_clause::accessorDescr;	}
+		expression_chain?)
+	{	$fromDescr = factory.createFromSource(factory.setupAccessorOffset($from_source_clause::accessorDescr)); }
+	;
+
+expression_chain
+	:	^(start=VT_EXPRESSION_CHAIN id=ID sc=VT_SQUARE_CHUNK? pc=VT_PAREN_CHUNK?
+	{	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain($start, $id, $sc, $pc);	
+		$from_source_clause::accessorDescr.addInvoker(declarativeInvokerResult);	}
+		expression_chain?)
+	;
+
+lhs_pattern returns [BaseDescr baseDescr] 
+	:	^(VT_PATTERN fe=fact_expression ) c=cut? oc=over_clause?
+	{	
+	 $baseDescr = factory.setupBehavior($fe.descr, $oc.behaviorList);
+	 if (c) $baseDescr.setCutter(true); 	 
+	}
+	;
+
+over_clause returns [List behaviorList]
+ at init {$behaviorList = new LinkedList();}
+	:	^(OVER (oe=over_element {$behaviorList.add($oe.behavior);})+)
+	;
+
+over_element returns [BehaviorDescr behavior]
+	:	^(VT_BEHAVIOR ID id2=ID pc=VT_PAREN_CHUNK)
+	{	$behavior = factory.createBehavior($id2,$pc);	}
+	;
+
+fact_expression returns [BaseDescr descr]
+ at init{
+	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
+}	:	^(VT_FACT pt=pattern_type (fe=fact_expression {exprList.add($fe.descr);})*)
+	{	$descr = factory.createPattern($pt.dataType, exprList);	}
+	|	^(VT_FACT_BINDING label=VT_LABEL fact=fact_expression )
+	{	$descr = factory.setupPatternBiding($label, $fact.descr);	}
+	|	^(start=VT_FACT_OR left=fact_expression right=fact_expression )
+	{	$descr = factory.createFactOr($start, $left.descr, $right.descr);	}
+
+	|	^(VT_FIELD field=field_element fe=fact_expression? c=cut?)
+	{	if (null != fe){
+			$descr = factory.setupFieldConstraint($field.element, $fe.descr, c);
+		} else {
+			$descr = factory.setupFieldConstraint($field.element, null, c);
+		}	}
+	|	^(VT_BIND_FIELD label=VT_LABEL fe=fact_expression)
+	{	$descr = factory.createFieldBinding($label, $fe.descr);	}
+
+	|	^(VK_EVAL pc=VT_PAREN_CHUNK)
+	{	$descr = factory.createPredicate($pc);	}
+
+	|	^(op=EQUAL fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=NOT_EQUAL fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=GREATER fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=GREATER_EQUAL fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=LESS fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=LESS_EQUAL fe=fact_expression)
+	{	$descr = factory.setupRestriction($op, null, $fe.descr);	}
+	|	^(op=VK_OPERATOR not=VK_NOT? approx=VK_APPROX? param=VT_SQUARE_CHUNK? fe=fact_expression?)
+	{	$descr = factory.setupRestriction($op, $not, (fe == null ? null : $fe.descr), $param);	}
+	
+
+	|	^(VK_IN not=VK_NOT? (fe=fact_expression {exprList.add($fe.descr);})+)
+	{	$descr = factory.createRestrictionConnective($not, exprList);	}
+
+	|	^(DOUBLE_PIPE left=fact_expression param=VT_SQUARE_CHUNK? right=fact_expression )
+	{	$descr = factory.createOrRestrictionConnective($left.descr, $right.descr, $param.text);	}
+	|	^(DOUBLE_AMPER left=fact_expression param=VT_SQUARE_CHUNK? right=fact_expression )
+	{	$descr = factory.createAndRestrictionConnective($left.descr, $right.descr, $param.text);	}
+
+	|	^(VT_ACCESSOR_PATH (ae=accessor_element {exprList.add($ae.element);})+)
+	{	$descr = factory.createAccessorPath(exprList);	}
+	|	s=STRING
+	{	$descr = factory.createStringLiteralRestriction($s);	}
+	|	i=INT
+	{	$descr = factory.createIntLiteralRestriction($i);	}
+	|	f=FLOAT
+	{	$descr = factory.createFloatLiteralRestriction($f);	}
+	|	b=BOOL
+	{	$descr = factory.createBoolLiteralRestriction($b);	}
+	|	n=NULL
+	{	$descr = factory.createNullLiteralRestriction($n);	}
+	|	pc=VT_PAREN_CHUNK
+	{	$descr = factory.createReturnValue($pc);	}
+	;
+
+field_element returns [FieldConstraintDescr element]
+ at init{
+	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
+}	:	^(VT_ACCESSOR_PATH (ae=accessor_element {aeList.add($ae.element);})+)
+	{	$element = factory.createFieldConstraint(aeList);	}
+	;
+
+accessor_element returns [BaseDescr element]
+	:	^(VT_ACCESSOR_ELEMENT id=ID sc+=VT_SQUARE_CHUNK*)
+	{	$element = factory.createAccessorElement($id, $sc);	}
+	;
+
+pattern_type returns [BaseDescr dataType]
+	:	^(VT_PATTERN_TYPE idList+=ID+ (LEFT_SQUARE rightList+=RIGHT_SQUARE)*)
+	{	$dataType = factory.createDataType($idList, $rightList);	}
+	;
+
+data_type returns [BaseDescr dataType]
+	:	^(VT_DATA_TYPE idList+=ID+ (LEFT_SQUARE rightList+=RIGHT_SQUARE)*)
+	{	$dataType = factory.createDataType($idList, $rightList);	}
+	;
+  
+cut returns [boolean isCutter] 
+  : ^(start=VT_CUT VK_CUT)
+  { $isCutter = true; }
+  ; 
+	
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-06-04 18:55:04 UTC (rev 26828)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-06-04 18:56:50 UTC (rev 26829)
@@ -2,6 +2,7 @@
 
 options {
 	output=AST;
+	//backtrack=true;
 }
 
 tokens {
@@ -71,6 +72,9 @@
   VT_PRIOR;
   VT_ARGS;
   VT_KIND;
+  
+  
+  VT_CONSEQUENCES;
 	
 
 	VK_DATE_EFFECTIVE;
@@ -619,7 +623,7 @@
 		paren_chunk?
 		-> ^(AT ID paren_chunk?)
 	;
-
+ 
 decl_field
 	:	ID	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
 		decl_field_initialization? 
@@ -1713,6 +1717,8 @@
 	-> ^(VT_ACCESSOR_ELEMENT ID square_chunk*)
 	;
 
+
+
 rhs_chunk
 @init{
 	String text = "";
@@ -1720,6 +1726,7 @@
 	-> VT_RHS_CHUNK[$rc.start,text]
 	;
 
+
 rhs_chunk_data
 	:	THEN 
 	{	if ($THEN.text.equalsIgnoreCase("then")){
@@ -1731,6 +1738,803 @@
 		SEMICOLON? {	emit($SEMICOLON, DroolsEditorType.KEYWORD);	}
 	;
 
+
+/*
+rhs_chunk_java
+  :
+    j_blockStatement*
+  ;
+
+
+j_block 
+    :   LEFT_CURLY
+        ( j_blockStatement )*
+        RIGHT_CURLY
+    ;
+
+j_blockStatement 
+    :   j_localVariableDeclarationStatement
+    |   j_classOrInterfaceDeclaration
+    |   j_statement
+    ;
+
+    
+j_statement 
+    :   j_block
+            
+    |   ('assert'
+        )
+        j_expression (COLON j_expression)? SEMICOLON
+    |   'assert'  j_expression (COLON j_expression)? SEMICOLON            
+    |   'if' j_parExpression statement ('else' j_statement)?          
+    |   j_forstatement
+    |   'while' j_parExpression j_statement
+    |   'do' j_statement 'while' j_parExpression SEMICOLON
+    |   j_trystatement
+    |   'switch' j_parExpression LEFT_CURLY j_switchBlockStatementGroups RIGHT_CURLY
+    |   'synchronized' j_parExpression j_block
+    |   'return' (j_expression )? SEMICOLON
+    |   'throw' j_expression SEMICOLON
+    |   'break'
+            (ID
+            )? SEMICOLON
+    |   'continue'
+            (ID
+            )? SEMICOLON
+    |   j_expression  SEMICOLON     
+    |   ID COLON j_statement
+    |   SEMICOLON
+
+    ;
+    
+j_localVariableDeclarationStatement 
+    :   j_localVariableDeclaration
+        SEMICOLON
+    ;
+
+j_localVariableDeclaration 
+    :   j_variableModifiers j_type
+        j_variableDeclarator
+        (',' j_variableDeclarator
+        )*
+    ;
+    
+j_variableModifiers 
+    :   (   'final'
+        //|   j_annotation            //No annotations allowed
+        )*
+    ;
+    
+j_type 
+    :   j_classOrInterfaceType
+        ('[' ']'
+        )*
+    |   j_primitiveType
+        ('[' ']'
+        )*
+    ;
+
+
+j_classOrInterfaceType 
+    :   ID
+        (j_typeArguments
+        )?
+        ('.' ID
+            (j_typeArguments
+            )?
+        )*
+    ;
+
+j_primitiveType  
+    :   'boolean'
+    |   'char'
+    |   'byte'
+    |   'short'
+    |   'int'
+    |   'long'
+    |   'float'
+    |   'double'
+    ;
+
+j_typeArguments 
+    :   '<' j_typeArgument
+        (',' j_typeArgument
+        )* 
+        '>'
+    ;
+
+j_typeArgument 
+    :   j_type
+    |   '?'
+        (
+            ('extends'
+            |'super'
+            )
+            j_type
+        )?
+    ;
+    
+j_variableDeclarator 
+    :   ID
+        ('[' ']'
+        )*
+        ('=' j_variableInitializer
+        )?
+    ;
+
+j_variableInitializer 
+    :   j_arrayInitializer
+    |   j_expression
+    ;
+
+j_arrayInitializer 
+    :   '{' 
+            (j_variableInitializer
+                (',' j_variableInitializer
+                )*
+            )? 
+            (',')? 
+        '}'             
+    ;
+    
+    
+    
+    
+    
+j_expression 
+    :   j_conditionalExpression
+        (j_assignmentOperator j_expression
+        )?
+    ;
+
+j_parExpression 
+    :   '(' j_expression ')'
+    ;
+    
+j_expressionList 
+    :   j_expression
+        (',' j_expression
+        )*
+    ;    
+    
+j_assignmentOperator 
+    :   '='
+    |   '+='
+    |   '-='
+    |   '*='
+    |   '/='
+    |   '&='
+    |   '|='
+    |   '^='
+    |   '%='
+    |    '<' '<' '='
+    |    '>' '>' '>' '='
+    |    '>' '>' '='
+    ;
+
+
+j_conditionalExpression 
+    :   j_conditionalOrExpression
+        ('?' j_expression ':' j_conditionalExpression
+        )?
+    ;
+
+j_conditionalOrExpression 
+    :   j_conditionalAndExpression
+        ('||' j_conditionalAndExpression
+        )*
+    ;
+
+j_conditionalAndExpression 
+    :   j_inclusiveOrExpression
+        ('&&' j_inclusiveOrExpression
+        )*
+    ;
+
+j_inclusiveOrExpression 
+    :   j_exclusiveOrExpression
+        ('|' j_exclusiveOrExpression
+        )*
+    ;
+
+j_exclusiveOrExpression 
+    :   j_andExpression
+        ('^' j_andExpression
+        )*
+    ;
+
+j_andExpression 
+    :   j_equalityExpression
+        ('&' j_equalityExpression
+        )*
+    ;
+
+j_equalityExpression 
+    :   j_instanceOfExpression
+        (   
+            (   '=='
+            |   '!='
+            )
+            j_instanceOfExpression
+        )*
+    ;
+
+j_instanceOfExpression 
+    :   j_relationalExpression
+        ('instanceof' j_type
+        )?
+    ;
+
+j_relationalExpression 
+    :   j_shiftExpression
+        (j_relationalOp j_shiftExpression
+        )*
+    ;
+
+j_relationalOp 
+    :    '<' '='
+    |    '>' '='
+    |   '<'
+    |   '>'
+    ;
+
+j_shiftExpression 
+    :   j_additiveExpression
+        (j_shiftOp j_additiveExpression
+        )*
+    ;
+
+
+j_shiftOp 
+    :    '<' '<'
+    |    '>' '>' '>'
+    |    '>' '>'
+    ;
+
+
+j_additiveExpression 
+    :   j_multiplicativeExpression
+        (   
+            (   '+'
+            |   '-'
+            )
+            j_multiplicativeExpression
+         )*
+    ;
+
+j_multiplicativeExpression 
+    :
+        j_unaryExpression
+        (   
+            (   '*'
+            |   '/'
+            |   '%'
+            )
+            j_unaryExpression
+        )*
+    ;
+
+
+j_unaryExpression 
+    :   '+'  j_unaryExpression
+    |   '-' j_unaryExpression
+    |   '++' j_unaryExpression
+    |   '--' j_unaryExpression
+    |   j_unaryExpressionNotPlusMinus
+    ;
+
+j_unaryExpressionNotPlusMinus 
+    :   '~' j_unaryExpression
+    |   '!' j_unaryExpression
+    |   j_castExpression
+    |   j_primary
+        (j_selector
+        )*
+        (   '++'
+        |   '--'
+        )?
+    ;
+
+j_castExpression 
+    :   '(' j_primitiveType ')' j_unaryExpression
+    |   '(' j_type ')' j_unaryExpressionNotPlusMinus
+    ;
+    
+    
+j_forstatement 
+    :   
+        // enhanced for loop
+        'for' '(' j_variableModifiers j_type ID ':' 
+        j_expression ')' j_statement
+            
+        // normal for loop
+    |   'for' '(' 
+                (j_forInit
+                )? ';' 
+                (j_expression
+                )? ';' 
+                (j_expressionList
+                )? ')' j_statement
+    ;
+
+j_forInit 
+    :   j_localVariableDeclaration
+    |   j_expressionList
+    ;
+    
+    
+j_primary 
+    :   j_parExpression            
+    |   'this'
+        ('.' ID
+        )*
+        (j_identifierSuffix
+        )?
+    |   ID   ('.' ID
+        )*
+        (j_identifierSuffix
+        )?
+    |   'super'
+        j_superSuffix
+    |   j_literal
+    |   j_creator
+    |   j_primitiveType
+        ('[' ']'
+        )*
+        '.' 'class'
+    |   'void' '.' 'class'
+    ;
+
+j_creator 
+    :   'new' j_nonWildcardTypeArguments j_classOrInterfaceType j_classCreatorRest
+    |   'new' j_classOrInterfaceType j_classCreatorRest
+    |   j_arrayCreator
+    ;
+    
+    
+j_superSuffix  
+    :   j_arguments
+    |   '.' (j_typeArguments
+        )?
+        ID
+        (j_arguments
+        )?
+    ;
+
+
+j_identifierSuffix 
+    :   ('[' ']'
+        )+
+        '.' 'class'
+    |   ('[' j_expression ']'
+        )+
+    |   j_arguments
+    |   '.' 'class'
+    |   '.' j_nonWildcardTypeArguments ID j_arguments
+    |   '.' 'this'
+    |   '.' 'super' j_arguments
+    |   j_innerCreator
+    ;
+   
+j_arrayCreator 
+    :   'new' j_createdName
+        '[' ']'
+        ('[' ']'
+        )*
+        j_arrayInitializer
+
+    |   'new' j_createdName
+        '[' j_expression
+        ']'
+        (   '[' j_expression
+            ']'
+        )*
+        ('[' ']'
+        )*
+    ;
+
+j_createdName 
+    :   j_classOrInterfaceType
+    |   j_primitiveType
+    ;
+
+j_innerCreator  
+    :   '.' 'new'
+        (j_nonWildcardTypeArguments
+        )?
+        ID
+        (j_typeArguments
+        )?
+        j_classCreatorRest
+    ;
+
+
+j_classCreatorRest 
+    :   j_arguments
+        (j_classBody
+        )?
+    ;
+
+
+j_nonWildcardTypeArguments 
+    :   '<' j_typeList
+        '>'
+    ;
+
+j_arguments 
+    :   '(' (j_expressionList
+        )? ')'
+    ;
+
+j_literal 
+    :   INT
+    |   J_LONGLITERAL
+    |   FLOAT
+    |   J_DOUBLELITERAL
+    |   EscapeSequence
+    |   STRING
+    |   BOOL
+    |   NULL
+    ;
+    
+    
+j_classBody 
+    :   '{' 
+        (j_classBodyDeclaration
+        )* 
+        '}'
+    ;
+
+j_interfaceBody 
+    :   '{' 
+        (j_interfaceBodyDeclaration
+        )* 
+        '}'
+    ;
+
+j_classBodyDeclaration 
+    :   ';'
+    |   ('static'
+        )? 
+        j_block
+    |   j_memberDecl
+    ;
+
+j_memberDecl 
+    :    j_fieldDeclaration
+    |    j_methodDeclaration
+    |    j_classDeclaration
+    |    j_interfaceDeclaration
+    ;
+
+
+j_methodDeclaration 
+    :
+        
+         j_modifiers
+        (j_typeParameters
+        )?
+        ID
+        j_formalParameters
+        ('throws' j_qualifiedNameList
+        )?
+        '{' 
+        (j_explicitConstructorInvocation
+        )?
+        (j_blockStatement
+        )*
+        '}'
+    |   j_modifiers
+        (j_typeParameters
+        )?
+        (j_type
+        |   'void'
+        )
+        ID
+        j_formalParameters
+        ('[' ']'
+        )*
+        ('throws' j_qualifiedNameList
+        )?            
+        (        
+            j_block
+        |   ';' 
+        )
+    ;
+
+
+j_fieldDeclaration 
+    :   j_modifiers
+        j_type
+        j_variableDeclarator
+        (',' j_variableDeclarator
+        )*
+        ';'
+    ;
+
+j_interfaceBodyDeclaration 
+    :
+        j_interfaceFieldDeclaration
+    |   j_interfaceMethodDeclaration
+    |   j_interfaceDeclaration
+    |   j_classDeclaration
+    |   ';'
+    ;
+
+j_interfaceMethodDeclaration 
+    :   j_modifiers
+        (j_typeParameters
+        )?
+        (j_type
+        |'void'
+        )
+        ID
+        j_formalParameters
+        ('[' ']'
+        )*
+        ('throws' j_qualifiedNameList
+        )? ';'
+    ;
+
+
+j_interfaceFieldDeclaration 
+    :   j_modifiers j_type j_variableDeclarator
+        (',' j_variableDeclarator
+        )*
+        ';'
+    ;
+
+j_interfaceDeclaration 
+    :   j_normalInterfaceDeclaration
+    //|   annotationTypeDeclaration
+    ;
+    
+j_normalInterfaceDeclaration 
+    :   j_modifiers 'interface' ID
+        (j_typeParameters
+        )?
+        ('extends' j_typeList
+        )?
+        j_interfaceBody
+    ;
+
+j_typeList 
+    :   j_type
+        (',' j_type
+        )*
+    ;
+
+j_formalParameters 
+    :   '('
+        (j_formalParameterDecls
+        )? 
+        ')'
+    ;
+
+j_formalParameterDecls 
+    :   j_ellipsisParameterDecl
+    |   j_normalParameterDecl
+        (',' j_normalParameterDecl
+        )*
+    |   (j_normalParameterDecl
+        ','
+        )+ 
+        j_ellipsisParameterDecl
+    ;
+
+j_normalParameterDecl 
+    :   j_variableModifiers j_type ID
+        ('[' ']'
+        )*
+    ;
+
+j_ellipsisParameterDecl 
+    :   j_variableModifiers
+        j_type  '...'
+        ID
+    ;
+
+
+j_explicitConstructorInvocation 
+    :   (j_nonWildcardTypeArguments
+        )?     
+        ('this'
+        |'super'
+        )
+        j_arguments ';'
+
+    |   j_primary
+        '.'
+        (j_nonWildcardTypeArguments
+        )?
+        'super'
+        j_arguments ';'
+    ;
+
+j_qualifiedName 
+    :   ID
+        ('.' ID
+        )*
+    ;
+
+j_modifiers  
+    :
+    (    //annotation
+        // |   
+        'public'
+    |   'protected'
+    |   'private'
+    |   'static'
+    |   'abstract'
+    |   'final'
+    |   'native'
+    |   'synchronized'
+    |   'transient'
+    |   'volatile'
+    |   'strictfp'
+    )*
+    ;
+
+j_qualifiedNameList 
+    :   j_qualifiedName
+        (',' j_qualifiedName
+        )*
+    ;
+
+
+
+j_selector  
+    :   '.' ID
+        (j_arguments
+        )?
+    |   '.' 'this'
+    |   '.' 'super'
+        j_superSuffix
+    |   j_innerCreator
+    |   '[' j_expression ']'
+    ;
+
+
+j_typeParameters 
+    :   '<'
+            j_typeParameter
+            (',' j_typeParameter
+            )*
+        '>'
+    ;
+
+j_typeParameter 
+    :   ID
+        ('extends' j_typeBound
+        )?
+    ;
+
+
+j_typeBound 
+    :   j_type
+        ('&' j_type
+        )*
+    ;
+
+
+j_classDeclaration 
+    :   j_normalClassDeclaration
+    |   j_enumDeclaration
+    ;
+
+j_normalClassDeclaration 
+    :   j_modifiers  'class' ID
+        (j_typeParameters
+        )?
+        ('extends' j_type
+        )?
+        ('implements' j_typeList
+        )?            
+        j_classBody
+    ;
+
+
+j_enumDeclaration 
+    :   j_modifiers 
+        ('enum'
+        ) 
+        ID
+        ('implements' j_typeList
+        )?
+        j_enumBody
+    ;
+    
+    
+j_enumBody 
+    :   '{'
+        (j_enumConstants
+        )? 
+        ','? 
+        (j_enumBodyDeclarations
+        )? 
+        '}'
+    ;
+
+j_enumConstants 
+    :   j_enumConstant
+        (',' j_enumConstant
+        )*
+    ;
+
+
+j_enumConstant 
+    :   
+        // (annotations)?
+        ID
+        (j_arguments
+        )?
+        (j_classBody
+        )?        
+    ;
+
+j_enumBodyDeclarations 
+    :   ';' 
+        (j_classBodyDeclaration
+        )*
+    ;
+
+
+j_classOrInterfaceDeclaration 
+    :    j_classDeclaration
+    |   j_interfaceDeclaration
+    ;
+    
+    
+j_trystatement 
+    :   'try' j_block
+        (   j_catches 'finally' j_block
+        |   j_catches
+        |   'finally' j_block
+        )
+     ;
+     
+j_catches 
+    :   j_catchClause
+        (j_catchClause
+        )*
+    ;
+
+j_catchClause 
+    :   'catch' '(' j_formalParameter
+        ')' j_block 
+    ;
+
+j_formalParameter 
+    :   j_variableModifiers j_type ID
+        ('[' ']'
+        )*
+    ;
+     
+     
+j_switchBlockStatementGroups 
+    :   (j_switchBlockStatementGroup )*
+    ;
+
+j_switchBlockStatementGroup 
+    :
+        j_switchLabel
+        (j_blockStatement
+        )*
+    ;
+
+j_switchLabel 
+    :   'case' j_expression ':'
+    |   'default' ':'
+    ;
+     
+     
+
+*/
+
+
+
+
+
 curly_chunk
 @init{
 	String text = "";
@@ -2170,6 +2974,19 @@
   
 	
 	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
 
 WS      :       (	' '
                 |	'\t'
@@ -2314,6 +3131,8 @@
 	:	'->'
 	;
 
+
+
 ID	
 	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')*
 	|	'`' ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')+ '`'
@@ -2385,3 +3204,104 @@
 MISC 	:
 		'$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' 
 	;
+
+	
+
+
+/*
+	 
+
+J_LONGLITERAL
+    :   J_IntegerNumber J_LongSuffix
+    ;
+
+    
+J_INTLITERAL
+    :   J_IntegerNumber 
+    ;
+    
+fragment
+J_IntegerNumber
+    :   '0' 
+    |   '1'..'9' ('0'..'9')*    
+    |   '0' ('0'..'7')+         
+    |   J_HexPrefix J_HexDigit+        
+    ;
+
+fragment
+J_HexPrefix
+    :   '0x' | '0X'
+    ;
+        
+fragment
+J_HexDigit
+    :   ('0'..'9'|'a'..'f'|'A'..'F')
+    ;
+
+fragment
+J_LongSuffix
+    :   'l' | 'L'
+    ;
+
+
+fragment
+J_NonIntegerNumber
+    :   ('0' .. '9')+ '.' ('0' .. '9')* J_Exponent?  
+    |   '.' ( '0' .. '9' )+ J_Exponent?  
+    |   ('0' .. '9')+ J_Exponent  
+    |   ('0' .. '9')+ 
+    |   
+        J_HexPrefix (J_HexDigit )* 
+        (    () 
+        |    ('.' (J_HexDigit )* ) 
+        ) 
+        ( 'p' | 'P' ) 
+        ( '+' | '-' )? 
+        ( '0' .. '9' )+
+        ;
+        
+fragment 
+J_Exponent    
+    :   ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ 
+    ;
+    
+fragment 
+J_FloatSuffix
+    :   'f' | 'F' 
+    ;     
+
+fragment
+J_DoubleSuffix
+    :   'd' | 'D'
+    ;
+        
+J_DOUBLELITERAL
+    :   J_NonIntegerNumber J_DoubleSuffix?
+    ;
+
+
+
+
+
+fragment
+J_EscapeSequence 
+    :   '\\' (
+                 'b' 
+             |   't' 
+             |   'n' 
+             |   'f' 
+             |   'r' 
+             |   '\"' 
+             |   '\'' 
+             |   '\\' 
+             |       
+                 ('0'..'3') ('0'..'7') ('0'..'7')
+             |       
+                 ('0'..'7') ('0'..'7') 
+             |       
+                 ('0'..'7')
+             )          
+    ;     
+
+	  
+*/
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.error
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.error	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.error	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,2311 @@
+grammar DRL;
+
+options {
+	output=AST;
+}
+
+tokens {
+	VT_COMPILATION_UNIT;
+	VT_FUNCTION_IMPORT;
+
+	VT_FACT;
+	VT_CONSTRAINTS;
+	VT_LABEL;
+
+	VT_QUERY_ID;
+	VT_TEMPLATE_ID;
+	VT_TYPE_DECLARE_ID;
+	VT_RULE_ID;
+	VT_ENTRYPOINT_ID;
+	VT_SLOT_ID;
+	
+	VT_SLOT;
+	VT_RULE_ATTRIBUTES;
+
+	VT_RHS_CHUNK;
+	VT_CURLY_CHUNK;
+	VT_SQUARE_CHUNK;
+	VT_PAREN_CHUNK;
+	VT_BEHAVIOR;
+
+	VT_AND_IMPLICIT;
+	VT_AND_PREFIX;
+	VT_OR_PREFIX;
+	VT_AND_INFIX;
+	VT_OR_INFIX;
+	VT_EQUIV;
+	VT_XOR;
+
+	VT_ACCUMULATE_INIT_CLAUSE;
+	VT_ACCUMULATE_ID_CLAUSE;
+	VT_FROM_SOURCE;
+	VT_EXPRESSION_CHAIN;
+
+	VT_PATTERN;
+	VT_FACT_BINDING;
+	VT_FACT_OR;
+	VT_BIND_FIELD;
+	VT_FIELD;
+
+	VT_ACCESSOR_PATH;
+	VT_ACCESSOR_ELEMENT;
+	
+	VT_DATA_TYPE;
+	VT_PATTERN_TYPE;
+	VT_PACKAGE_ID;
+	VT_IMPORT_ID;
+	VT_GLOBAL_ID;
+	VT_FUNCTION_ID;
+	VT_PARAM_LIST;
+	
+	VT_CONSTRID;
+	
+	VT_CUT;
+	VT_HEDGE;
+	
+	VT_PRIOR;
+	VT_PARAMS;
+	VT_TYPE;
+	
+
+	VK_DATE_EFFECTIVE;
+	VK_DATE_EXPIRES;
+	VK_LOCK_ON_ACTIVE;
+	VK_NO_LOOP;
+	VK_AUTO_FOCUS;
+	VK_ACTIVATION_GROUP;
+	VK_AGENDA_GROUP;
+	VK_RULEFLOW_GROUP;
+	VK_DURATION;
+	VK_DIALECT;
+	VK_SALIENCE;
+	VK_ENABLED;
+	VK_ATTRIBUTES;
+	VK_RULE;
+	VK_EXTEND;
+	VK_IMPORT;
+	VK_PACKAGE;
+	VK_TEMPLATE;
+	VK_QUERY;
+	VK_DECLARE;
+	VK_FUNCTION;
+	VK_GLOBAL;
+	VK_EVAL;
+	VK_ENTRY_POINT;
+	VK_NOT;
+	VK_IN;
+	VK_OR;
+	VK_AND;
+	VK_EQUIV;
+	VK_XOR;
+	VK_EXISTS;
+	VK_FORALL;
+	VK_FORANY;
+	VK_ACTION;
+	VK_REVERSE;
+	VK_RESULT;
+	VK_OPERATOR;
+	VK_END;
+	VK_INIT;
+	
+	VK_SUBJECT;
+	VK_WEIGHT;
+	
+	
+	VK_CUT;
+	
+	VK_APPROX;
+	
+	VK_ENTAIL;
+	VK_PRIOR;
+	VK_FILTER;
+	
+	VK_AT;
+	VK_CONSTRID;
+	
+	VK_PARAMS;
+	VK_TYPE;
+}
+
+ at parser::header {
+	package org.drools.lang;
+	
+	import java.util.List;
+	import java.util.LinkedList;
+	import org.drools.compiler.DroolsParserException;
+}
+
+ at lexer::header {
+	package org.drools.lang;
+
+	import org.drools.compiler.DroolsParserException;
+}
+
+
+ at lexer::members {
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
+
+	/** The standard method called to automatically emit a token at the
+	 *  outermost lexical rule.  The token object should point into the
+	 *  char buffer start..stop.  If there is a text override in 'text',
+	 *  use that to set the token's text.  Override this method to emit
+	 *  custom Token objects.
+	 */
+	public Token emit() {
+		Token t = new DroolsToken(input, state.type, state.channel, state.tokenStartCharIndex, getCharIndex()-1);
+		t.setLine(state.tokenStartLine);
+		t.setText(state.text);
+		t.setCharPositionInLine(state.tokenStartCharPositionInLine);
+		emit(t);
+		return t;
+	}
+
+	public void reportError(RecognitionException ex) {
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+
+ at parser::members {
+	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
+	private String source = "unknown";
+	private boolean lookaheadTest = false;
+	private LinkedList<DroolsSentence> editorInterface = null;
+	private boolean isEditorInterfaceEnabled = false;
+
+	public LinkedList<DroolsSentence> getEditorInterface(){
+		return editorInterface;
+	}
+
+	public void enableEditorInterface(){
+		isEditorInterfaceEnabled = true;
+	}
+
+	public void disableEditorInterface(){
+		isEditorInterfaceEnabled = false;
+	}
+
+	private void beginSentence(DroolsSentenceType sentenceType){
+		if (isEditorInterfaceEnabled) {
+			if (null == editorInterface) {
+				editorInterface = new LinkedList<DroolsSentence>();
+			}
+			DroolsSentence sentence = new DroolsSentence();
+			sentence.setType(sentenceType);
+			editorInterface.add(sentence);
+		}
+	}
+
+	private DroolsSentence getActiveSentence(){
+		return editorInterface.getLast();
+	}
+
+	private void emit(List tokens, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && tokens != null) {		
+			for (Object activeObject : tokens){
+				emit((Token) activeObject, editorType);
+			}
+		}
+	}
+
+	private void emit(Token token, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && token != null) {
+			((DroolsToken)token).setEditorType(editorType);
+			getActiveSentence().addContent((DroolsToken) token);
+		}
+	}
+
+	private void emit(boolean forceEmit, int activeContext){
+		if (isEditorInterfaceEnabled) {
+				getActiveSentence().addContent(activeContext);
+		}
+	}
+	
+	private void emit(int activeContext){
+		if (isEditorInterfaceEnabled) {
+			emit(false, activeContext);
+		}
+	}
+
+	private DroolsToken getLastTokenOnList(LinkedList list){
+		DroolsToken lastToken = null;
+		for (Object object : list) {
+			if (object instanceof DroolsToken) {
+				lastToken = (DroolsToken) object;
+			}
+		}
+		return lastToken;
+	}
+
+	private int getLastIntegerValue(LinkedList list) {
+		int lastIntergerValue = -1;
+		for (Object object : list) {
+			if (object instanceof Integer) {
+				lastIntergerValue = (Integer) object;
+			}
+		}
+		return lastIntergerValue;
+	}
+
+	private String retrieveLT(int LTNumber) {
+      		if (null == input)
+			return null;
+		if (null == input.LT(LTNumber))
+			return null;
+		if (null == input.LT(LTNumber).getText())
+			return null;
+	
+		return input.LT(LTNumber).getText();
+	}
+
+	private boolean validateLT(int LTNumber, String text) {
+		String text2Validate = retrieveLT( LTNumber );
+		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
+	}
+	
+	private boolean isPluggableEvaluator( int offset, boolean negated ) {
+		String text2Validate = retrieveLT( offset );
+	        return text2Validate == null ? false : DroolsSoftKeywords.isOperator( text2Validate, negated );
+	}
+	
+	private boolean isPluggableEvaluator( boolean negated ) {
+	        return isPluggableEvaluator( 1, negated );
+	}
+	
+	private boolean validateIdentifierKey(String text) {
+		return validateLT(1, text);
+	}
+	
+	void checkTrailingSemicolon(String text, Token token) {
+		if (text.trim().endsWith(";")) {
+			errors.add(errorMessageFactory
+					.createTrailingSemicolonException(((DroolsToken) token)
+							.getLine(), ((DroolsToken) token)
+							.getCharPositionInLine(), ((DroolsToken) token)
+							.getStopIndex()));
+		}
+	}
+	
+	private boolean validateNotWithBinding(){
+		if (input.LA(1) == ID && input.LA(2) == ID && input.LA(3) == COLON){
+			return true;
+		}
+		return false;
+	}
+
+	private boolean validateRestr() {
+		int lookahead = 2;
+		int countParen = 1;
+
+		while (true) {
+			if (input.LA(lookahead) == COMMA) {
+				break;
+			} else if (input.LA(lookahead) == LEFT_PAREN) {
+				countParen++;
+			} else if (input.LA(lookahead) == RIGHT_PAREN) {
+				countParen--;
+			} else if (input.LA(lookahead) == EOF) {
+				break;
+			}
+			if (countParen == 0){
+				break;
+			}
+			lookahead++;
+		}
+		
+		boolean returnValue = false;
+		int activeIndex = input.index();
+		lookaheadTest = true;
+		try {
+			input.seek(input.LT(2).getTokenIndex());
+			constraint_expression();
+			returnValue = true;
+		} catch (RecognitionException e) {
+		} finally{
+			input.seek(activeIndex);
+		}
+		lookaheadTest = false;
+
+		return returnValue;
+	}
+	
+	private String safeSubstring(String text, int start, int end) {
+		return text.substring(Math.min(start, text.length()), Math.min(Math
+				.max(start, end), text.length()));
+	}
+	
+	public void reportError(RecognitionException ex) {
+		// if we've already reported an error and have not matched a token
+		// yet successfully, don't report any errors.
+		if (state.errorRecovery) {
+			return;
+		}
+		state.errorRecovery = true;
+	
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+	
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+	
+	/** Return a list of pretty strings summarising the errors */
+	public List<String> getErrorMessages() {
+		List<String> messages = new ArrayList<String>(errors.size());
+	
+		for (DroolsParserException activeException : errors) {
+			messages.add(activeException.getMessage());
+		}
+	
+		return messages;
+	}
+	
+	/** return true if any parser errors were accumulated */
+	public boolean hasErrors() {
+		return !errors.isEmpty();
+	}
+
+	/**
+	 * Method that adds a paraphrase type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 */
+	private void pushParaphrases(DroolsParaphraseTypes type) {
+		Map<DroolsParaphraseTypes, String> activeMap = new HashMap<DroolsParaphraseTypes, String>();
+		activeMap.put(type, "");
+		paraphrases.push(activeMap);
+	}
+
+	/**
+	 * Method that sets paraphrase value for a type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 * @param value
+	 *            paraphrase value
+	 */
+	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
+		paraphrases.peek().put(type, value);
+	}
+
+	/**
+	 * Helper method that creates a string from a token list.
+	 * 
+	 * @param tokenList
+	 *            token list
+	 * @return string
+	 */
+	private String buildStringFromTokens(List<Token> tokenList) {
+		StringBuilder sb = new StringBuilder();
+		if (null != tokenList) {
+			for (Token activeToken : tokenList) {
+				if (null != activeToken) {
+					sb.append(activeToken.getText());
+				}
+			}
+		}
+		return sb.toString();
+	}
+	
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+ 
+compilation_unit
+	:	package_statement?
+		statement*
+		EOF
+		-> ^(VT_COMPILATION_UNIT package_statement? statement*) 
+	;
+	catch [ RecognitionException e ] {
+		reportError( e );
+	}
+	catch [ RewriteEmptyStreamException e ] {
+	}
+finally {
+	if (isEditorInterfaceEnabled && retval.tree == null) {
+		retval.tree = root_0;
+		root_0 = (Object) adaptor.nil();
+		Object root_1 = (Object) adaptor.nil();
+		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+		if (stream_package_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_package_statement.nextTree());
+		}
+		while (stream_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_statement.nextTree());
+		}
+		adaptor.addChild(root_0, root_1);
+		retval.stop = input.LT(-1);
+		retval.tree = (Object) adaptor.rulePostProcessing(root_0);
+		adaptor.setTokenBoundaries(retval.tree, retval.start,
+				retval.stop);
+	}
+	if (isEditorInterfaceEnabled && hasErrors()) {
+		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+			if (!(childNode instanceof CommonErrorNode)) {
+				rootNode.addChild(childNode);
+			}
+		}
+		retval.tree = rootNode; 
+	}
+}
+
+package_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); }
+ at after { paraphrases.pop(); }
+	:	package_key
+		package_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(package_key package_id)
+	;
+
+package_id
+	:	id+=ID ( id+=DOT id+=ID )*
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens($id));	}
+		-> ^(VT_PACKAGE_ID ID+)
+	;
+
+statement
+options{
+k = 2;
+}	:	rule_attribute
+	|{(validateLT(1, "import") && validateLT(2, "function") )}?=> function_import_statement 
+	|	import_statement 
+	|	global 
+	|	function
+	|	{(validateLT(1, DroolsSoftKeywords.TEMPLATE))}?=> template
+	|	{(validateLT(1, DroolsSoftKeywords.DECLARE))}?=> type_declaration
+	|	rule
+	|	query
+	;
+
+import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  }
+ at after { paraphrases.pop(); }
+	:	import_key import_name[DroolsParaphraseTypes.IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(import_key import_name)
+	;
+
+function_import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); }
+ at after { paraphrases.pop(); }
+	:	imp=import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}		
+		-> ^(VT_FUNCTION_IMPORT[$imp.start] function_key import_name)
+	;
+
+import_name [DroolsParaphraseTypes importType]
+	:	id+=ID ( id+=DOT id+=ID )* id+=DOT_STAR?
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue($importType, buildStringFromTokens($id));	}
+		-> ^(VT_IMPORT_ID ID+ DOT_STAR?)
+	;
+
+global
+ at init  { pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); }
+ at after { paraphrases.pop(); }
+	:	global_key data_type global_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(global_key data_type global_id)
+	;
+
+global_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, $id.text);	}
+		-> VT_GLOBAL_ID[$id]
+	;
+
+function
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  }
+ at after { paraphrases.pop(); }
+	:	function_key data_type? function_id parameters curly_chunk
+		-> ^(function_key data_type? function_id parameters curly_chunk)
+	;
+
+function_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, $id.text);	}
+		-> VT_FUNCTION_ID[$id]
+	;
+
+query
+ at init  { pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); }
+ at after { paraphrases.pop(); }
+	:	query_key query_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		parameters? 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block 
+		end=end_key SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(query_key query_id parameters? normal_lhs_block end_key)
+	;
+
+query_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	;
+
+parameters
+	:	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			( param_definition (COMMA {	emit($COMMA, DroolsEditorType.SYMBOL);	} param_definition)* )?
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_PARAM_LIST param_definition* RIGHT_PAREN)
+	;
+
+param_definition
+	:	data_type? argument
+	;
+
+argument
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		dimension_definition*
+	;
+
+type_declaration
+ at init  { pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); }
+ at after { paraphrases.pop(); }
+	:	declare_key  type_declare_id
+		decl_metadata*
+		decl_field*
+		end_key
+		-> ^(declare_key type_declare_id decl_metadata* decl_field* end_key)
+	;
+
+type_declare_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, $id.text);	} -> VT_TYPE_DECLARE_ID[$id]
+	;
+
+decl_metadata
+	:	AT 
+	{	emit($AT, DroolsEditorType.SYMBOL);	}
+		ID
+	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk?
+		-> ^(AT ID paren_chunk?)
+	;
+
+decl_field
+	:	ID	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		decl_field_initialization? 
+		COLON	{	emit($COLON, DroolsEditorType.SYMBOL);	}
+		data_type
+		decl_metadata*
+		-> ^(ID decl_field_initialization? data_type decl_metadata*)
+	;
+
+decl_field_initialization
+	:	EQUALS	{	emit($EQUALS, DroolsEditorType.SYMBOL);	}
+		paren_chunk
+	-> ^(EQUALS paren_chunk)
+	;
+
+template
+ at init  { pushParaphrases(DroolsParaphraseTypes.TEMPLATE); }
+ at after { paraphrases.pop(); }
+	:	
+	{	beginSentence(DroolsSentenceType.TEMPLATE);	}
+		template_key template_id 
+		semi1=SEMICOLON?
+	{	emit($semi1, DroolsEditorType.SYMBOL);	}
+		template_slot+
+		end=end_key semi2=SEMICOLON?
+	{	emit($semi2, DroolsEditorType.SYMBOL);	}
+		-> ^(template_key template_id template_slot+ end_key)
+	;
+
+template_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	;
+
+template_slot
+	:	 data_type slot_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_SLOT data_type slot_id)
+	;
+
+slot_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> VT_SLOT_ID[$id]
+	;
+
+rule
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); }
+ at after { paraphrases.pop(); isFailed = false; }
+	:
+	{	beginSentence(DroolsSentenceType.RULE);	}
+		rule_key rule_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		(extend_key rule_id)? decl_metadata* rule_attributes? when_part? rhs_chunk
+		-> ^(rule_key rule_id ^(extend_key rule_id)? decl_metadata* rule_attributes? when_part? rhs_chunk)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			input.LA(5) == MISC && input.LA(6) == ID && 
+			validateLT(1, DroolsSoftKeywords.LOCK) && validateLT(3, DroolsSoftKeywords.ON) &&
+			validateLT(5, DroolsSoftKeywords.ACTIVE)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(input.LT(4), DroolsEditorType.KEYWORD);
+			emit(input.LT(5), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(4) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			(	(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EXPIRES)) ||
+				(validateLT(1, DroolsSoftKeywords.NO) && validateLT(3, DroolsSoftKeywords.LOOP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EFFECTIVE)) ||
+				(validateLT(1, DroolsSoftKeywords.AUTO) && validateLT(3, DroolsSoftKeywords.FOCUS)) ||
+				(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.RULEFLOW) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.AGENDA) && validateLT(3, DroolsSoftKeywords.GROUP))	)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(2) == EOF && input.LA(1) == ID && 
+				(validateLT(1, DroolsSoftKeywords.DIALECT) || validateLT(1, DroolsSoftKeywords.ENABLED) ||
+				 validateLT(1, DroolsSoftKeywords.SALIENCE) || validateLT(1, DroolsSoftKeywords.DURATION))){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+		}
+	}
+}
+
+when_part
+	: 	WHEN {	emit($WHEN, DroolsEditorType.KEYWORD);	}
+		COLON? {	emit($COLON, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block
+	->	WHEN normal_lhs_block
+	;
+
+rule_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	;
+
+rule_attributes
+	:	( attributes_key COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} )? 
+		rule_attribute ( COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} attr=rule_attribute )*
+		-> ^(VT_RULE_ATTRIBUTES attributes_key? rule_attribute+)
+	;
+
+rule_attribute
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); }
+ at after { paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
+	:	salience 
+	|	no_loop
+	|	agenda_group  
+	|	duration  
+	|	activation_group 
+	|	auto_focus 
+	|	date_effective 
+	|	date_expires 
+	|	enabled 
+	|	ruleflow_group 
+	|	lock_on_active
+	|	dialect 
+	| prior
+	| entail_mode
+	| filter
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(2) == EOF && input.LA(1) == ID){
+			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+			input.consume();
+		}
+	}
+}
+date_effective
+	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+date_expires
+	:	date_expires_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+	
+enabled
+	:	enabled_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	    | paren_chunk 
+	    )
+	;	
+
+salience
+	:	salience_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	}
+		( INT 	{	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+		| paren_chunk
+		)
+	;
+
+no_loop
+	:	no_loop_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+
+auto_focus
+	:	auto_focus_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;	
+	
+activation_group
+	:	activation_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+ruleflow_group
+	:	ruleflow_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+agenda_group
+	:	agenda_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+duration
+	:	duration_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( INT {	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+	    | paren_chunk
+	    )
+	;	
+	
+dialect
+	:	dialect_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;			
+	
+lock_on_active
+	:	lock_on_active_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+	
+prior
+  : prior_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } paren_chunk  
+  ;
+  
+entail_mode
+  : entail_mode_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } STRING
+  { emit($STRING, DroolsEditorType.STRING_CONST ); }
+  ;  	
+  
+filter
+  : filter_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } STRING
+  { emit($STRING, DroolsEditorType.STRING_CONST ); }
+  ;
+
+
+
+
+
+normal_lhs_block
+	:	lhs*
+	->	^(VT_AND_IMPLICIT lhs*)
+	;
+
+lhs	:	lhs_or
+	;
+
+lhs_or
+ at init{
+	Token orToken = null;
+}	:	(LEFT_PAREN or_key square_chunk?)=> 
+		LEFT_PAREN  {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			or=or_key	
+			square_chunk?		
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_and+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} // PREFIX 
+		-> ^(VT_OR_PREFIX[$or.start] square_chunk? lhs_and+ RIGHT_PAREN)
+	
+	
+	| (LEFT_PAREN equiv_key square_chunk?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      equiv=equiv_key
+      square_chunk?
+  { emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  }
+      lhs_and
+      lhs_and      
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
+    -> ^(VT_EQUIV[$equiv.start] square_chunk? lhs_and lhs_and RIGHT_PAREN)
+	
+	| (LEFT_PAREN xor_key square_chunk?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      xor=xor_key
+      square_chunk?
+  { emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  }
+      lhs_and
+      lhs_and      
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
+    -> ^(VT_XOR[$xor.start] square_chunk? lhs_and lhs_and RIGHT_PAREN)
+	
+	
+	|	(lhs_and -> lhs_and) 
+		( (or_key square_chunk? |DOUBLE_PIPE)=> (value=or_key square_chunk? {orToken = $value.start;} 
+		  |pipe=DOUBLE_PIPE {orToken = $pipe; emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);}) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_and 
+		-> ^(VT_OR_INFIX[orToken] square_chunk? $lhs_or lhs_and))*
+		
+	|  hedge lhs_or
+	   -> ^(hedge lhs_or)	
+									
+	;
+
+
+hedge
+ at init{
+  Token type = null;
+}
+  : value=very_key {type = $value.start; } -> VT_HEDGE[type]
+  ;
+
+
+lhs_and
+ at init{
+	Token andToken = null;
+}	:	(LEFT_PAREN and_key square_chunk?)=> 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			and=and_key
+			square_chunk?
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_unary+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}  // PREFIX
+		-> ^(VT_AND_PREFIX[$and.start] square_chunk? lhs_unary+ RIGHT_PAREN)
+		
+	|	
+	
+	(lhs_unary -> lhs_unary) 
+		( (and_key square_chunk? |DOUBLE_AMPER)=> 
+		( value=and_key square_chunk? {andToken = $value.start; } 
+		  |amper=DOUBLE_AMPER {andToken = $amper; emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);}
+		) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_unary 
+		-> ^(VT_AND_INFIX[andToken] square_chunk? $lhs_and  lhs_unary ) )*			  
+	;
+
+lhs_unary
+	:	(	lhs_exist
+		|{validateNotWithBinding()}?=>	lhs_not_binding
+		|	lhs_not
+		|	lhs_eval
+		|	lhs_forall
+		| lhs_forany
+		|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	}  
+				lhs_or 
+			RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		|	pattern_source
+		)
+		((SEMICOLON)=> SEMICOLON! {	emit($SEMICOLON, DroolsEditorType.SYMBOL);	})?
+	;
+
+lhs_exist
+	:	exists_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	}
+	        ( (LEFT_PAREN (or_key|and_key))=> lhs_or //prevent "((" 
+		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	        | lhs_pattern
+	        )
+	        -> ^(exists_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_not_binding
+	:	not_key fact_binding
+	-> ^(not_key ^(VT_PATTERN fact_binding))
+	;
+
+lhs_not	:	not_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	}
+		( (LEFT_PAREN (or_key|and_key))=> {	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} lhs_or //prevent "((" 
+		|	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} 
+				lhs_or 
+			RIGHT_PAREN  {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		| 	lhs_pattern )
+	        -> ^(not_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_eval
+	:	ev=eval_key
+	{	emit(Location.LOCATION_LHS_INSIDE_EVAL);	}
+		pc=paren_chunk
+	{	if (((DroolsTree) $pc.tree).getText() != null){
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	            		
+		}
+	}
+	{	String body = safeSubstring( $pc.text, 1, $pc.text.length()-1 );
+		checkTrailingSemicolon( body, $ev.start );	}
+		-> ^(eval_key paren_chunk)
+	;
+
+lhs_forall
+	:	forall_key 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			pattern_source+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(forall_key pattern_source+ RIGHT_PAREN)
+	;
+	
+	
+
+lhs_forany
+  : forany_key 
+    LEFT_PAREN {  emit($LEFT_PAREN, DroolsEditorType.SYMBOL); } 
+      lhs_or  
+      (
+      (subject_key s=lhs_or)?
+      (weight_key w=lhs_or)?
+      )
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  }
+    -> ^(forany_key lhs_or (subject_key $s)? (weight_key $w)? RIGHT_PAREN)
+  ;
+	
+	
+pattern_source
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	
+	  lhs_pattern
+		over_clause?
+		(
+			FROM^
+		{	emit($FROM, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_LHS_FROM);	}
+		        (  accumulate_statement
+		          | collect_statement 
+		          | entrypoint_statement
+		          | from_source
+		        )
+		)?
+	;
+finally {
+	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_ACCUMULATE);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == COLLECT) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_COLLECT);
+	}
+}
+
+over_clause
+	:	OVER^ {	emit($OVER, DroolsEditorType.KEYWORD);	} over_elements 
+			(COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} over_elements)*
+	;
+
+over_elements
+	:	id1=ID {	emit($id1, DroolsEditorType.IDENTIFIER);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		id2=ID {	emit($id2, DroolsEditorType.IDENTIFIER);	} 
+		paren_chunk
+	-> ^(VT_BEHAVIOR $id1 $id2 paren_chunk)
+	;
+
+accumulate_statement
+	:	ACCUMULATE {	emit($ACCUMULATE, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} 
+		(	accumulate_init_clause
+		|	accumulate_id_clause
+		)
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		-> ^(ACCUMULATE lhs_or accumulate_init_clause? accumulate_id_clause? RIGHT_PAREN)
+	;
+
+
+accumulate_init_clause
+ at init  { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	init_key 
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	}
+		pc1=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] cm1=COMMA? {	emit($cm1, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
+		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
+	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
+
+	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+            			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+            			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
+		}	
+	}
+		res1=result_key {	emit($res1.start, DroolsEditorType.KEYWORD);	} pc4=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+	-> ^(VT_ACCUMULATE_INIT_CLAUSE ^(init_key $pc1) ^(action_key $pc2) ^(reverse_key $pc3)? ^(result_key $pc4))
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.RESULT)) {
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		if (input.LA(1) == LEFT_PAREN){
+			input.consume();
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
+		}
+	}
+}
+
+accumulate_paren_chunk[int locationType]
+ at init{
+	String text = "";
+}	:	pc=accumulate_paren_chunk_data[false,$locationType] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+accumulate_paren_chunk_data[boolean isRecursive, int locationType]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+				emit($locationType);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | accumulate_paren_chunk_data[true,-1] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+accumulate_id_clause
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk
+	-> ^(VT_ACCUMULATE_ID_CLAUSE ID paren_chunk)
+	;
+
+collect_statement
+	:	COLLECT {	emit($COLLECT, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			pattern_source 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(COLLECT pattern_source RIGHT_PAREN)
+	;
+
+entrypoint_statement
+	:	entry_point_key 
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		entrypoint_id
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(entry_point_key entrypoint_id)
+	;
+
+entrypoint_id
+	: 	value=ID {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	| 	value=STRING {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	;
+
+from_source
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		( (LEFT_PAREN)=> args=paren_chunk )?
+		expression_chain?
+	{	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		} else if ( input.LA(1) != EOF ) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	->	^(VT_FROM_SOURCE ID paren_chunk? expression_chain?)
+	;
+	
+expression_chain
+	:
+	 DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} 
+	 ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+	  (
+	    {input.LA(1) == LEFT_PAREN}? paren_chunk
+	    |
+	    square_chunk
+	  )?
+	  expression_chain?
+	  -> ^(VT_EXPRESSION_CHAIN[$DOT] ID square_chunk? paren_chunk? expression_chain?)
+	;
+
+	
+lhs_pattern
+  : fact_binding cut_key? -> ^(VT_PATTERN fact_binding) //^(VT_CUT cut_key)?
+  | fact cut_key? -> ^(VT_PATTERN fact) //^(VT_CUT cut_key)?     
+  ;
+	
+
+	
+
+  
+fact_binding
+ 	:	label
+		( fact
+ 		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+ 			fact_binding_expression 
+ 		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+ 		)
+ 	-> ^(VT_FACT_BINDING label fact? fact_binding_expression? RIGHT_PAREN?)
+	;
+
+
+
+
+fact_binding_expression
+ at init{
+	Token orToken = null;
+}	:	(fact -> fact) ( (value=or_key {orToken = $value.start;}|pipe=DOUBLE_PIPE {orToken = $pipe;}) fact 
+		-> ^(VT_FACT_OR[orToken] $fact_binding_expression fact) )*
+	;
+
+fact
+ at init  { boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); }
+ at after { paraphrases.pop();	}
+	:	pattern_type 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	}
+			constraints? 
+		RIGHT_PAREN {	isFailedOnConstraints = false;	}
+		
+		
+		
+		   
+	{	if ($RIGHT_PAREN.text.equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+			emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	->	^(VT_FACT pattern_type constraints?  RIGHT_PAREN)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
+		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+
+  
+constr_param_set
+ :   
+  LESS
+    constr_param+
+  GREATER
+  ;
+
+constr_param
+  :
+    c_param_id
+    | c_param_type
+    | c_param_args
+    | c_param_cut
+    | c_param_prior  
+  ;
+
+
+c_param_id
+  :
+    id_key
+    EQUALS
+    id=STRING
+    -> ^(VT_CONSTRID id)
+  ;
+
+c_param_type
+  :
+    type_key
+    EQUALS
+    type=STRING
+    -> ^(VT_TYPE type)
+  ;  
+
+c_param_cut
+  :
+    cut_key
+    EQUALS
+    kut=STRING
+    -> ^(VT_CUT kut)
+  ;
+
+c_param_args
+  :
+    params_key
+    EQUALS
+    pms=STRING
+    -> ^(VT_ARGS pms)
+  ;
+  
+c_param_prior
+  :
+    prior_key
+    EQUALS
+    pri=STRING
+    -> ^(VT_PRIOR pri)
+  ;  
+
+constraints
+	:	constraint ( COMMA! 
+	{	emit($COMMA, DroolsEditorType.SYMBOL);
+		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	} constraint )*
+	;
+
+constraint
+	:	or_constr
+	;
+
+or_constr
+	:		          
+     or_constr_config
+          
+        (DOUBLE_PIPE^                        
+         and_constr
+        )*
+        
+	;
+	
+or_constr_config
+  :     
+    (and_constr SINGLE_PIPE) =>
+      and_constr
+         SINGLE_PIPE
+           square_chunk?
+           constr_identifier? 
+           //cut?             
+           and_constr
+      -> ^(SINGLE_PIPE square_chunk? ^(VT_CONSTRID constr_identifier)? and_constr and_constr)
+    |
+    and_constr      
+  ;   	
+
+and_constr
+
+	:	 	 	  
+          and_constr_config
+          
+          (DOUBLE_AMPER^                         
+           unary_constr
+          )*
+                
+           
+	;
+	
+and_constr_config
+  :     
+    (unary_constr SINGLE_AMPER) =>
+      unary_constr
+         SINGLE_AMPER
+           square_chunk?
+           constr_identifier?
+           //cut?                 
+           unary_constr           
+      -> ^(SINGLE_AMPER square_chunk?  ^(VT_CONSTRID constr_identifier)? unary_constr unary_constr)
+    |
+    unary_constr      
+  ;        
+      
+	
+
+unary_constr
+options { k=2; }
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	eval_key^ paren_chunk
+	|	field_constraint
+	| 	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}  
+			or_constr 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS)
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}
+}
+
+field_constraint
+ at init{
+	boolean isArrow = false;
+}	:	label accessor_path 
+		( or_restr_connective | arw=ARROW {	emit($ARROW, DroolsEditorType.SYMBOL);	} paren_chunk {isArrow = true;})?
+		cut_key?
+		-> {isArrow}? ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path)) ^(VK_EVAL[$arw] paren_chunk)?
+		-> ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path or_restr_connective? ^(VT_CUT cut_key)?))
+	|	accessor_path or_restr_connective cut_key?
+		-> ^(VT_FIELD accessor_path or_restr_connective ^(VT_CUT cut_key)?)
+	;
+
+/*
+cut
+  : cut_key
+  -> ^(VT_CUT cut_key)
+  ;
+  */
+
+label
+	:	value=ID {	emit($ID, DroolsEditorType.IDENTIFIER_VARIABLE);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		-> VT_LABEL[$value]
+	;
+
+or_restr_connective
+	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^  
+	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}   and_restr_connective )* 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+and_restr_connective
+	:	constraint_expression ({(validateRestr())}?=> DOUBLE_AMPER^ 
+	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);	} constraint_expression )*
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+constraint_expression
+options{
+k=3;
+}	:	compound_operator
+	|	op=simple_operator ans=constr_identifier? val=expression_value
+	 -> ^(simple_operator expression_value) ^(VT_CONSTRID constr_identifier)? 
+	| custom_operator ans=constr_identifier? expression_value?
+	 -> ^(custom_operator expression_value?) ^(VT_CONSTRID constr_identifier)?
+	|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			or_restr_connective 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+finally {
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID && 
+				input.LA(2) == ID && validateLT(1, DroolsSoftKeywords.NOT)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.KEYWORD);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF  && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.IN)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.SYMBOL);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS){
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_END);
+		}
+	}
+}
+
+simple_operator
+ at init {
+  if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
+}
+	:	
+	   ( 
+		    EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+		    { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+		    } 		    		   
+        //expression_value
+        
+        
+	   |	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+	      
+	      }
+        //expression_value
+        
+	   |	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value 
+	   
+	   |	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   	  
+	   )	   	 	      	
+	;
+
+custom_operator
+  :     not_key?
+        approx_symb? operator_key^
+        square_chunk? 
+        //ans=constr_identifier?
+        { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+        
+        }
+        //expression_value?
+
+  ;
+  
+  
+//Simple Syntax Sugar
+compound_operator 
+ at init { if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); }
+	:	
+	( in_key^ | not_key in_key^ ) 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
+		LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			expression_value ( COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} expression_value )* 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == DOUBLE_PIPE) {
+		emit(input.LT(1), DroolsEditorType.SYMBOL);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}	}
+	
+constr_identifier
+  : AT id=ID
+    -> VK_AT[$id]       
+  ;	
+
+operator_key
+	:      {(isPluggableEvaluator(false))}? => id=ID
+	       { emit($id, DroolsEditorType.IDENTIFIER); }
+	       -> VK_OPERATOR[$id]
+	;
+
+neg_operator_key
+	:      {(isPluggableEvaluator(true))}? => id=ID 
+	       { emit($id, DroolsEditorType.IDENTIFIER); } 
+	       -> VK_OPERATOR[$id]
+	;
+
+expression_value
+	:	(accessor_path
+	|	literal_constraint 
+	|	paren_chunk)
+	{	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF) {
+		if (input.LA(1) == DOUBLE_PIPE) {
+			emit(input.LT(1), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+literal_constraint
+	:	STRING {	emit($STRING, DroolsEditorType.STRING_CONST);	}
+	|	INT {	emit($INT, DroolsEditorType.NUMERIC_CONST);	}
+	|	FLOAT {	emit($FLOAT, DroolsEditorType.NUMERIC_CONST);	}
+	|	BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST);	}
+	|	NULL {	emit($NULL, DroolsEditorType.NULL_CONST);	}
+	;
+
+pattern_type
+	:	id+=ID ( id+=DOT id+=ID )* 
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens($id));	} 
+	    dimension_definition*
+		-> ^(VT_PATTERN_TYPE ID+ dimension_definition*)
+	;
+
+data_type
+	:	id+=ID ( id+=DOT id+=ID )* dimension_definition*
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> ^(VT_DATA_TYPE ID+ dimension_definition*)
+	;
+
+dimension_definition
+	:	LEFT_SQUARE {	emit($LEFT_SQUARE, DroolsEditorType.SYMBOL);	} 
+		RIGHT_SQUARE {	emit($RIGHT_SQUARE, DroolsEditorType.SYMBOL);	} 
+	;
+
+accessor_path
+	:	accessor_element ( DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} accessor_element )*
+	-> ^(VT_ACCESSOR_PATH accessor_element+)
+	;
+
+accessor_element
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		square_chunk*
+	-> ^(VT_ACCESSOR_ELEMENT ID square_chunk*)
+	;
+
+rhs_chunk
+ at init{
+	String text = "";
+}	:	rc=rhs_chunk_data {text = $rc.text;}
+	-> VT_RHS_CHUNK[$rc.start,text]
+	;
+
+rhs_chunk_data
+	:	THEN 
+	{	if ($THEN.text.equalsIgnoreCase("then")){
+			emit($THEN, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RHS);
+		}	}
+			not_end_key* 
+		end_key 
+		SEMICOLON? {	emit($SEMICOLON, DroolsEditorType.KEYWORD);	}
+	;
+
+curly_chunk
+ at init{
+	String text = "";
+}	:	cc=curly_chunk_data[false] {text = $cc.text;}
+	-> VT_CURLY_CHUNK[$cc.start,text]
+	;
+
+curly_chunk_data[boolean isRecursive]
+	:	lc1=LEFT_CURLY
+		{	if (!isRecursive) {
+				emit($lc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_CURLY | RIGHT_CURLY ) { emit($any, DroolsEditorType.CODE_CHUNK); } | curly_chunk_data[true] )* 
+		rc1=RIGHT_CURLY
+		{	if (!isRecursive) {
+				emit($rc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+paren_chunk
+ at init{
+	String text = "";
+}	:	pc=paren_chunk_data[false] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+paren_chunk_data[boolean isRecursive]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | paren_chunk_data[true] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+
+
+
+
+
+
+square_chunk
+ at init{
+	String text = "";
+}	:	sc=square_chunk_data[false] {text = $sc.text;}
+	-> VT_SQUARE_CHUNK[$sc.start,text]
+	;
+
+square_chunk_data[boolean isRecursive]
+	:	ls1=LEFT_SQUARE
+		{	if (!isRecursive) {
+				emit($ls1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($ls1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) { emit($any, DroolsEditorType.CODE_CHUNK); }| square_chunk_data[true] )* 
+		rs1=RIGHT_SQUARE
+		{	if (!isRecursive) {
+				emit($rs1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rs1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+	;
+
+lock_on_active_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))}?=>  id1=ID mis1=MISC id2=ID mis2=MISC id3=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);
+		emit($mis2, DroolsEditorType.KEYWORD);
+		emit($id3, DroolsEditorType.KEYWORD);	}
+		->	VK_LOCK_ON_ACTIVE[$start, text]
+	;
+
+date_effective_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EFFECTIVE[$start, text]
+	;
+ 
+date_expires_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EXPIRES[$start, text]
+	;
+
+no_loop_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_NO_LOOP[$start, text]
+	;
+
+auto_focus_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AUTO_FOCUS[$start, text]
+	;
+
+activation_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTIVATION_GROUP[$start, text]
+	;
+
+agenda_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AGENDA_GROUP[$start, text]
+	;
+
+ruleflow_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_RULEFLOW_GROUP[$start, text]
+	;
+
+entry_point_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ENTRY_POINT[$start, text]
+	;
+
+duration_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DURATION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DURATION[$id]
+	;
+
+package_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_PACKAGE[$id]
+	;
+
+import_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IMPORT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IMPORT[$id]
+	;
+
+dialect_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DIALECT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DIALECT[$id]
+	;
+
+prior_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.PRIOR))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_PRIOR[$id]
+  ;
+
+entail_mode_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.ENTAIL))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_ENTAIL[$id]
+  ;
+
+filter_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.FILTER))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_FILTER[$id]
+  ;
+
+
+salience_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_SALIENCE[$id]
+	;
+
+enabled_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ENABLED))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ENABLED[$id]
+	;
+
+attributes_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ATTRIBUTES[$id]
+	;
+
+rule_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RULE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RULE[$id]
+	;
+
+extend_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXTEND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXTEND[$id]
+	;
+
+template_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_TEMPLATE[$id]
+	;
+
+query_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.QUERY))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_QUERY[$id]
+	;
+
+declare_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DECLARE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DECLARE[$id]
+	;
+
+function_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FUNCTION[$id]
+	;
+
+global_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_GLOBAL[$id]
+	;
+
+eval_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EVAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EVAL[$id]
+	;
+
+not_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.NOT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_NOT[$id]
+	;
+
+in_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IN))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IN[$id]
+	;
+
+or_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.OR))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_OR[$id]
+	;
+
+and_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.AND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_AND[$id]	
+	;
+	
+equiv_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.EQUIV))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_EQUIV[$id]
+  ;	
+  
+xor_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.XOR))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_XOR[$id]
+  ;  
+	
+
+exists_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXISTS))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXISTS[$id]
+	;
+
+forall_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FORALL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FORALL[$id]
+	;
+	
+forany_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.FORANY))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_FORANY[$id]
+  ;	
+
+action_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTION[$id]
+	;
+
+reverse_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.REVERSE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_REVERSE[$id]
+	;
+
+result_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RESULT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RESULT[$id]
+	;
+
+end_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_END[$id]
+	;
+
+not_end_key
+	:	{!(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  any=.
+	{	emit($any, DroolsEditorType.CODE_CHUNK);	}
+	;
+
+init_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.INIT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_INIT[$id]
+	;
+	
+	
+subject_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.SUBJECT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_SUBJECT[$id]
+  ;
+  
+  
+weight_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.WEIGHT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_WEIGHT[$id]
+  ;  	
+	
+	
+very_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.VERY))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_VERY[$id]
+  ;
+  
+  
+id_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.CID))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_CONSTRID[$id]
+  ;          	
+  
+cut_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.CUT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_CUT[$id]
+  ;
+  
+type_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.TYPE))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_TYPE[$id]
+  ;  
+
+params_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.PARAMS))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_PARAMS[$id]
+  ;  
+  
+  
+  
+	
+	
+
+  
+//constr_id_key
+//  : AT -> VK_AT
+//  ;  
+	
+approx_symb
+  : APPROX -> VK_APPROX
+  ;	
+  
+	
+	
+
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                |	EOL
+                )+
+                { $channel=HIDDEN; }
+        ;
+
+fragment
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;
+        
+INT	
+	:	('-')?('0'..'9')+
+		;
+
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+
+STRING
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+    :   '\\' ('b'|'B'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.'|'o'|
+              'x'|'a'|'e'|'c'|'d'|'D'|'s'|'S'|'w'|'W'|'p'|'A'|
+              'G'|'Z'|'z'|'Q'|'E'|'*'|'['|']'|'('|')'|'$'|'^'|
+              '{'|'}'|'?'|'+'|'-'|'&'|'|')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+BOOL
+	:	('true'|'false') 
+	;	
+
+ACCUMULATE
+	:	'accumulate'
+	;
+
+COLLECT
+	:	'collect'
+	;
+
+FROM
+	:	'from'
+	;
+
+NULL	
+	:	'null'
+	;
+
+OVER
+	:	'over'
+	;
+
+THEN
+	:	'then'
+	;
+
+WHEN
+	:	'when'
+	;
+
+
+APPROX
+  : '~'
+  ;
+
+CUT 
+  : '!'
+  ;
+  
+
+AT	:	'@'
+	;
+
+EQUALS
+	:	'='
+	;
+
+SEMICOLON
+	:	';'
+	;
+
+DOT_STAR
+	:	'.*'
+	;
+
+COLON
+	:	':'
+	;
+
+EQUAL
+	:	'=='
+	;
+
+NOT_EQUAL
+	:	'!='
+	;
+
+GREATER
+	:	'>'
+	;
+
+GREATER_EQUAL
+	:	'>='
+	;
+
+LESS
+	:	'<'
+	;
+
+LESS_EQUAL
+	:	'<='
+	;
+
+ARROW
+	:	'->'
+	;
+
+ID	
+	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')*
+	|	'`' ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')+ '`'
+	{	state.text = $text.substring(1, $text.length() - 1);	}
+	;
+
+LEFT_PAREN
+        :	'('
+        ;
+
+RIGHT_PAREN
+        :	')'
+        ;
+        
+LEFT_SQUARE
+        :	'['
+        ;
+
+RIGHT_SQUARE
+        :	']'
+        ;        
+
+LEFT_CURLY
+        :	'{'
+        ;
+
+RIGHT_CURLY
+        :	'}'
+        ;
+        
+COMMA	:	','
+	;
+	
+DOT	:	'.'
+	;	
+	
+DOUBLE_AMPER
+	:	'&&'
+	;
+	
+DOUBLE_PIPE
+	:	'||'
+	;
+	
+SINGLE_AMPER
+  : '&'
+  ;
+  
+SINGLE_PIPE
+  : '|'
+  ;	
+
+SH_STYLE_SINGLE_LINE_COMMENT	
+	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
+                { $channel=HIDDEN; setText("//"+getText().substring(1));}
+	;
+        
+        
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { $channel=HIDDEN; }
+	; 
+
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { $channel=HIDDEN; }
+	;
+
+MISC 	:
+		'$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' 
+	;
+	
+DBL_QUOTE :
+    '"'
+  ;	

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.may14
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.may14	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g.may14	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,2345 @@
+grammar DRL;
+
+options {
+	output=AST;
+}
+
+tokens {
+	VT_COMPILATION_UNIT;
+	VT_FUNCTION_IMPORT;
+
+	VT_FACT;
+	VT_CONSTRAINTS;
+	VT_LABEL;
+
+	VT_QUERY_ID;
+	VT_TEMPLATE_ID;
+	VT_TYPE_DECLARE_ID;
+	VT_RULE_ID;
+	VT_ENTRYPOINT_ID;
+	VT_SLOT_ID;
+	
+	VT_SLOT;
+	VT_RULE_ATTRIBUTES;
+
+	VT_RHS_CHUNK;
+	VT_CURLY_CHUNK;
+	VT_SQUARE_CHUNK;
+	VT_PAREN_CHUNK;
+	VT_BEHAVIOR;
+
+	VT_AND_IMPLICIT;
+	VT_AND_PREFIX;
+	VT_OR_PREFIX;
+	VT_AND_INFIX;
+	VT_OR_INFIX;
+	VT_EQUIV;
+	VT_XOR;
+
+	VT_ACCUMULATE_INIT_CLAUSE;
+	VT_ACCUMULATE_ID_CLAUSE;
+	VT_FROM_SOURCE;
+	VT_EXPRESSION_CHAIN;
+
+	VT_PATTERN;
+	VT_FACT_BINDING;
+	VT_FACT_OR;
+	VT_BIND_FIELD;
+	VT_FIELD;
+
+	VT_ACCESSOR_PATH;
+	VT_ACCESSOR_ELEMENT;
+	
+	VT_DATA_TYPE;
+	VT_PATTERN_TYPE;
+	VT_PACKAGE_ID;
+	VT_IMPORT_ID;
+	VT_GLOBAL_ID;
+	VT_FUNCTION_ID;
+	VT_PARAM_LIST;
+		
+  VT_HEDGE;
+
+  VT_CONSTR_ATTRIBUTES;
+  
+  VT_CONSTRID;  
+  VT_CUT;
+  VT_PRIOR;
+  VT_ARGS;
+  VT_TYPE;
+	
+
+	VK_DATE_EFFECTIVE;
+	VK_DATE_EXPIRES;
+	VK_LOCK_ON_ACTIVE;
+	VK_NO_LOOP;
+	VK_AUTO_FOCUS;
+	VK_ACTIVATION_GROUP;
+	VK_AGENDA_GROUP;
+	VK_RULEFLOW_GROUP;
+	VK_DURATION;
+	VK_DIALECT;
+	VK_SALIENCE;
+	VK_ENABLED;
+	VK_ATTRIBUTES;
+	VK_RULE;
+	VK_EXTEND;
+	VK_IMPORT;
+	VK_PACKAGE;
+	VK_TEMPLATE;
+	VK_QUERY;
+	VK_DECLARE;
+	VK_FUNCTION;
+	VK_GLOBAL;
+	VK_EVAL;
+	VK_ENTRY_POINT;
+	VK_NOT;
+	VK_IN;
+	VK_OR;
+	VK_AND;
+	VK_EQUIV;
+	VK_XOR;
+	VK_EXISTS;
+	VK_FORALL;
+	VK_FORANY;
+	VK_ACTION;
+	VK_REVERSE;
+	VK_RESULT;
+	VK_OPERATOR;
+	VK_END;
+	VK_INIT;
+	
+	VK_SUBJECT;
+	VK_WEIGHT;
+	
+	
+	VK_CUT;
+	
+	VK_APPROX;
+	
+	VK_ENTAIL;
+	VK_PRIOR;
+	VK_FILTER;
+	
+	VK_AT;
+  VK_CONSTRID;
+  
+  VK_ARGS;
+  VK_TYPE;
+}
+
+ at parser::header {
+	package org.drools.lang;
+	
+	import java.util.List;
+	import java.util.LinkedList;
+	import org.drools.compiler.DroolsParserException;
+}
+
+ at lexer::header {
+	package org.drools.lang;
+
+	import org.drools.compiler.DroolsParserException;
+}
+
+
+ at lexer::members {
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
+
+	/** The standard method called to automatically emit a token at the
+	 *  outermost lexical rule.  The token object should point into the
+	 *  char buffer start..stop.  If there is a text override in 'text',
+	 *  use that to set the token's text.  Override this method to emit
+	 *  custom Token objects.
+	 */
+	public Token emit() {
+		Token t = new DroolsToken(input, state.type, state.channel, state.tokenStartCharIndex, getCharIndex()-1);
+		t.setLine(state.tokenStartLine);
+		t.setText(state.text);
+		t.setCharPositionInLine(state.tokenStartCharPositionInLine);
+		emit(t);
+		return t;
+	}
+
+	public void reportError(RecognitionException ex) {
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+
+ at parser::members {
+	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
+	private String source = "unknown";
+	private boolean lookaheadTest = false;
+	private LinkedList<DroolsSentence> editorInterface = null;
+	private boolean isEditorInterfaceEnabled = false;
+
+	public LinkedList<DroolsSentence> getEditorInterface(){
+		return editorInterface;
+	}
+
+	public void enableEditorInterface(){
+		isEditorInterfaceEnabled = true;
+	}
+
+	public void disableEditorInterface(){
+		isEditorInterfaceEnabled = false;
+	}
+
+	private void beginSentence(DroolsSentenceType sentenceType){
+		if (isEditorInterfaceEnabled) {
+			if (null == editorInterface) {
+				editorInterface = new LinkedList<DroolsSentence>();
+			}
+			DroolsSentence sentence = new DroolsSentence();
+			sentence.setType(sentenceType);
+			editorInterface.add(sentence);
+		}
+	}
+
+	private DroolsSentence getActiveSentence(){
+		return editorInterface.getLast();
+	}
+
+	private void emit(List tokens, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && tokens != null) {		
+			for (Object activeObject : tokens){
+				emit((Token) activeObject, editorType);
+			}
+		}
+	}
+
+	private void emit(Token token, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && token != null) {
+			((DroolsToken)token).setEditorType(editorType);
+			getActiveSentence().addContent((DroolsToken) token);
+		}
+	}
+
+	private void emit(boolean forceEmit, int activeContext){
+		if (isEditorInterfaceEnabled) {
+				getActiveSentence().addContent(activeContext);
+		}
+	}
+	
+	private void emit(int activeContext){
+		if (isEditorInterfaceEnabled) {
+			emit(false, activeContext);
+		}
+	}
+
+	private DroolsToken getLastTokenOnList(LinkedList list){
+		DroolsToken lastToken = null;
+		for (Object object : list) {
+			if (object instanceof DroolsToken) {
+				lastToken = (DroolsToken) object;
+			}
+		}
+		return lastToken;
+	}
+
+	private int getLastIntegerValue(LinkedList list) {
+		int lastIntergerValue = -1;
+		for (Object object : list) {
+			if (object instanceof Integer) {
+				lastIntergerValue = (Integer) object;
+			}
+		}
+		return lastIntergerValue;
+	}
+
+	private String retrieveLT(int LTNumber) {
+      		if (null == input)
+			return null;
+		if (null == input.LT(LTNumber))
+			return null;
+		if (null == input.LT(LTNumber).getText())
+			return null;
+	
+		return input.LT(LTNumber).getText();
+	}
+
+	private boolean validateLT(int LTNumber, String text) {
+		String text2Validate = retrieveLT( LTNumber );
+		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
+	}
+	
+	private boolean isPluggableEvaluator( int offset, boolean negated ) {
+		String text2Validate = retrieveLT( offset );
+	        return text2Validate == null ? false : DroolsSoftKeywords.isOperator( text2Validate, negated );
+	}
+	
+	private boolean isPluggableEvaluator( boolean negated ) {
+	        return isPluggableEvaluator( 1, negated );
+	}
+	
+	private boolean validateIdentifierKey(String text) {
+		return validateLT(1, text);
+	}
+	
+	void checkTrailingSemicolon(String text, Token token) {
+		if (text.trim().endsWith(";")) {
+			errors.add(errorMessageFactory
+					.createTrailingSemicolonException(((DroolsToken) token)
+							.getLine(), ((DroolsToken) token)
+							.getCharPositionInLine(), ((DroolsToken) token)
+							.getStopIndex()));
+		}
+	}
+	
+	private boolean validateNotWithBinding(){
+		if (input.LA(1) == ID && input.LA(2) == ID && input.LA(3) == COLON){
+			return true;
+		}
+		return false;
+	}
+
+	private boolean validateRestr() {
+		int lookahead = 2;
+		int countParen = 1;
+
+		while (true) {
+			if (input.LA(lookahead) == COMMA) {
+				break;
+			} else if (input.LA(lookahead) == LEFT_PAREN) {
+				countParen++;
+			} else if (input.LA(lookahead) == RIGHT_PAREN) {
+				countParen--;
+			} else if (input.LA(lookahead) == EOF) {
+				break;
+			}
+			if (countParen == 0){
+				break;
+			}
+			lookahead++;
+		}
+		
+		boolean returnValue = false;
+		int activeIndex = input.index();
+		lookaheadTest = true;
+		try {
+			input.seek(input.LT(2).getTokenIndex());
+			constraint_expression();
+			returnValue = true;
+		} catch (RecognitionException e) {
+		} finally{
+			input.seek(activeIndex);
+		}
+		lookaheadTest = false;
+
+		return returnValue;
+	}
+	
+	private String safeSubstring(String text, int start, int end) {
+		return text.substring(Math.min(start, text.length()), Math.min(Math
+				.max(start, end), text.length()));
+	}
+	
+	public void reportError(RecognitionException ex) {
+		// if we've already reported an error and have not matched a token
+		// yet successfully, don't report any errors.
+		if (state.errorRecovery) {
+			return;
+		}
+		state.errorRecovery = true;
+	
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+	
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+	
+	/** Return a list of pretty strings summarising the errors */
+	public List<String> getErrorMessages() {
+		List<String> messages = new ArrayList<String>(errors.size());
+	
+		for (DroolsParserException activeException : errors) {
+			messages.add(activeException.getMessage());
+		}
+	
+		return messages;
+	}
+	
+	/** return true if any parser errors were accumulated */
+	public boolean hasErrors() {
+		return !errors.isEmpty();
+	}
+
+	/**
+	 * Method that adds a paraphrase type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 */
+	private void pushParaphrases(DroolsParaphraseTypes type) {
+		Map<DroolsParaphraseTypes, String> activeMap = new HashMap<DroolsParaphraseTypes, String>();
+		activeMap.put(type, "");
+		paraphrases.push(activeMap);
+	}
+
+	/**
+	 * Method that sets paraphrase value for a type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 * @param value
+	 *            paraphrase value
+	 */
+	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
+		paraphrases.peek().put(type, value);
+	}
+
+	/**
+	 * Helper method that creates a string from a token list.
+	 * 
+	 * @param tokenList
+	 *            token list
+	 * @return string
+	 */
+	private String buildStringFromTokens(List<Token> tokenList) {
+		StringBuilder sb = new StringBuilder();
+		if (null != tokenList) {
+			for (Token activeToken : tokenList) {
+				if (null != activeToken) {
+					sb.append(activeToken.getText());
+				}
+			}
+		}
+		return sb.toString();
+	}
+	
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+ 
+compilation_unit
+	:	package_statement?
+		statement*
+		EOF
+		-> ^(VT_COMPILATION_UNIT package_statement? statement*) 
+	;
+	catch [ RecognitionException e ] {
+		reportError( e );
+	}
+	catch [ RewriteEmptyStreamException e ] {
+	}
+finally {
+	if (isEditorInterfaceEnabled && retval.tree == null) {
+		retval.tree = root_0;
+		root_0 = (Object) adaptor.nil();
+		Object root_1 = (Object) adaptor.nil();
+		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+		if (stream_package_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_package_statement.nextTree());
+		}
+		while (stream_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_statement.nextTree());
+		}
+		adaptor.addChild(root_0, root_1);
+		retval.stop = input.LT(-1);
+		retval.tree = (Object) adaptor.rulePostProcessing(root_0);
+		adaptor.setTokenBoundaries(retval.tree, retval.start,
+				retval.stop);
+	}
+	if (isEditorInterfaceEnabled && hasErrors()) {
+		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+			if (!(childNode instanceof CommonErrorNode)) {
+				rootNode.addChild(childNode);
+			}
+		}
+		retval.tree = rootNode; 
+	}
+}
+
+package_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); }
+ at after { paraphrases.pop(); }
+	:	package_key
+		package_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(package_key package_id)
+	;
+
+package_id
+	:	id+=ID ( id+=DOT id+=ID )*
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens($id));	}
+		-> ^(VT_PACKAGE_ID ID+)
+	;
+
+statement
+options{
+k = 2;
+}	:	rule_attribute
+	|{(validateLT(1, "import") && validateLT(2, "function") )}?=> function_import_statement 
+	|	import_statement 
+	|	global 
+	|	function
+	|	{(validateLT(1, DroolsSoftKeywords.TEMPLATE))}?=> template
+	|	{(validateLT(1, DroolsSoftKeywords.DECLARE))}?=> type_declaration
+	|	rule
+	|	query
+	;
+
+import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  }
+ at after { paraphrases.pop(); }
+	:	import_key import_name[DroolsParaphraseTypes.IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(import_key import_name)
+	;
+
+function_import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); }
+ at after { paraphrases.pop(); }
+	:	imp=import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}		
+		-> ^(VT_FUNCTION_IMPORT[$imp.start] function_key import_name)
+	;
+
+import_name [DroolsParaphraseTypes importType]
+	:	id+=ID ( id+=DOT id+=ID )* id+=DOT_STAR?
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue($importType, buildStringFromTokens($id));	}
+		-> ^(VT_IMPORT_ID ID+ DOT_STAR?)
+	;
+
+global
+ at init  { pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); }
+ at after { paraphrases.pop(); }
+	:	global_key data_type global_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(global_key data_type global_id)
+	;
+
+global_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, $id.text);	}
+		-> VT_GLOBAL_ID[$id]
+	;
+
+function
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  }
+ at after { paraphrases.pop(); }
+	:	function_key data_type? function_id parameters curly_chunk
+		-> ^(function_key data_type? function_id parameters curly_chunk)
+	;
+
+function_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, $id.text);	}
+		-> VT_FUNCTION_ID[$id]
+	;
+
+query
+ at init  { pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); }
+ at after { paraphrases.pop(); }
+	:	query_key query_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		parameters? 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block 
+		end=end_key SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(query_key query_id parameters? normal_lhs_block end_key)
+	;
+
+query_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	;
+
+parameters
+	:	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			( param_definition (COMMA {	emit($COMMA, DroolsEditorType.SYMBOL);	} param_definition)* )?
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_PARAM_LIST param_definition* RIGHT_PAREN)
+	;
+
+param_definition
+	:	data_type? argument
+	;
+
+argument
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		dimension_definition*
+	;
+
+type_declaration
+ at init  { pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); }
+ at after { paraphrases.pop(); }
+	:	declare_key  type_declare_id
+		decl_metadata*
+		decl_field*
+		end_key
+		-> ^(declare_key type_declare_id decl_metadata* decl_field* end_key)
+	;
+
+type_declare_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, $id.text);	} -> VT_TYPE_DECLARE_ID[$id]
+	;
+
+decl_metadata
+	:	AT 
+	{	emit($AT, DroolsEditorType.SYMBOL);	}
+		ID
+	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk?
+		-> ^(AT ID paren_chunk?)
+	;
+
+decl_field
+	:	ID	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		decl_field_initialization? 
+		COLON	{	emit($COLON, DroolsEditorType.SYMBOL);	}
+		data_type
+		decl_metadata*
+		-> ^(ID decl_field_initialization? data_type decl_metadata*)
+	;
+
+decl_field_initialization
+	:	EQUALS	{	emit($EQUALS, DroolsEditorType.SYMBOL);	}
+		paren_chunk
+	-> ^(EQUALS paren_chunk)
+	;
+
+template
+ at init  { pushParaphrases(DroolsParaphraseTypes.TEMPLATE); }
+ at after { paraphrases.pop(); }
+	:	
+	{	beginSentence(DroolsSentenceType.TEMPLATE);	}
+		template_key template_id 
+		semi1=SEMICOLON?
+	{	emit($semi1, DroolsEditorType.SYMBOL);	}
+		template_slot+
+		end=end_key semi2=SEMICOLON?
+	{	emit($semi2, DroolsEditorType.SYMBOL);	}
+		-> ^(template_key template_id template_slot+ end_key)
+	;
+
+template_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	;
+
+template_slot
+	:	 data_type slot_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_SLOT data_type slot_id)
+	;
+
+slot_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> VT_SLOT_ID[$id]
+	;
+
+rule
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); }
+ at after { paraphrases.pop(); isFailed = false; }
+	:
+	{	beginSentence(DroolsSentenceType.RULE);	}
+		rule_key rule_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		(extend_key rule_id)? decl_metadata* rule_attributes? when_part? rhs_chunk
+		-> ^(rule_key rule_id ^(extend_key rule_id)? decl_metadata* rule_attributes? when_part? rhs_chunk)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			input.LA(5) == MISC && input.LA(6) == ID && 
+			validateLT(1, DroolsSoftKeywords.LOCK) && validateLT(3, DroolsSoftKeywords.ON) &&
+			validateLT(5, DroolsSoftKeywords.ACTIVE)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(input.LT(4), DroolsEditorType.KEYWORD);
+			emit(input.LT(5), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(4) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			(	(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EXPIRES)) ||
+				(validateLT(1, DroolsSoftKeywords.NO) && validateLT(3, DroolsSoftKeywords.LOOP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EFFECTIVE)) ||
+				(validateLT(1, DroolsSoftKeywords.AUTO) && validateLT(3, DroolsSoftKeywords.FOCUS)) ||
+				(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.RULEFLOW) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.AGENDA) && validateLT(3, DroolsSoftKeywords.GROUP))	)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(2) == EOF && input.LA(1) == ID && 
+				(validateLT(1, DroolsSoftKeywords.DIALECT) || validateLT(1, DroolsSoftKeywords.ENABLED) ||
+				 validateLT(1, DroolsSoftKeywords.SALIENCE) || validateLT(1, DroolsSoftKeywords.DURATION))){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+		}
+	}
+}
+
+when_part
+	: 	WHEN {	emit($WHEN, DroolsEditorType.KEYWORD);	}
+		COLON? {	emit($COLON, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block
+	->	WHEN normal_lhs_block
+	;
+
+rule_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	;
+
+rule_attributes
+	:	( attributes_key COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} )? 
+		rule_attribute ( COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} attr=rule_attribute )*
+		-> ^(VT_RULE_ATTRIBUTES attributes_key? rule_attribute+)
+	;
+
+rule_attribute
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); }
+ at after { paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
+	:	salience 
+	|	no_loop
+	|	agenda_group  
+	|	duration  
+	|	activation_group 
+	|	auto_focus 
+	|	date_effective 
+	|	date_expires 
+	|	enabled 
+	|	ruleflow_group 
+	|	lock_on_active
+	|	dialect 
+	| prior
+	| entail_mode
+	| filter
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(2) == EOF && input.LA(1) == ID){
+			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+			input.consume();
+		}
+	}
+}
+date_effective
+	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+date_expires
+	:	date_expires_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+	
+enabled
+	:	enabled_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	    | paren_chunk 
+	    )
+	;	
+
+salience
+	:	salience_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	}
+		( INT 	{	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+		| paren_chunk
+		)
+	;
+
+no_loop
+	:	no_loop_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+
+auto_focus
+	:	auto_focus_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;	
+	
+activation_group
+	:	activation_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+ruleflow_group
+	:	ruleflow_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+agenda_group
+	:	agenda_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+duration
+	:	duration_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( INT {	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+	    | paren_chunk
+	    )
+	;	
+	
+dialect
+	:	dialect_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;			
+	
+lock_on_active
+	:	lock_on_active_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+	
+prior
+  : prior_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } paren_chunk  
+  ;
+  
+entail_mode
+  : entail_mode_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } STRING
+  { emit($STRING, DroolsEditorType.STRING_CONST ); }
+  ;  	
+  
+filter
+  : filter_key^ { emit(Location.LOCATION_RULE_HEADER_KEYWORD);  } STRING
+  { emit($STRING, DroolsEditorType.STRING_CONST ); }
+  ;
+
+
+
+
+
+normal_lhs_block
+	:	lhs*
+	->	^(VT_AND_IMPLICIT lhs*)
+	;
+
+lhs	:	lhs_or
+	;
+
+lhs_or
+ at init{
+	Token orToken = null;
+}	:	(LEFT_PAREN or_key constr_param_set?)=> 
+		LEFT_PAREN  {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			or=or_key	
+			constr_param_set?		
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_and+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} // PREFIX 
+		-> ^(VT_OR_PREFIX[$or.start] constr_param_set? lhs_and+ RIGHT_PAREN)
+	
+	
+	| (LEFT_PAREN equiv_key constr_param_set?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      equiv=equiv_key
+      constr_param_set?
+  { emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  }
+      lhs_and
+      lhs_and      
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
+    -> ^(VT_EQUIV[$equiv.start] constr_param_set? lhs_and lhs_and RIGHT_PAREN)
+	
+	| (LEFT_PAREN xor_key constr_param_set?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      xor=xor_key
+      constr_param_set?
+  { emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  }
+      lhs_and
+      lhs_and      
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
+    -> ^(VT_XOR[$xor.start] constr_param_set? lhs_and lhs_and RIGHT_PAREN)
+	
+	
+	|	(lhs_and -> lhs_and) 
+		( (or_key constr_param_set? |DOUBLE_PIPE)=> (value=or_key constr_param_set? {orToken = $value.start;} 
+		  |pipe=DOUBLE_PIPE {orToken = $pipe; emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);}) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_and 
+		-> ^(VT_OR_INFIX[orToken] constr_param_set? $lhs_or lhs_and))*
+		
+	|  hedge lhs_or
+	   -> ^(hedge lhs_or)	
+									
+	;
+
+
+hedge
+ at init{
+  Token type = null;
+}
+  : value=very_key {type = $value.start; } -> VT_HEDGE[type]
+  ;
+
+
+lhs_and
+ at init{
+	Token andToken = null;
+}	:	(LEFT_PAREN and_key constr_param_set?)=> 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			and=and_key
+			constr_param_set?
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_unary+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}  // PREFIX
+		-> ^(VT_AND_PREFIX[$and.start] constr_param_set? lhs_unary+ RIGHT_PAREN)
+		
+	|	
+	
+	(lhs_unary -> lhs_unary) 
+		( (and_key constr_param_set? |DOUBLE_AMPER)=> 
+		( value=and_key constr_param_set? {andToken = $value.start; } 
+		  |amper=DOUBLE_AMPER {andToken = $amper; emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);}
+		) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_unary 
+		-> ^(VT_AND_INFIX[andToken] constr_param_set? $lhs_and lhs_unary ) )*			  
+	;
+
+lhs_unary
+	:	(	lhs_exist
+		|{validateNotWithBinding()}?=>	lhs_not_binding
+		|	lhs_not
+		|	lhs_eval
+		|	lhs_forall
+		| lhs_forany
+		|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	}  
+				lhs_or 
+			RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		|	pattern_source
+		)
+		((SEMICOLON)=> SEMICOLON! {	emit($SEMICOLON, DroolsEditorType.SYMBOL);	})?
+	;
+
+lhs_exist
+	:	exists_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	}
+	        ( (LEFT_PAREN (or_key|and_key))=> lhs_or //prevent "((" 
+		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	        | lhs_pattern
+	        )
+	        -> ^(exists_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_not_binding
+	:	not_key fact_binding
+	-> ^(not_key ^(VT_PATTERN fact_binding))
+	;
+
+lhs_not	:	not_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	}
+		( (LEFT_PAREN (or_key|and_key))=> {	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} lhs_or //prevent "((" 
+		|	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} 
+				lhs_or 
+			RIGHT_PAREN  {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		| 	lhs_pattern )
+	        -> ^(not_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_eval
+	:	ev=eval_key
+	{	emit(Location.LOCATION_LHS_INSIDE_EVAL);	}
+		pc=paren_chunk
+	{	if (((DroolsTree) $pc.tree).getText() != null){
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	            		
+		}
+	}
+	{	String body = safeSubstring( $pc.text, 1, $pc.text.length()-1 );
+		checkTrailingSemicolon( body, $ev.start );	}
+		-> ^(eval_key paren_chunk)
+	;
+
+lhs_forall
+	:	forall_key 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			pattern_source+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(forall_key pattern_source+ RIGHT_PAREN)
+	;
+	
+	
+
+lhs_forany
+  : forany_key 
+    LEFT_PAREN {  emit($LEFT_PAREN, DroolsEditorType.SYMBOL); } 
+      lhs_or  
+      (
+      (subject_key s=lhs_or)?
+      (weight_key w=lhs_or)?
+      )
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  }
+    -> ^(forany_key lhs_or (subject_key $s)? (weight_key $w)? RIGHT_PAREN)
+  ;
+	
+	
+pattern_source
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	
+	  lhs_pattern
+		over_clause?
+		(
+			FROM^
+		{	emit($FROM, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_LHS_FROM);	}
+		        (  accumulate_statement
+		          | collect_statement 
+		          | entrypoint_statement
+		          | from_source
+		        )
+		)?
+	;
+finally {
+	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_ACCUMULATE);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == COLLECT) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_COLLECT);
+	}
+}
+
+over_clause
+	:	OVER^ {	emit($OVER, DroolsEditorType.KEYWORD);	} over_elements 
+			(COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} over_elements)*
+	;
+
+over_elements
+	:	id1=ID {	emit($id1, DroolsEditorType.IDENTIFIER);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		id2=ID {	emit($id2, DroolsEditorType.IDENTIFIER);	} 
+		paren_chunk
+	-> ^(VT_BEHAVIOR $id1 $id2 paren_chunk)
+	;
+
+accumulate_statement
+	:	ACCUMULATE {	emit($ACCUMULATE, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} 
+		(	accumulate_init_clause
+		|	accumulate_id_clause
+		)
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		-> ^(ACCUMULATE lhs_or accumulate_init_clause? accumulate_id_clause? RIGHT_PAREN)
+	;
+
+
+accumulate_init_clause
+ at init  { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	init_key 
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	}
+		pc1=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] cm1=COMMA? {	emit($cm1, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
+		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
+	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
+
+	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+            			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+            			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
+		}	
+	}
+		res1=result_key {	emit($res1.start, DroolsEditorType.KEYWORD);	} pc4=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+	-> ^(VT_ACCUMULATE_INIT_CLAUSE ^(init_key $pc1) ^(action_key $pc2) ^(reverse_key $pc3)? ^(result_key $pc4))
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.RESULT)) {
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		if (input.LA(1) == LEFT_PAREN){
+			input.consume();
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
+		}
+	}
+}
+
+accumulate_paren_chunk[int locationType]
+ at init{
+	String text = "";
+}	:	pc=accumulate_paren_chunk_data[false,$locationType] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+accumulate_paren_chunk_data[boolean isRecursive, int locationType]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+				emit($locationType);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | accumulate_paren_chunk_data[true,-1] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+accumulate_id_clause
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk
+	-> ^(VT_ACCUMULATE_ID_CLAUSE ID paren_chunk)
+	;
+
+collect_statement
+	:	COLLECT {	emit($COLLECT, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			pattern_source 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(COLLECT pattern_source RIGHT_PAREN)
+	;
+
+entrypoint_statement
+	:	entry_point_key 
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		entrypoint_id
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(entry_point_key entrypoint_id)
+	;
+
+entrypoint_id
+	: 	value=ID {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	| 	value=STRING {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	;
+
+from_source
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		( (LEFT_PAREN)=> args=paren_chunk )?
+		expression_chain?
+	{	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		} else if ( input.LA(1) != EOF ) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	->	^(VT_FROM_SOURCE ID paren_chunk? expression_chain?)
+	;
+	
+expression_chain
+	:
+	 DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} 
+	 ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+	  (
+	    {input.LA(1) == LEFT_PAREN}? paren_chunk
+	    |
+	    square_chunk
+	  )?
+	  expression_chain?
+	  -> ^(VT_EXPRESSION_CHAIN[$DOT] ID square_chunk? paren_chunk? expression_chain?)
+	;
+
+	
+lhs_pattern
+  : fact_binding -> ^(VT_PATTERN fact_binding) //^(VT_CUT cut_key)?
+  | fact -> ^(VT_PATTERN fact) //^(VT_CUT cut_key)?     
+  ;
+	
+
+  
+fact_binding
+ 	:	label
+		( fact
+ 		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+ 			fact_binding_expression 
+ 		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+ 		)
+ 	-> ^(VT_FACT_BINDING label fact? fact_binding_expression? RIGHT_PAREN?)
+	;
+
+fact_binding_expression
+ at init{
+	Token orToken = null;
+}	:	(fact -> fact) ( (value=or_key {orToken = $value.start;}|pipe=DOUBLE_PIPE {orToken = $pipe;}) fact 
+		-> ^(VT_FACT_OR[orToken] $fact_binding_expression fact) )*
+	;
+
+fact
+ at init  { boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); }
+ at after { paraphrases.pop();	}
+	:	pattern_type
+	 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	}
+			constraints? 
+		RIGHT_PAREN {	isFailedOnConstraints = false;	}
+		//constr_identifier?			
+		constr_param_set?	  
+	{	if ($RIGHT_PAREN.text.equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+			emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	   	
+		
+	->	^(VT_FACT pattern_type constraints? constr_param_set? RIGHT_PAREN)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
+		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+
+
+
+
+constr_param_set
+ :   
+  AT!
+  LEFT_PAREN!
+    constr_attr*
+  RIGHT_PAREN!  
+  //-> ^(VT_CONSTR_ATTRIBUTES constr_attr*)
+  ;
+
+
+
+
+constr_attr
+  :  
+    c_param_id    
+    | c_param_type
+    | c_param_args
+    | c_param_cut
+    | c_param_prior    
+  ;
+
+
+c_param_id
+  :
+    id_key^
+    EQUALS!
+    cid=STRING    
+  ;
+
+c_param_type
+  :
+    type_key^
+    EQUALS!
+    type=STRING    
+  ;  
+
+c_param_cut
+  :
+    kut_key^
+    EQUALS!
+    kut=STRING     
+  ;
+
+c_param_args
+  :
+    args_key^
+    EQUALS!
+    pms=STRING    
+  ;
+  
+c_param_prior
+  :
+    prior_key^
+    EQUALS! 
+    pri=STRING    
+  ;  
+
+
+
+
+
+
+
+constraints
+	:	constraint ( COMMA! 
+	{	emit($COMMA, DroolsEditorType.SYMBOL);
+		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	} constraint )*
+	;
+
+constraint
+	:	or_constr
+	;
+
+or_constr
+	:		          
+     or_constr_config
+          
+        (DOUBLE_PIPE^                        
+         and_constr
+        )*
+        
+	;
+	
+or_constr_config
+  :     
+    (and_constr SINGLE_PIPE) =>
+      and_constr
+         SINGLE_PIPE
+           //square_chunk?
+           //constr_identifier? 
+           //cut?
+           constr_param_set?             
+           and_constr
+      -> ^(SINGLE_PIPE 
+            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+            constr_param_set? 
+            and_constr and_constr)
+    |
+    and_constr      
+  ;   	
+
+and_constr
+
+	:	 	 	  
+          and_constr_config
+          
+          (DOUBLE_AMPER^                         
+           unary_constr
+          )*
+                
+           
+	;
+	
+and_constr_config
+  :     
+    (unary_constr SINGLE_AMPER) =>
+      unary_constr
+         SINGLE_AMPER
+           //square_chunk?
+           //constr_identifier?
+           //cut?
+           constr_param_set?                 
+           unary_constr           
+      -> ^(SINGLE_AMPER 
+            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+            constr_param_set? 
+            unary_constr unary_constr)
+    |
+    unary_constr      
+  ;        
+      
+	
+
+unary_constr
+options { k=2; }
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	eval_key^ paren_chunk
+	|	field_constraint
+	| 	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}  
+			or_constr 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS)
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}
+}
+
+
+field_constraint
+ at init{
+	boolean isArrow = false;
+}	:	label accessor_path 
+		( or_restr_connective | arw=ARROW {	emit($ARROW, DroolsEditorType.SYMBOL);	} paren_chunk {isArrow = true;})?
+		constr_param_set?
+		-> {isArrow}? ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path)) ^(VK_EVAL[$arw] paren_chunk)?
+		-> ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path or_restr_connective? constr_param_set?))
+	|	accessor_path or_restr_connective constr_param_set?
+		-> ^(VT_FIELD accessor_path or_restr_connective constr_param_set?)
+	;
+
+
+/*
+field_constraint
+ at init{
+  boolean isArrow = false;
+} : label accessor_path 
+    ( or_restr_connective | arw=ARROW { emit($ARROW, DroolsEditorType.SYMBOL);  } paren_chunk {isArrow = true;})?
+    cut_key?
+    -> {isArrow}? ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path)) ^(VK_EVAL[$arw] paren_chunk)?
+    -> ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path or_restr_connective? ^(VT_CUT cut_key)?))
+  | accessor_path or_restr_connective cut_key?
+    -> ^(VT_FIELD accessor_path or_restr_connective ^(VT_CUT cut_key)?)
+  ;
+*/
+
+
+//cut
+//  : cut_key
+//  -> ^(VT_CUT cut_key)
+//  ;
+
+label
+	:	value=ID {	emit($ID, DroolsEditorType.IDENTIFIER_VARIABLE);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		-> VT_LABEL[$value]
+	;
+
+or_restr_connective
+	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^  
+	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}   and_restr_connective )* 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+and_restr_connective
+	:	constraint_expression ({(validateRestr())}?=> DOUBLE_AMPER^ 
+	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);	} constraint_expression )*
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+constraint_expression
+options{
+k=3;
+}	:	
+
+  compound_operator
+
+	|	op=simple_operator val=expression_value?
+	 -> ^(simple_operator expression_value) //^(VT_CONSTRID constr_identifier)?
+	  
+	| custom_operator expression_value?
+	 -> ^(custom_operator expression_value?) //^(VT_CONSTRID constr_identifier)?
+	 
+	|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			or_restr_connective 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+finally {
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID && 
+				input.LA(2) == ID && validateLT(1, DroolsSoftKeywords.NOT)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.KEYWORD);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF  && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.IN)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.SYMBOL);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS){
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_END);
+		}
+	}
+}
+
+simple_operator
+ at init {
+  if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
+}
+	:	
+	   ( 
+		    EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+		    { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+		    } 		    		   
+        //expression_value
+        
+        
+	   |	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+	      
+	      }
+        //expression_value
+        
+	   |	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value 
+	   
+	   |	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_identifier?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   	  
+	   )	   	 	      	
+	;
+
+custom_operator
+  :     not_key?
+        approx_symb? operator_key^
+        square_chunk? 
+        //ans=constr_identifier?
+        { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+        
+        }
+        //expression_value?
+
+  ;
+  
+  
+//Simple Syntax Sugar
+compound_operator 
+ at init { if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); }
+	:	
+	( in_key^ | not_key in_key^ ) 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
+		LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			expression_value ( COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} expression_value )* 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == DOUBLE_PIPE) {
+		emit(input.LT(1), DroolsEditorType.SYMBOL);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}	}
+	
+
+//constr_identifier
+//  : AT id=ID
+//    -> VK_AT[$id]       
+//  ;	
+
+operator_key
+	:      {(isPluggableEvaluator(false))}? => id=ID
+	       { emit($id, DroolsEditorType.IDENTIFIER); }
+	       -> VK_OPERATOR[$id]
+	;
+
+neg_operator_key
+	:      {(isPluggableEvaluator(true))}? => id=ID 
+	       { emit($id, DroolsEditorType.IDENTIFIER); } 
+	       -> VK_OPERATOR[$id]
+	;
+
+expression_value
+	:	(accessor_path
+	|	literal_constraint 
+	|	paren_chunk)
+	{	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF) {
+		if (input.LA(1) == DOUBLE_PIPE) {
+			emit(input.LT(1), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+literal_constraint
+	:	STRING {	emit($STRING, DroolsEditorType.STRING_CONST);	}
+	|	INT {	emit($INT, DroolsEditorType.NUMERIC_CONST);	}
+	|	FLOAT {	emit($FLOAT, DroolsEditorType.NUMERIC_CONST);	}
+	|	BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST);	}
+	|	NULL {	emit($NULL, DroolsEditorType.NULL_CONST);	}
+	;
+
+pattern_type
+	:	id+=ID ( id+=DOT id+=ID )* 
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens($id));	} 
+	    dimension_definition*
+		-> ^(VT_PATTERN_TYPE ID+ dimension_definition*)
+	;
+
+data_type
+	:	id+=ID ( id+=DOT id+=ID )* dimension_definition*
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> ^(VT_DATA_TYPE ID+ dimension_definition*)
+	;
+
+dimension_definition
+	:	LEFT_SQUARE {	emit($LEFT_SQUARE, DroolsEditorType.SYMBOL);	} 
+		RIGHT_SQUARE {	emit($RIGHT_SQUARE, DroolsEditorType.SYMBOL);	} 
+	;
+
+accessor_path
+	:	accessor_element ( DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} accessor_element )*
+	-> ^(VT_ACCESSOR_PATH accessor_element+)
+	;
+
+accessor_element
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		square_chunk*
+	-> ^(VT_ACCESSOR_ELEMENT ID square_chunk*)
+	;
+
+rhs_chunk
+ at init{
+	String text = "";
+}	:	rc=rhs_chunk_data {text = $rc.text;}
+	-> VT_RHS_CHUNK[$rc.start,text]
+	;
+
+rhs_chunk_data
+	:	THEN 
+	{	if ($THEN.text.equalsIgnoreCase("then")){
+			emit($THEN, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RHS);
+		}	}
+			not_end_key* 
+		end_key 
+		SEMICOLON? {	emit($SEMICOLON, DroolsEditorType.KEYWORD);	}
+	;
+
+curly_chunk
+ at init{
+	String text = "";
+}	:	cc=curly_chunk_data[false] {text = $cc.text;}
+	-> VT_CURLY_CHUNK[$cc.start,text]
+	;
+
+curly_chunk_data[boolean isRecursive]
+	:	lc1=LEFT_CURLY
+		{	if (!isRecursive) {
+				emit($lc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_CURLY | RIGHT_CURLY ) { emit($any, DroolsEditorType.CODE_CHUNK); } | curly_chunk_data[true] )* 
+		rc1=RIGHT_CURLY
+		{	if (!isRecursive) {
+				emit($rc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+paren_chunk
+ at init{
+	String text = "";
+}	:	pc=paren_chunk_data[false] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+paren_chunk_data[boolean isRecursive]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | paren_chunk_data[true] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+
+
+
+
+
+square_chunk
+ at init{
+	String text = "";
+}	:	sc=square_chunk_data[false] {text = $sc.text;}
+	-> VT_SQUARE_CHUNK[$sc.start,text]
+	;
+
+square_chunk_data[boolean isRecursive]
+	:	ls1=LEFT_SQUARE
+		{	if (!isRecursive) {
+				emit($ls1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($ls1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) { emit($any, DroolsEditorType.CODE_CHUNK); }| square_chunk_data[true] )* 
+		rs1=RIGHT_SQUARE
+		{	if (!isRecursive) {
+				emit($rs1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rs1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+	;
+
+lock_on_active_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))}?=>  id1=ID mis1=MISC id2=ID mis2=MISC id3=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);
+		emit($mis2, DroolsEditorType.KEYWORD);
+		emit($id3, DroolsEditorType.KEYWORD);	}
+		->	VK_LOCK_ON_ACTIVE[$start, text]
+	;
+
+date_effective_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EFFECTIVE[$start, text]
+	;
+ 
+date_expires_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EXPIRES[$start, text]
+	;
+
+no_loop_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_NO_LOOP[$start, text]
+	;
+
+auto_focus_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AUTO_FOCUS[$start, text]
+	;
+
+activation_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTIVATION_GROUP[$start, text]
+	;
+
+agenda_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AGENDA_GROUP[$start, text]
+	;
+
+ruleflow_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_RULEFLOW_GROUP[$start, text]
+	;
+
+entry_point_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ENTRY_POINT[$start, text]
+	;
+
+duration_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DURATION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DURATION[$id]
+	;
+
+package_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_PACKAGE[$id]
+	;
+
+import_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IMPORT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IMPORT[$id]
+	;
+
+dialect_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DIALECT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DIALECT[$id]
+	;
+
+prior_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.PRIOR))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_PRIOR[$id]
+  ;
+
+entail_mode_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.ENTAIL))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_ENTAIL[$id]
+  ;
+
+filter_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.FILTER))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_FILTER[$id]
+  ;
+
+
+salience_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_SALIENCE[$id]
+	;
+
+enabled_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ENABLED))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ENABLED[$id]
+	;
+
+attributes_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ATTRIBUTES[$id]
+	;
+
+rule_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RULE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RULE[$id]
+	;
+
+extend_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXTEND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXTEND[$id]
+	;
+
+template_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_TEMPLATE[$id]
+	;
+
+query_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.QUERY))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_QUERY[$id]
+	;
+
+declare_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DECLARE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DECLARE[$id]
+	;
+
+function_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FUNCTION[$id]
+	;
+
+global_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_GLOBAL[$id]
+	;
+
+eval_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EVAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EVAL[$id]
+	;
+
+not_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.NOT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_NOT[$id]
+	;
+
+in_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IN))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IN[$id]
+	;
+
+or_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.OR))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_OR[$id]
+	;
+
+and_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.AND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_AND[$id]	
+	;
+	
+equiv_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.EQUIV))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_EQUIV[$id]
+  ;	
+  
+xor_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.XOR))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_XOR[$id]
+  ;  
+	
+
+exists_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXISTS))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXISTS[$id]
+	;
+
+forall_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FORALL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FORALL[$id]
+	;
+	
+forany_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.FORANY))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_FORANY[$id]
+  ;	
+
+action_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTION[$id]
+	;
+
+reverse_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.REVERSE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_REVERSE[$id]
+	;
+
+result_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RESULT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RESULT[$id]
+	;
+
+end_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_END[$id]
+	;
+
+not_end_key
+	:	{!(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  any=.
+	{	emit($any, DroolsEditorType.CODE_CHUNK);	}
+	;
+
+init_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.INIT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_INIT[$id]
+	;
+	
+	
+subject_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.SUBJECT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_SUBJECT[$id]
+  ;
+  
+  
+weight_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.WEIGHT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_WEIGHT[$id]
+  ;  	
+	
+	
+very_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.VERY))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_VERY[$id]
+  ;   	
+	
+	
+//cut_key
+//  : CUT -> VK_CUT
+//  ;
+  
+  
+
+  
+id_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.CID))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_CONSTRID[$id]
+  ;           
+  
+kut_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.CUT))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_CUT[$id]
+  ;
+  
+type_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.TYPE))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_TYPE[$id]
+  ;  
+
+args_key  
+  : {(validateIdentifierKey(DroolsSoftKeywords.ARGS))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_PARAMS[$id]
+  ;  
+    
+  
+  
+  
+  
+//constr_id_key
+//  : AT -> VK_AT
+//  ;  
+	
+approx_symb
+  : APPROX -> VK_APPROX
+  ;	
+  
+	
+	
+
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                |	EOL
+                )+
+                { $channel=HIDDEN; }
+        ;
+
+fragment
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;
+        
+INT	
+	:	('-')?('0'..'9')+
+		;
+
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+
+STRING
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+    :   '\\' ('b'|'B'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\'|'.'|'o'|
+              'x'|'a'|'e'|'c'|'d'|'D'|'s'|'S'|'w'|'W'|'p'|'A'|
+              'G'|'Z'|'z'|'Q'|'E'|'*'|'['|']'|'('|')'|'$'|'^'|
+              '{'|'}'|'?'|'+'|'-'|'&'|'|')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+BOOL
+	:	('true'|'false') 
+	;	
+
+ACCUMULATE
+	:	'accumulate'
+	;
+
+COLLECT
+	:	'collect'
+	;
+
+FROM
+	:	'from'
+	;
+
+NULL	
+	:	'null'
+	;
+
+OVER
+	:	'over'
+	;
+
+THEN
+	:	'then'
+	;
+
+WHEN
+	:	'when'
+	;
+
+
+APPROX
+  : '~'
+  ;
+
+CUT 
+  : '!'
+  ;
+  
+ 
+AT	:	'@'
+	;
+
+EQUALS
+	:	'='
+	;
+
+SEMICOLON
+	:	';'
+	;
+
+DOT_STAR
+	:	'.*'
+	;
+
+COLON
+	:	':'
+	;
+
+EQUAL
+	:	'=='
+	;
+
+NOT_EQUAL
+	:	'!='
+	;
+
+GREATER
+	:	'>'
+	;
+
+GREATER_EQUAL
+	:	'>='
+	;
+
+LESS
+	:	'<'
+	;
+
+LESS_EQUAL
+	:	'<='
+	;
+
+ARROW
+	:	'->'
+	;
+
+ID	
+	:	('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')*
+	|	'`' ('a'..'z'|'A'..'Z'|'_'|'$'|'\u00c0'..'\u00ff')('a'..'z'|'A'..'Z'|'_'|'0'..'9'|'\u00c0'..'\u00ff')+ '`'
+	{	state.text = $text.substring(1, $text.length() - 1);	}
+	;
+
+LEFT_PAREN
+        :	'('
+        ;
+
+RIGHT_PAREN
+        :	')'
+        ;
+        
+LEFT_SQUARE
+        :	'['
+        ;
+
+RIGHT_SQUARE
+        :	']'
+        ;        
+
+LEFT_CURLY
+        :	'{'
+        ;
+
+RIGHT_CURLY
+        :	'}'
+        ;
+        
+COMMA	:	','
+	;
+	
+DOT	:	'.'
+	;	
+	
+DOUBLE_AMPER
+	:	'&&'
+	;
+	
+DOUBLE_PIPE
+	:	'||'
+	;
+	
+SINGLE_AMPER
+  : '&'
+  ;
+  
+SINGLE_PIPE
+  : '|'
+  ;	
+
+SH_STYLE_SINGLE_LINE_COMMENT	
+	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
+                { $channel=HIDDEN; setText("//"+getText().substring(1));}
+	;
+        
+        
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { $channel=HIDDEN; }
+	; 
+
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { $channel=HIDDEN; }
+	;
+
+MISC 	:
+		'$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' 
+	;

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRLParser.java	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRLParser.java	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,22475 @@
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-13 23:39:05
+
+	package org.drools.lang;
+	
+	import java.util.List;
+	import java.util.LinkedList;
+	import org.drools.compiler.DroolsParserException;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.tree.*;
+
+public class DRLParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CONSTRID", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_TYPE", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_A!
 CTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_TYPE", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CU!
 RLY", "MISC", "CUT", "APPROX", "EOL", "WS", "EscapeSequence", "HexDigi
t", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+    };
+    public static final int ACCUMULATE=122;
+    public static final int VT_ACCESSOR_ELEMENT=39;
+    public static final int VK_TYPE=103;
+    public static final int VT_DATA_TYPE=40;
+    public static final int DOT_STAR=107;
+    public static final int VK_APPROX=96;
+    public static final int VT_CONSTRID=49;
+    public static final int VK_OPERATOR=90;
+    public static final int VK_FUNCTION=74;
+    public static final int VK_GLOBAL=75;
+    public static final int VK_AND=81;
+    public static final int VT_TYPE=53;
+    public static final int EQUALS=114;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=149;
+    public static final int VK_AUTO_FOCUS=58;
+    public static final int VK_SALIENCE=64;
+    public static final int EOF=-1;
+    public static final int VT_CUT=50;
+    public static final int VT_CONSTR_ATTRIBUTES=48;
+    public static final int VT_PATTERN_TYPE=41;
+    public static final int VT_FUNCTION_IMPORT=5;
+    public static final int VT_OR_INFIX=26;
+    public static final int EOL=143;
+    public static final int GREATER=128;
+    public static final int DOUBLE_AMPER=119;
+    public static final int VK_IMPORT=69;
+    public static final int VK_EQUIV=82;
+    public static final int NOT_EQUAL=132;
+    public static final int VK_ACTION=87;
+    public static final int VT_EQUIV=27;
+    public static final int VK_RULE=67;
+    public static final int LESS=130;
+    public static final int VT_SLOT=15;
+    public static final int VK_ARGS=102;
+    public static final int VK_OR=80;
+    public static final int VK_CUT=95;
+    public static final int VT_HEDGE=47;
+    public static final int VT_AND_PREFIX=23;
+    public static final int VK_AT=100;
+    public static final int NULL=134;
+    public static final int VK_FILTER=99;
+    public static final int BOOL=116;
+    public static final int VK_ENTAIL=97;
+    public static final int VK_QUERY=72;
+    public static final int VK_SUBJECT=93;
+    public static final int INT=117;
+    public static final int SEMICOLON=104;
+    public static final int VK_PRIOR=98;
+    public static final int VT_FUNCTION_ID=45;
+    public static final int VT_RHS_CHUNK=17;
+    public static final int VT_FACT_BINDING=34;
+    public static final int CUT=141;
+    public static final int VK_RULEFLOW_GROUP=61;
+    public static final int VK_ENTRY_POINT=77;
+    public static final int SINGLE_AMPER=125;
+    public static final int VT_PACKAGE_ID=42;
+    public static final int VK_RESULT=89;
+    public static final int VT_LABEL=8;
+    public static final int WS=144;
+    public static final int VK_NO_LOOP=57;
+    public static final int LEFT_CURLY=138;
+    public static final int VT_FACT=6;
+    public static final int VT_PATTERN=33;
+    public static final int VK_IN=79;
+    public static final int LEFT_PAREN=109;
+    public static final int LESS_EQUAL=131;
+    public static final int VT_IMPORT_ID=43;
+    public static final int VT_RULE_ID=12;
+    public static final int MISC=140;
+    public static final int FROM=120;
+    public static final int VT_XOR=28;
+    public static final int COLLECT=123;
+    public static final int EscapeSequence=145;
+    public static final int VK_ACTIVATION_GROUP=59;
+    public static final int VK_ENABLED=65;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=150;
+    public static final int VK_PACKAGE=70;
+    public static final int VK_END=91;
+    public static final int OVER=121;
+    public static final int VK_EXTEND=68;
+    public static final int RIGHT_SQUARE=136;
+    public static final int RIGHT_CURLY=139;
+    public static final int SINGLE_PIPE=124;
+    public static final int VT_FACT_OR=35;
+    public static final int VT_FIELD=37;
+    public static final int FLOAT=133;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=30;
+    public static final int VK_EXISTS=84;
+    public static final int VK_FORANY=86;
+    public static final int ID=105;
+    public static final int VK_DATE_EXPIRES=55;
+    public static final int HexDigit=146;
+    public static final int VT_OR_PREFIX=24;
+    public static final int VK_EVAL=76;
+    public static final int APPROX=142;
+    public static final int VK_WEIGHT=94;
+    public static final int DOUBLE_PIPE=118;
+    public static final int AT=112;
+    public static final int VT_ARGS=52;
+    public static final int RIGHT_PAREN=111;
+    public static final int THEN=137;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int VK_XOR=83;
+    public static final int VT_EXPRESSION_CHAIN=32;
+    public static final int COMMA=110;
+    public static final int EQUAL=127;
+    public static final int VT_BEHAVIOR=21;
+    public static final int VK_CONSTRID=101;
+    public static final int DOT=106;
+    public static final int VT_QUERY_ID=9;
+    public static final int VK_DIALECT=63;
+    public static final int VT_PRIOR=51;
+    public static final int VT_GLOBAL_ID=44;
+    public static final int VK_NOT=78;
+    public static final int VT_FROM_SOURCE=31;
+    public static final int VT_ENTRYPOINT_ID=13;
+    public static final int VK_DECLARE=73;
+    public static final int VT_PAREN_CHUNK=20;
+    public static final int VT_TYPE_DECLARE_ID=11;
+    public static final int VK_REVERSE=88;
+    public static final int VK_LOCK_ON_ACTIVE=56;
+    public static final int VK_TEMPLATE=71;
+    public static final int VT_AND_INFIX=25;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VK_DURATION=62;
+    public static final int VT_ACCESSOR_PATH=38;
+    public static final int MULTI_LINE_COMMENT=151;
+    public static final int VK_FORALL=85;
+    public static final int COLON=113;
+    public static final int VT_AND_IMPLICIT=22;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=29;
+    public static final int VT_CURLY_CHUNK=18;
+    public static final int VT_SLOT_ID=14;
+    public static final int VK_ATTRIBUTES=66;
+    public static final int WHEN=115;
+    public static final int UnicodeEscape=147;
+    public static final int VT_SQUARE_CHUNK=19;
+    public static final int VT_TEMPLATE_ID=10;
+    public static final int VK_DATE_EFFECTIVE=54;
+    public static final int VT_PARAM_LIST=46;
+    public static final int ARROW=126;
+    public static final int VT_BIND_FIELD=36;
+    public static final int VT_CONSTRAINTS=7;
+    public static final int VK_AGENDA_GROUP=60;
+    public static final int LEFT_SQUARE=135;
+    public static final int OctalEscape=148;
+    public static final int GREATER_EQUAL=129;
+    public static final int STRING=108;
+    public static final int VK_INIT=92;
+
+    // delegates
+    // delegators
+
+
+        public DRLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public DRLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
+
+    public void setTreeAdaptor(TreeAdaptor adaptor) {
+        this.adaptor = adaptor;
+    }
+    public TreeAdaptor getTreeAdaptor() {
+        return adaptor;
+    }
+
+    public String[] getTokenNames() { return DRLParser.tokenNames; }
+    public String getGrammarFileName() { return "/home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
+
+
+    	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
+    	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+    	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
+    	private String source = "unknown";
+    	private boolean lookaheadTest = false;
+    	private LinkedList<DroolsSentence> editorInterface = null;
+    	private boolean isEditorInterfaceEnabled = false;
+
+    	public LinkedList<DroolsSentence> getEditorInterface(){
+    		return editorInterface;
+    	}
+
+    	public void enableEditorInterface(){
+    		isEditorInterfaceEnabled = true;
+    	}
+
+    	public void disableEditorInterface(){
+    		isEditorInterfaceEnabled = false;
+    	}
+
+    	private void beginSentence(DroolsSentenceType sentenceType){
+    		if (isEditorInterfaceEnabled) {
+    			if (null == editorInterface) {
+    				editorInterface = new LinkedList<DroolsSentence>();
+    			}
+    			DroolsSentence sentence = new DroolsSentence();
+    			sentence.setType(sentenceType);
+    			editorInterface.add(sentence);
+    		}
+    	}
+
+    	private DroolsSentence getActiveSentence(){
+    		return editorInterface.getLast();
+    	}
+
+    	private void emit(List tokens, DroolsEditorType editorType){
+    		if (isEditorInterfaceEnabled && tokens != null) {		
+    			for (Object activeObject : tokens){
+    				emit((Token) activeObject, editorType);
+    			}
+    		}
+    	}
+
+    	private void emit(Token token, DroolsEditorType editorType){
+    		if (isEditorInterfaceEnabled && token != null) {
+    			((DroolsToken)token).setEditorType(editorType);
+    			getActiveSentence().addContent((DroolsToken) token);
+    		}
+    	}
+
+    	private void emit(boolean forceEmit, int activeContext){
+    		if (isEditorInterfaceEnabled) {
+    				getActiveSentence().addContent(activeContext);
+    		}
+    	}
+    	
+    	private void emit(int activeContext){
+    		if (isEditorInterfaceEnabled) {
+    			emit(false, activeContext);
+    		}
+    	}
+
+    	private DroolsToken getLastTokenOnList(LinkedList list){
+    		DroolsToken lastToken = null;
+    		for (Object object : list) {
+    			if (object instanceof DroolsToken) {
+    				lastToken = (DroolsToken) object;
+    			}
+    		}
+    		return lastToken;
+    	}
+
+    	private int getLastIntegerValue(LinkedList list) {
+    		int lastIntergerValue = -1;
+    		for (Object object : list) {
+    			if (object instanceof Integer) {
+    				lastIntergerValue = (Integer) object;
+    			}
+    		}
+    		return lastIntergerValue;
+    	}
+
+    	private String retrieveLT(int LTNumber) {
+          		if (null == input)
+    			return null;
+    		if (null == input.LT(LTNumber))
+    			return null;
+    		if (null == input.LT(LTNumber).getText())
+    			return null;
+    	
+    		return input.LT(LTNumber).getText();
+    	}
+
+    	private boolean validateLT(int LTNumber, String text) {
+    		String text2Validate = retrieveLT( LTNumber );
+    		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
+    	}
+    	
+    	private boolean isPluggableEvaluator( int offset, boolean negated ) {
+    		String text2Validate = retrieveLT( offset );
+    	        return text2Validate == null ? false : DroolsSoftKeywords.isOperator( text2Validate, negated );
+    	}
+    	
+    	private boolean isPluggableEvaluator( boolean negated ) {
+    	        return isPluggableEvaluator( 1, negated );
+    	}
+    	
+    	private boolean validateIdentifierKey(String text) {
+    		return validateLT(1, text);
+    	}
+    	
+    	void checkTrailingSemicolon(String text, Token token) {
+    		if (text.trim().endsWith(";")) {
+    			errors.add(errorMessageFactory
+    					.createTrailingSemicolonException(((DroolsToken) token)
+    							.getLine(), ((DroolsToken) token)
+    							.getCharPositionInLine(), ((DroolsToken) token)
+    							.getStopIndex()));
+    		}
+    	}
+    	
+    	private boolean validateNotWithBinding(){
+    		if (input.LA(1) == ID && input.LA(2) == ID && input.LA(3) == COLON){
+    			return true;
+    		}
+    		return false;
+    	}
+
+    	private boolean validateRestr() {
+    		int lookahead = 2;
+    		int countParen = 1;
+
+    		while (true) {
+    			if (input.LA(lookahead) == COMMA) {
+    				break;
+    			} else if (input.LA(lookahead) == LEFT_PAREN) {
+    				countParen++;
+    			} else if (input.LA(lookahead) == RIGHT_PAREN) {
+    				countParen--;
+    			} else if (input.LA(lookahead) == EOF) {
+    				break;
+    			}
+    			if (countParen == 0){
+    				break;
+    			}
+    			lookahead++;
+    		}
+    		
+    		boolean returnValue = false;
+    		int activeIndex = input.index();
+    		lookaheadTest = true;
+    		try {
+    			input.seek(input.LT(2).getTokenIndex());
+    			constraint_expression();
+    			returnValue = true;
+    		} catch (RecognitionException e) {
+    		} finally{
+    			input.seek(activeIndex);
+    		}
+    		lookaheadTest = false;
+
+    		return returnValue;
+    	}
+    	
+    	private String safeSubstring(String text, int start, int end) {
+    		return text.substring(Math.min(start, text.length()), Math.min(Math
+    				.max(start, end), text.length()));
+    	}
+    	
+    	public void reportError(RecognitionException ex) {
+    		// if we've already reported an error and have not matched a token
+    		// yet successfully, don't report any errors.
+    		if (state.errorRecovery) {
+    			return;
+    		}
+    		state.errorRecovery = true;
+    	
+    		errors.add(errorMessageFactory.createDroolsException(ex));
+    	}
+    	
+    	/** return the raw DroolsParserException errors */
+    	public List<DroolsParserException> getErrors() {
+    		return errors;
+    	}
+    	
+    	/** Return a list of pretty strings summarising the errors */
+    	public List<String> getErrorMessages() {
+    		List<String> messages = new ArrayList<String>(errors.size());
+    	
+    		for (DroolsParserException activeException : errors) {
+    			messages.add(activeException.getMessage());
+    		}
+    	
+    		return messages;
+    	}
+    	
+    	/** return true if any parser errors were accumulated */
+    	public boolean hasErrors() {
+    		return !errors.isEmpty();
+    	}
+
+    	/**
+    	 * Method that adds a paraphrase type into paraphrases stack.
+    	 * 
+    	 * @param type
+    	 *            paraphrase type
+    	 */
+    	private void pushParaphrases(DroolsParaphraseTypes type) {
+    		Map<DroolsParaphraseTypes, String> activeMap = new HashMap<DroolsParaphraseTypes, String>();
+    		activeMap.put(type, "");
+    		paraphrases.push(activeMap);
+    	}
+
+    	/**
+    	 * Method that sets paraphrase value for a type into paraphrases stack.
+    	 * 
+    	 * @param type
+    	 *            paraphrase type
+    	 * @param value
+    	 *            paraphrase value
+    	 */
+    	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
+    		paraphrases.peek().put(type, value);
+    	}
+
+    	/**
+    	 * Helper method that creates a string from a token list.
+    	 * 
+    	 * @param tokenList
+    	 *            token list
+    	 * @return string
+    	 */
+    	private String buildStringFromTokens(List<Token> tokenList) {
+    		StringBuilder sb = new StringBuilder();
+    		if (null != tokenList) {
+    			for (Token activeToken : tokenList) {
+    				if (null != activeToken) {
+    					sb.append(activeToken.getText());
+    				}
+    			}
+    		}
+    		return sb.toString();
+    	}
+    	
+    	/** Overrided this method to not output mesages */
+    	public void emitErrorMessage(String msg) {
+    	}
+
+
+    public static class compilation_unit_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "compilation_unit"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:429:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    public final DRLParser.compilation_unit_return compilation_unit() throws RecognitionException {
+        DRLParser.compilation_unit_return retval = new DRLParser.compilation_unit_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EOF3=null;
+        DRLParser.package_statement_return package_statement1 = null;
+
+        DRLParser.statement_return statement2 = null;
+
+
+        Object EOF3_tree=null;
+        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
+        RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:430:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:430:4: ( package_statement )? ( statement )* EOF
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:430:4: ( package_statement )?
+            int alt1=2;
+            alt1 = dfa1.predict(input);
+            switch (alt1) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:430:4: package_statement
+                    {
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit513);
+                    package_statement1=package_statement();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_package_statement.add(package_statement1.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:431:3: ( statement )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==ID) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:431:3: statement
+            	    {
+            	    pushFollow(FOLLOW_statement_in_compilation_unit518);
+            	    statement2=statement();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_statement.add(statement2.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit523); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EOF.add(EOF3);
+
+
+
+            // AST REWRITE
+            // elements: package_statement, statement
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 433:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:433:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:433:28: ( package_statement )?
+                if ( stream_package_statement.hasNext() ) {
+                    adaptor.addChild(root_1, stream_package_statement.nextTree());
+
+                }
+                stream_package_statement.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:433:47: ( statement )*
+                while ( stream_statement.hasNext() ) {
+                    adaptor.addChild(root_1, stream_statement.nextTree());
+
+                }
+                stream_statement.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException e ) {
+
+            		reportError( e );
+            	
+        }
+        catch ( RewriteEmptyStreamException e ) {
+
+            	
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && retval.tree == null) {
+            		retval.tree = root_0;
+            		root_0 = (Object) adaptor.nil();
+            		Object root_1 = (Object) adaptor.nil();
+            		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
+            				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+            		if (stream_package_statement.hasNext()) {
+            			adaptor.addChild(root_1, stream_package_statement.nextTree());
+            		}
+            		while (stream_statement.hasNext()) {
+            			adaptor.addChild(root_1, stream_statement.nextTree());
+            		}
+            		adaptor.addChild(root_0, root_1);
+            		retval.stop = input.LT(-1);
+            		retval.tree = (Object) adaptor.rulePostProcessing(root_0);
+            		adaptor.setTokenBoundaries(retval.tree, retval.start,
+            				retval.stop);
+            	}
+            	if (isEditorInterfaceEnabled && hasErrors()) {
+            		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+            				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+            		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+            			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+            			if (!(childNode instanceof CommonErrorNode)) {
+            				rootNode.addChild(childNode);
+            			}
+            		}
+            		retval.tree = rootNode; 
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "compilation_unit"
+
+    public static class package_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "package_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:472:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    public final DRLParser.package_statement_return package_statement() throws RecognitionException {
+        DRLParser.package_statement_return retval = new DRLParser.package_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON6=null;
+        DRLParser.package_key_return package_key4 = null;
+
+        DRLParser.package_id_return package_id5 = null;
+
+
+        Object SEMICOLON6_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_package_key=new RewriteRuleSubtreeStream(adaptor,"rule package_key");
+        RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
+         pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:475:4: package_key package_id ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_package_key_in_package_statement578);
+            package_key4=package_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_package_key.add(package_key4.getTree());
+            pushFollow(FOLLOW_package_id_in_package_statement582);
+            package_id5=package_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:476:14: ( SEMICOLON )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==SEMICOLON) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:476:14: SEMICOLON
+                    {
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement584); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON6, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: package_id, package_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 478:3: -> ^( package_key package_id )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:478:6: ^( package_key package_id )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_package_id.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "package_statement"
+
+    public static class package_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "package_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    public final DRLParser.package_id_return package_id() throws RecognitionException {
+        DRLParser.package_id_return retval = new DRLParser.package_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+        List list_id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:4: id+= ID (id+= DOT id+= ID )*
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id611); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if (list_id==null) list_id=new ArrayList();
+            list_id.add(id);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:11: (id+= DOT id+= ID )*
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( (LA4_0==DOT) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:13: id+= DOT id+= ID
+            	    {
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id617); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id621); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop4;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+              	emit(list_id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens(list_id));	
+            }
+
+
+            // AST REWRITE
+            // elements: ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 485:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:6: ^( VT_PACKAGE_ID ( ID )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
+
+                if ( !(stream_ID.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_ID.hasNext() ) {
+                    adaptor.addChild(root_1, stream_ID.nextNode());
+
+                }
+                stream_ID.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "package_id"
+
+    public static class statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    public final DRLParser.statement_return statement() throws RecognitionException {
+        DRLParser.statement_return retval = new DRLParser.statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.rule_attribute_return rule_attribute7 = null;
+
+        DRLParser.function_import_statement_return function_import_statement8 = null;
+
+        DRLParser.import_statement_return import_statement9 = null;
+
+        DRLParser.global_return global10 = null;
+
+        DRLParser.function_return function11 = null;
+
+        DRLParser.template_return template12 = null;
+
+        DRLParser.type_declaration_return type_declaration13 = null;
+
+        DRLParser.rule_return rule14 = null;
+
+        DRLParser.query_return query15 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            int alt5=9;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:5: rule_attribute
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_rule_attribute_in_statement659);
+                    rule_attribute7=rule_attribute();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rule_attribute7.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:3: {...}? => function_import_statement
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    if ( !(((validateLT(1, "import") && validateLT(2, "function") ))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        throw new FailedPredicateException(input, "statement", "(validateLT(1, \"import\") && validateLT(2, \"function\") )");
+                    }
+                    pushFollow(FOLLOW_function_import_statement_in_statement666);
+                    function_import_statement8=function_import_statement();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, function_import_statement8.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:493:4: import_statement
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_import_statement_in_statement672);
+                    import_statement9=import_statement();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, import_statement9.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:4: global
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_global_in_statement678);
+                    global10=global();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, global10.getTree());
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:4: function
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_function_in_statement684);
+                    function11=function();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, function11.getTree());
+
+                    }
+                    break;
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:496:4: {...}? => template
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    if ( !(((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
+                    }
+                    pushFollow(FOLLOW_template_in_statement692);
+                    template12=template();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, template12.getTree());
+
+                    }
+                    break;
+                case 7 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:4: {...}? => type_declaration
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    if ( !(((validateLT(1, DroolsSoftKeywords.DECLARE)))) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
+                    }
+                    pushFollow(FOLLOW_type_declaration_in_statement700);
+                    type_declaration13=type_declaration();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, type_declaration13.getTree());
+
+                    }
+                    break;
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:4: rule
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_rule_in_statement705);
+                    rule14=rule();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rule14.getTree());
+
+                    }
+                    break;
+                case 9 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:499:4: query
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_query_in_statement710);
+                    query15=query();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, query15.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "statement"
+
+    public static class import_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "import_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    public final DRLParser.import_statement_return import_statement() throws RecognitionException {
+        DRLParser.import_statement_return retval = new DRLParser.import_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON18=null;
+        DRLParser.import_key_return import_key16 = null;
+
+        DRLParser.import_name_return import_name17 = null;
+
+
+        Object SEMICOLON18_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_import_key=new RewriteRuleSubtreeStream(adaptor,"rule import_key");
+        RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
+         pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_import_key_in_import_statement732);
+            import_key16=import_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(import_key16.getTree());
+            pushFollow(FOLLOW_import_name_in_import_statement734);
+            import_name17=import_name(DroolsParaphraseTypes.IMPORT);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:57: ( SEMICOLON )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==SEMICOLON) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:57: SEMICOLON
+                    {
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement737); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON18, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: import_name, import_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 507:3: -> ^( import_key import_name )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:507:6: ^( import_key import_name )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_import_name.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "import_statement"
+
+    public static class function_import_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "function_import_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:510:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    public final DRLParser.function_import_statement_return function_import_statement() throws RecognitionException {
+        DRLParser.function_import_statement_return retval = new DRLParser.function_import_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON21=null;
+        DRLParser.import_key_return imp = null;
+
+        DRLParser.function_key_return function_key19 = null;
+
+        DRLParser.import_name_return import_name20 = null;
+
+
+        Object SEMICOLON21_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
+        RewriteRuleSubtreeStream stream_import_key=new RewriteRuleSubtreeStream(adaptor,"rule import_key");
+        RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
+         pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_import_key_in_function_import_statement775);
+            imp=import_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_key.add(imp.getTree());
+            pushFollow(FOLLOW_function_key_in_function_import_statement777);
+            function_key19=function_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_key.add(function_key19.getTree());
+            pushFollow(FOLLOW_import_name_in_function_import_statement779);
+            import_name20=import_name(DroolsParaphraseTypes.FUNCTION_IMPORT);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_import_name.add(import_name20.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:83: ( SEMICOLON )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==SEMICOLON) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:83: SEMICOLON
+                    {
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement782); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON21, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: import_name, function_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 515:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:515:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FUNCTION_IMPORT, (imp!=null?((Token)imp.start):null)), root_1);
+
+                adaptor.addChild(root_1, stream_function_key.nextTree());
+                adaptor.addChild(root_1, stream_import_name.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "function_import_statement"
+
+    public static class import_name_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "import_name"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:518:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    public final DRLParser.import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
+        DRLParser.import_name_return retval = new DRLParser.import_name_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+        List list_id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name816); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if (list_id==null) list_id=new ArrayList();
+            list_id.add(id);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:11: (id+= DOT id+= ID )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( (LA8_0==DOT) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:13: id+= DOT id+= ID
+            	    {
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name822); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name826); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:33: (id+= DOT_STAR )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==DOT_STAR) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:33: id+= DOT_STAR
+                    {
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name833); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
+
+                    if (list_id==null) list_id=new ArrayList();
+                    list_id.add(id);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(list_id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(importType, buildStringFromTokens(list_id));	
+            }
+
+
+            // AST REWRITE
+            // elements: DOT_STAR, ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 522:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
+
+                if ( !(stream_ID.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_ID.hasNext() ) {
+                    adaptor.addChild(root_1, stream_ID.nextNode());
+
+                }
+                stream_ID.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:25: ( DOT_STAR )?
+                if ( stream_DOT_STAR.hasNext() ) {
+                    adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
+
+                }
+                stream_DOT_STAR.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "import_name"
+
+    public static class global_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "global"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    public final DRLParser.global_return global() throws RecognitionException {
+        DRLParser.global_return retval = new DRLParser.global_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON25=null;
+        DRLParser.global_key_return global_key22 = null;
+
+        DRLParser.data_type_return data_type23 = null;
+
+        DRLParser.global_id_return global_id24 = null;
+
+
+        Object SEMICOLON25_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
+        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
+        RewriteRuleSubtreeStream stream_global_id=new RewriteRuleSubtreeStream(adaptor,"rule global_id");
+         pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:4: global_key data_type global_id ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_global_key_in_global873);
+            global_key22=global_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_global_key.add(global_key22.getTree());
+            pushFollow(FOLLOW_data_type_in_global875);
+            data_type23=data_type();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type23.getTree());
+            pushFollow(FOLLOW_global_id_in_global877);
+            global_id24=global_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:35: ( SEMICOLON )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==SEMICOLON) ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:35: SEMICOLON
+                    {
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global879); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON25, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: data_type, global_id, global_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 530:3: -> ^( global_key data_type global_id )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:530:6: ^( global_key data_type global_id )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                adaptor.addChild(root_1, stream_global_id.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "global"
+
+    public static class global_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "global_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:533:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    public final DRLParser.global_id_return global_id() throws RecognitionException {
+        DRLParser.global_id_return retval = new DRLParser.global_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:4: id= ID
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id908); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, (id!=null?id.getText():null));	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 537:3: -> VT_GLOBAL_ID[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "global_id"
+
+    public static class function_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "function"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    public final DRLParser.function_return function() throws RecognitionException {
+        DRLParser.function_return retval = new DRLParser.function_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.function_key_return function_key26 = null;
+
+        DRLParser.data_type_return data_type27 = null;
+
+        DRLParser.function_id_return function_id28 = null;
+
+        DRLParser.parameters_return parameters29 = null;
+
+        DRLParser.curly_chunk_return curly_chunk30 = null;
+
+
+        RewriteRuleSubtreeStream stream_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
+        RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
+        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
+        RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
+        RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
+         pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:4: function_key ( data_type )? function_id parameters curly_chunk
+            {
+            pushFollow(FOLLOW_function_key_in_function940);
+            function_key26=function_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:17: ( data_type )?
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==ID) ) {
+                int LA11_1 = input.LA(2);
+
+                if ( ((LA11_1>=ID && LA11_1<=DOT)||LA11_1==LEFT_SQUARE) ) {
+                    alt11=1;
+                }
+            }
+            switch (alt11) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:543:17: data_type
+                    {
+                    pushFollow(FOLLOW_data_type_in_function942);
+                    data_type27=data_type();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_data_type.add(data_type27.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_function_id_in_function945);
+            function_id28=function_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_function_id.add(function_id28.getTree());
+            pushFollow(FOLLOW_parameters_in_function947);
+            parameters29=parameters();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
+            pushFollow(FOLLOW_curly_chunk_in_function949);
+            curly_chunk30=curly_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_curly_chunk.add(curly_chunk30.getTree());
+
+
+            // AST REWRITE
+            // elements: data_type, curly_chunk, parameters, function_key, function_id
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 544:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_function_key.nextNode(), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:21: ( data_type )?
+                if ( stream_data_type.hasNext() ) {
+                    adaptor.addChild(root_1, stream_data_type.nextTree());
+
+                }
+                stream_data_type.reset();
+                adaptor.addChild(root_1, stream_function_id.nextTree());
+                adaptor.addChild(root_1, stream_parameters.nextTree());
+                adaptor.addChild(root_1, stream_curly_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "function"
+
+    public static class function_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "function_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    public final DRLParser.function_id_return function_id() throws RecognitionException {
+        DRLParser.function_id_return retval = new DRLParser.function_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:4: id= ID
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id979); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, (id!=null?id.getText():null));	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 551:3: -> VT_FUNCTION_ID[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "function_id"
+
+    public static class query_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "query"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:1: query : query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) ;
+    public final DRLParser.query_return query() throws RecognitionException {
+        DRLParser.query_return retval = new DRLParser.query_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON35=null;
+        DRLParser.end_key_return end = null;
+
+        DRLParser.query_key_return query_key31 = null;
+
+        DRLParser.query_id_return query_id32 = null;
+
+        DRLParser.parameters_return parameters33 = null;
+
+        DRLParser.normal_lhs_block_return normal_lhs_block34 = null;
+
+
+        Object SEMICOLON35_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_query_key=new RewriteRuleSubtreeStream(adaptor,"rule query_key");
+        RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
+        RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
+        RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
+         pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:557:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_query_key_in_query1011);
+            query_key31=query_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_query_key.add(query_key31.getTree());
+            pushFollow(FOLLOW_query_id_in_query1013);
+            query_id32=query_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_query_id.add(query_id32.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:559:3: ( parameters )?
+            int alt12=2;
+            alt12 = dfa12.predict(input);
+            switch (alt12) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:559:3: parameters
+                    {
+                    pushFollow(FOLLOW_parameters_in_query1021);
+                    parameters33=parameters();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_parameters.add(parameters33.getTree());
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+            }
+            pushFollow(FOLLOW_normal_lhs_block_in_query1030);
+            normal_lhs_block34=normal_lhs_block();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block34.getTree());
+            pushFollow(FOLLOW_end_key_in_query1037);
+            end=end_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:15: ( SEMICOLON )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==SEMICOLON) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:562:15: SEMICOLON
+                    {
+                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1039); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON35);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON35, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: normal_lhs_block, parameters, query_key, query_id, end_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 564:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:6: ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_query_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_query_id.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:564:27: ( parameters )?
+                if ( stream_parameters.hasNext() ) {
+                    adaptor.addChild(root_1, stream_parameters.nextTree());
+
+                }
+                stream_parameters.reset();
+                adaptor.addChild(root_1, stream_normal_lhs_block.nextTree());
+                adaptor.addChild(root_1, stream_end_key.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "query"
+
+    public static class query_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "query_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:567:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    public final DRLParser.query_id_return query_id() throws RecognitionException {
+        DRLParser.query_id_return retval = new DRLParser.query_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==ID) ) {
+                alt14=1;
+            }
+            else if ( (LA14_0==STRING) ) {
+                alt14=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:5: id= ID
+                    {
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1074); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 570:65: -> VT_QUERY_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:571:5: id= STRING
+                    {
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1090); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.QUERY, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 573:65: -> VT_QUERY_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "query_id"
+
+    public static class parameters_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "parameters"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:576:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    public final DRLParser.parameters_return parameters() throws RecognitionException {
+        DRLParser.parameters_return retval = new DRLParser.parameters_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN36=null;
+        Token COMMA38=null;
+        Token RIGHT_PAREN40=null;
+        DRLParser.param_definition_return param_definition37 = null;
+
+        DRLParser.param_definition_return param_definition39 = null;
+
+
+        Object LEFT_PAREN36_tree=null;
+        Object COMMA38_tree=null;
+        Object RIGHT_PAREN40_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            {
+            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1109); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN36);
+
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN36, DroolsEditorType.SYMBOL);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:4: ( param_definition ( COMMA param_definition )* )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==ID) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:6: param_definition ( COMMA param_definition )*
+                    {
+                    pushFollow(FOLLOW_param_definition_in_parameters1118);
+                    param_definition37=param_definition();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_param_definition.add(param_definition37.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:23: ( COMMA param_definition )*
+                    loop15:
+                    do {
+                        int alt15=2;
+                        int LA15_0 = input.LA(1);
+
+                        if ( (LA15_0==COMMA) ) {
+                            alt15=1;
+                        }
+
+
+                        switch (alt15) {
+                    	case 1 :
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:578:24: COMMA param_definition
+                    	    {
+                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1121); if (state.failed) return retval; 
+                    	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA38);
+
+                    	    if ( state.backtracking==0 ) {
+                    	      	emit(COMMA38, DroolsEditorType.SYMBOL);	
+                    	    }
+                    	    pushFollow(FOLLOW_param_definition_in_parameters1125);
+                    	    param_definition39=param_definition();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_param_definition.add(param_definition39.getTree());
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop15;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1134); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN40);
+
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN40, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: RIGHT_PAREN, param_definition
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 580:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:22: ( param_definition )*
+                while ( stream_param_definition.hasNext() ) {
+                    adaptor.addChild(root_1, stream_param_definition.nextTree());
+
+                }
+                stream_param_definition.reset();
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "parameters"
+
+    public static class param_definition_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "param_definition"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:1: param_definition : ( data_type )? argument ;
+    public final DRLParser.param_definition_return param_definition() throws RecognitionException {
+        DRLParser.param_definition_return retval = new DRLParser.param_definition_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.data_type_return data_type41 = null;
+
+        DRLParser.argument_return argument42 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:2: ( ( data_type )? argument )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: ( data_type )? argument
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: ( data_type )?
+            int alt17=2;
+            alt17 = dfa17.predict(input);
+            switch (alt17) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: data_type
+                    {
+                    pushFollow(FOLLOW_data_type_in_param_definition1160);
+                    data_type41=data_type();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, data_type41.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_argument_in_param_definition1163);
+            argument42=argument();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, argument42.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "param_definition"
+
+    public static class argument_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "argument"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:587:1: argument : ID ( dimension_definition )* ;
+    public final DRLParser.argument_return argument() throws RecognitionException {
+        DRLParser.argument_return retval = new DRLParser.argument_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ID43=null;
+        DRLParser.dimension_definition_return dimension_definition44 = null;
+
+
+        Object ID43_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:2: ( ID ( dimension_definition )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ID ( dimension_definition )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1174); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            ID43_tree = (Object)adaptor.create(ID43);
+            adaptor.addChild(root_0, ID43_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(ID43, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:3: ( dimension_definition )*
+            loop18:
+            do {
+                int alt18=2;
+                int LA18_0 = input.LA(1);
+
+                if ( (LA18_0==LEFT_SQUARE) ) {
+                    alt18=1;
+                }
+
+
+                switch (alt18) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:3: dimension_definition
+            	    {
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1180);
+            	    dimension_definition44=dimension_definition();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, dimension_definition44.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop18;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "argument"
+
+    public static class type_declaration_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "type_declaration"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) ;
+    public final DRLParser.type_declaration_return type_declaration() throws RecognitionException {
+        DRLParser.type_declaration_return retval = new DRLParser.type_declaration_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.declare_key_return declare_key45 = null;
+
+        DRLParser.type_declare_id_return type_declare_id46 = null;
+
+        DRLParser.decl_metadata_return decl_metadata47 = null;
+
+        DRLParser.decl_field_return decl_field48 = null;
+
+        DRLParser.end_key_return end_key49 = null;
+
+
+        RewriteRuleSubtreeStream stream_decl_field=new RewriteRuleSubtreeStream(adaptor,"rule decl_field");
+        RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
+        RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
+         pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
+            {
+            pushFollow(FOLLOW_declare_key_in_type_declaration1203);
+            declare_key45=declare_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_declare_key.add(declare_key45.getTree());
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1206);
+            type_declare_id46=type_declare_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id46.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:596:3: ( decl_metadata )*
+            loop19:
+            do {
+                int alt19=2;
+                int LA19_0 = input.LA(1);
+
+                if ( (LA19_0==AT) ) {
+                    alt19=1;
+                }
+
+
+                switch (alt19) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:596:3: decl_metadata
+            	    {
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1210);
+            	    decl_metadata47=decl_metadata();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata47.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop19;
+                }
+            } while (true);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:597:3: ( decl_field )*
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( (LA20_0==ID) ) {
+                    int LA20_1 = input.LA(2);
+
+                    if ( ((LA20_1>=COLON && LA20_1<=EQUALS)) ) {
+                        alt20=1;
+                    }
+
+
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:597:3: decl_field
+            	    {
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1215);
+            	    decl_field48=decl_field();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_field.add(decl_field48.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop20;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_end_key_in_type_declaration1220);
+            end_key49=end_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end_key49.getTree());
+
+
+            // AST REWRITE
+            // elements: declare_key, decl_field, type_declare_id, decl_metadata, end_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 599:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_declare_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_type_declare_id.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:36: ( decl_metadata )*
+                while ( stream_decl_metadata.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
+
+                }
+                stream_decl_metadata.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:51: ( decl_field )*
+                while ( stream_decl_field.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_field.nextTree());
+
+                }
+                stream_decl_field.reset();
+                adaptor.addChild(root_1, stream_end_key.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "type_declaration"
+
+    public static class type_declare_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "type_declare_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
+    public final DRLParser.type_declare_id_return type_declare_id() throws RecognitionException {
+        DRLParser.type_declare_id_return retval = new DRLParser.type_declare_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:5: id= ID
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1252); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, (id!=null?id.getText():null));	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 605:72: -> VT_TYPE_DECLARE_ID[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_TYPE_DECLARE_ID, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "type_declare_id"
+
+    public static class decl_metadata_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "decl_metadata"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:1: decl_metadata : AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) ;
+    public final DRLParser.decl_metadata_return decl_metadata() throws RecognitionException {
+        DRLParser.decl_metadata_return retval = new DRLParser.decl_metadata_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token AT50=null;
+        Token ID51=null;
+        DRLParser.paren_chunk_return paren_chunk52 = null;
+
+
+        Object AT50_tree=null;
+        Object ID51_tree=null;
+        RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:4: AT ID ( paren_chunk )?
+            {
+            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1271); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT50);
+
+            if ( state.backtracking==0 ) {
+              	emit(AT50, DroolsEditorType.SYMBOL);	
+            }
+            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1279); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID51);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID51, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:3: ( paren_chunk )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==LEFT_PAREN) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:3: paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1286);
+                    paren_chunk52=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk52.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: ID, paren_chunk, AT
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 614:3: -> ^( AT ID ( paren_chunk )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:6: ^( AT ID ( paren_chunk )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_AT.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:14: ( paren_chunk )?
+                if ( stream_paren_chunk.hasNext() ) {
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                }
+                stream_paren_chunk.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "decl_metadata"
+
+    public static class decl_field_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "decl_field"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    public final DRLParser.decl_field_return decl_field() throws RecognitionException {
+        DRLParser.decl_field_return retval = new DRLParser.decl_field_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ID53=null;
+        Token COLON55=null;
+        DRLParser.decl_field_initialization_return decl_field_initialization54 = null;
+
+        DRLParser.data_type_return data_type56 = null;
+
+        DRLParser.decl_metadata_return decl_metadata57 = null;
+
+
+        Object ID53_tree=null;
+        Object COLON55_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_decl_field_initialization=new RewriteRuleSubtreeStream(adaptor,"rule decl_field_initialization");
+        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            {
+            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1311); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID53);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID53, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: ( decl_field_initialization )?
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==EQUALS) ) {
+                alt22=1;
+            }
+            switch (alt22) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: decl_field_initialization
+                    {
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1317);
+                    decl_field_initialization54=decl_field_initialization();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_decl_field_initialization.add(decl_field_initialization54.getTree());
+
+                    }
+                    break;
+
+            }
+
+            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1323); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON55);
+
+            if ( state.backtracking==0 ) {
+              	emit(COLON55, DroolsEditorType.SYMBOL);	
+            }
+            pushFollow(FOLLOW_data_type_in_decl_field1329);
+            data_type56=data_type();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type56.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:3: ( decl_metadata )*
+            loop23:
+            do {
+                int alt23=2;
+                int LA23_0 = input.LA(1);
+
+                if ( (LA23_0==AT) ) {
+                    alt23=1;
+                }
+
+
+                switch (alt23) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:3: decl_metadata
+            	    {
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1333);
+            	    decl_metadata57=decl_metadata();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata57.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop23;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: ID, decl_metadata, data_type, decl_field_initialization
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 623:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_ID.nextNode(), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:11: ( decl_field_initialization )?
+                if ( stream_decl_field_initialization.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_field_initialization.nextTree());
+
+                }
+                stream_decl_field_initialization.reset();
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:48: ( decl_metadata )*
+                while ( stream_decl_metadata.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
+
+                }
+                stream_decl_metadata.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "decl_field"
+
+    public static class decl_field_initialization_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "decl_field_initialization"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
+    public final DRLParser.decl_field_initialization_return decl_field_initialization() throws RecognitionException {
+        DRLParser.decl_field_initialization_return retval = new DRLParser.decl_field_initialization_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUALS58=null;
+        DRLParser.paren_chunk_return paren_chunk59 = null;
+
+
+        Object EQUALS58_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:4: EQUALS paren_chunk
+            {
+            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1361); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS58);
+
+            if ( state.backtracking==0 ) {
+              	emit(EQUALS58, DroolsEditorType.SYMBOL);	
+            }
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1367);
+            paren_chunk59=paren_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk59.getTree());
+
+
+            // AST REWRITE
+            // elements: paren_chunk, EQUALS
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 629:2: -> ^( EQUALS paren_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:5: ^( EQUALS paren_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "decl_field_initialization"
+
+    public static class template_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "template"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) ;
+    public final DRLParser.template_return template() throws RecognitionException {
+        DRLParser.template_return retval = new DRLParser.template_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token semi1=null;
+        Token semi2=null;
+        DRLParser.end_key_return end = null;
+
+        DRLParser.template_key_return template_key60 = null;
+
+        DRLParser.template_id_return template_id61 = null;
+
+        DRLParser.template_slot_return template_slot62 = null;
+
+
+        Object semi1_tree=null;
+        Object semi2_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
+        RewriteRuleSubtreeStream stream_template_id=new RewriteRuleSubtreeStream(adaptor,"rule template_id");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
+        RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
+         pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:635:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )?
+            {
+            if ( state.backtracking==0 ) {
+              	beginSentence(DroolsSentenceType.TEMPLATE);	
+            }
+            pushFollow(FOLLOW_template_key_in_template1404);
+            template_key60=template_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_template_key.add(template_key60.getTree());
+            pushFollow(FOLLOW_template_id_in_template1406);
+            template_id61=template_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_template_id.add(template_id61.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:8: (semi1= SEMICOLON )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==SEMICOLON) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:8: semi1= SEMICOLON
+                    {
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1413); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(semi1, DroolsEditorType.SYMBOL);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:640:3: ( template_slot )+
+            int cnt25=0;
+            loop25:
+            do {
+                int alt25=2;
+                int LA25_0 = input.LA(1);
+
+                if ( (LA25_0==ID) ) {
+                    int LA25_1 = input.LA(2);
+
+                    if ( (LA25_1==DOT||LA25_1==LEFT_SQUARE) ) {
+                        alt25=1;
+                    }
+                    else if ( (LA25_1==ID) ) {
+                        int LA25_3 = input.LA(3);
+
+                        if ( (LA25_3==ID) ) {
+                            int LA25_5 = input.LA(4);
+
+                            if ( (!((((validateIdentifierKey(DroolsSoftKeywords.END)))))) ) {
+                                alt25=1;
+                            }
+
+
+                        }
+                        else if ( (LA25_3==SEMICOLON) ) {
+                            alt25=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt25) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:640:3: template_slot
+            	    {
+            	    pushFollow(FOLLOW_template_slot_in_template1421);
+            	    template_slot62=template_slot();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_template_slot.add(template_slot62.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt25 >= 1 ) break loop25;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(25, input);
+                        throw eee;
+                }
+                cnt25++;
+            } while (true);
+
+            pushFollow(FOLLOW_end_key_in_template1428);
+            end=end_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:20: (semi2= SEMICOLON )?
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( (LA26_0==SEMICOLON) ) {
+                alt26=1;
+            }
+            switch (alt26) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:20: semi2= SEMICOLON
+                    {
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1432); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(semi2, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: end_key, template_slot, template_id, template_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 643:3: -> ^( template_key template_id ( template_slot )+ end_key )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:643:6: ^( template_key template_id ( template_slot )+ end_key )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_template_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_template_id.nextTree());
+                if ( !(stream_template_slot.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_template_slot.hasNext() ) {
+                    adaptor.addChild(root_1, stream_template_slot.nextTree());
+
+                }
+                stream_template_slot.reset();
+                adaptor.addChild(root_1, stream_end_key.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "template"
+
+    public static class template_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "template_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    public final DRLParser.template_id_return template_id() throws RecognitionException {
+        DRLParser.template_id_return retval = new DRLParser.template_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            int alt27=2;
+            int LA27_0 = input.LA(1);
+
+            if ( (LA27_0==ID) ) {
+                alt27=1;
+            }
+            else if ( (LA27_0==STRING) ) {
+                alt27=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 27, 0, input);
+
+                throw nvae;
+            }
+            switch (alt27) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:5: id= ID
+                    {
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1465); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 649:68: -> VT_TEMPLATE_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:5: id= STRING
+                    {
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1481); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 652:68: -> VT_TEMPLATE_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "template_id"
+
+    public static class template_slot_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "template_slot"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:655:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    public final DRLParser.template_slot_return template_slot() throws RecognitionException {
+        DRLParser.template_slot_return retval = new DRLParser.template_slot_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SEMICOLON65=null;
+        DRLParser.data_type_return data_type63 = null;
+
+        DRLParser.slot_id_return slot_id64 = null;
+
+
+        Object SEMICOLON65_tree=null;
+        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
+        RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
+        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:5: data_type slot_id ( SEMICOLON )?
+            {
+            pushFollow(FOLLOW_data_type_in_template_slot1501);
+            data_type63=data_type();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_data_type.add(data_type63.getTree());
+            pushFollow(FOLLOW_slot_id_in_template_slot1503);
+            slot_id64=slot_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_slot_id.add(slot_id64.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:23: ( SEMICOLON )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==SEMICOLON) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:23: SEMICOLON
+                    {
+                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1505); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON65);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON65, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: slot_id, data_type
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 658:3: -> ^( VT_SLOT data_type slot_id )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:658:6: ^( VT_SLOT data_type slot_id )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
+
+                adaptor.addChild(root_1, stream_data_type.nextTree());
+                adaptor.addChild(root_1, stream_slot_id.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "template_slot"
+
+    public static class slot_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "slot_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    public final DRLParser.slot_id_return slot_id() throws RecognitionException {
+        DRLParser.slot_id_return retval = new DRLParser.slot_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:4: id= ID
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1534); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.IDENTIFIER);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 664:3: -> VT_SLOT_ID[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "slot_id"
+
+    public static class rule_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rule"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
+    public final DRLParser.rule_return rule() throws RecognitionException {
+        DRLParser.rule_return retval = new DRLParser.rule_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.rule_key_return rule_key66 = null;
+
+        DRLParser.rule_id_return rule_id67 = null;
+
+        DRLParser.extend_key_return extend_key68 = null;
+
+        DRLParser.rule_id_return rule_id69 = null;
+
+        DRLParser.decl_metadata_return decl_metadata70 = null;
+
+        DRLParser.rule_attributes_return rule_attributes71 = null;
+
+        DRLParser.when_part_return when_part72 = null;
+
+        DRLParser.rhs_chunk_return rhs_chunk73 = null;
+
+
+        RewriteRuleSubtreeStream stream_rule_id=new RewriteRuleSubtreeStream(adaptor,"rule rule_id");
+        RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
+        RewriteRuleSubtreeStream stream_rule_attributes=new RewriteRuleSubtreeStream(adaptor,"rule rule_attributes");
+        RewriteRuleSubtreeStream stream_rule_key=new RewriteRuleSubtreeStream(adaptor,"rule rule_key");
+        RewriteRuleSubtreeStream stream_extend_key=new RewriteRuleSubtreeStream(adaptor,"rule extend_key");
+        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
+        RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
+         boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:670:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:671:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            {
+            if ( state.backtracking==0 ) {
+              	beginSentence(DroolsSentenceType.RULE);	
+            }
+            pushFollow(FOLLOW_rule_key_in_rule1571);
+            rule_key66=rule_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_key.add(rule_key66.getTree());
+            pushFollow(FOLLOW_rule_id_in_rule1573);
+            rule_id67=rule_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_id.add(rule_id67.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:3: ( extend_key rule_id )?
+            int alt29=2;
+            alt29 = dfa29.predict(input);
+            switch (alt29) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:4: extend_key rule_id
+                    {
+                    pushFollow(FOLLOW_extend_key_in_rule1582);
+                    extend_key68=extend_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_extend_key.add(extend_key68.getTree());
+                    pushFollow(FOLLOW_rule_id_in_rule1584);
+                    rule_id69=rule_id();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_rule_id.add(rule_id69.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:25: ( decl_metadata )*
+            loop30:
+            do {
+                int alt30=2;
+                int LA30_0 = input.LA(1);
+
+                if ( (LA30_0==AT) ) {
+                    alt30=1;
+                }
+
+
+                switch (alt30) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:25: decl_metadata
+            	    {
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1588);
+            	    decl_metadata70=decl_metadata();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata70.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop30;
+                }
+            } while (true);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:40: ( rule_attributes )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( (LA31_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:40: rule_attributes
+                    {
+                    pushFollow(FOLLOW_rule_attributes_in_rule1591);
+                    rule_attributes71=rule_attributes();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_rule_attributes.add(rule_attributes71.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:57: ( when_part )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==WHEN) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:57: when_part
+                    {
+                    pushFollow(FOLLOW_when_part_in_rule1594);
+                    when_part72=when_part();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_when_part.add(when_part72.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_rhs_chunk_in_rule1597);
+            rhs_chunk73=rhs_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rhs_chunk.add(rhs_chunk73.getTree());
+
+
+            // AST REWRITE
+            // elements: rule_id, rule_key, when_part, rule_attributes, rule_id, extend_key, rhs_chunk, decl_metadata
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 675:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_rule_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_rule_id.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:25: ( ^( extend_key rule_id ) )?
+                if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:25: ^( extend_key rule_id )
+                    {
+                    Object root_2 = (Object)adaptor.nil();
+                    root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
+
+                    adaptor.addChild(root_2, stream_rule_id.nextTree());
+
+                    adaptor.addChild(root_1, root_2);
+                    }
+
+                }
+                stream_rule_id.reset();
+                stream_extend_key.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:48: ( decl_metadata )*
+                while ( stream_decl_metadata.hasNext() ) {
+                    adaptor.addChild(root_1, stream_decl_metadata.nextTree());
+
+                }
+                stream_decl_metadata.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:63: ( rule_attributes )?
+                if ( stream_rule_attributes.hasNext() ) {
+                    adaptor.addChild(root_1, stream_rule_attributes.nextTree());
+
+                }
+                stream_rule_attributes.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:80: ( when_part )?
+                if ( stream_when_part.hasNext() ) {
+                    adaptor.addChild(root_1, stream_when_part.nextTree());
+
+                }
+                stream_when_part.reset();
+                adaptor.addChild(root_1, stream_rhs_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); isFailed = false; 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && isFailed) {
+            		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+            			input.LA(5) == MISC && input.LA(6) == ID && 
+            			validateLT(1, DroolsSoftKeywords.LOCK) && validateLT(3, DroolsSoftKeywords.ON) &&
+            			validateLT(5, DroolsSoftKeywords.ACTIVE)){
+            			emit(input.LT(1), DroolsEditorType.KEYWORD);
+            			emit(input.LT(2), DroolsEditorType.KEYWORD);
+            			emit(input.LT(3), DroolsEditorType.KEYWORD);
+            			emit(input.LT(4), DroolsEditorType.KEYWORD);
+            			emit(input.LT(5), DroolsEditorType.KEYWORD);
+            			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+            			input.consume();
+            			input.consume();
+            			input.consume();
+            			input.consume();
+            			input.consume();
+            		} else if (input.LA(4) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+            			(	(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+            				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EXPIRES)) ||
+            				(validateLT(1, DroolsSoftKeywords.NO) && validateLT(3, DroolsSoftKeywords.LOOP)) ||
+            				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EFFECTIVE)) ||
+            				(validateLT(1, DroolsSoftKeywords.AUTO) && validateLT(3, DroolsSoftKeywords.FOCUS)) ||
+            				(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+            				(validateLT(1, DroolsSoftKeywords.RULEFLOW) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+            				(validateLT(1, DroolsSoftKeywords.AGENDA) && validateLT(3, DroolsSoftKeywords.GROUP))	)){
+            			emit(input.LT(1), DroolsEditorType.KEYWORD);
+            			emit(input.LT(2), DroolsEditorType.KEYWORD);
+            			emit(input.LT(3), DroolsEditorType.KEYWORD);
+            			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+            			input.consume();
+            			input.consume();
+            			input.consume();
+            		} else if (input.LA(2) == EOF && input.LA(1) == ID && 
+            				(validateLT(1, DroolsSoftKeywords.DIALECT) || validateLT(1, DroolsSoftKeywords.ENABLED) ||
+            				 validateLT(1, DroolsSoftKeywords.SALIENCE) || validateLT(1, DroolsSoftKeywords.DURATION))){
+            			emit(input.LT(1), DroolsEditorType.KEYWORD);
+            			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+            			input.consume();
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "rule"
+
+    public static class when_part_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "when_part"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:720:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    public final DRLParser.when_part_return when_part() throws RecognitionException {
+        DRLParser.when_part_return retval = new DRLParser.when_part_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token WHEN74=null;
+        Token COLON75=null;
+        DRLParser.normal_lhs_block_return normal_lhs_block76 = null;
+
+
+        Object WHEN74_tree=null;
+        Object COLON75_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
+        RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:721:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:721:5: WHEN ( COLON )? normal_lhs_block
+            {
+            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1641); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_WHEN.add(WHEN74);
+
+            if ( state.backtracking==0 ) {
+              	emit(WHEN74, DroolsEditorType.KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:722:3: ( COLON )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==COLON) ) {
+                alt33=1;
+            }
+            switch (alt33) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:722:3: COLON
+                    {
+                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1647); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON75);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(COLON75, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+            }
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1657);
+            normal_lhs_block76=normal_lhs_block();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block76.getTree());
+
+
+            // AST REWRITE
+            // elements: normal_lhs_block, WHEN
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 725:2: -> WHEN normal_lhs_block
+            {
+                adaptor.addChild(root_0, stream_WHEN.nextNode());
+                adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "when_part"
+
+    public static class rule_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rule_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    public final DRLParser.rule_id_return rule_id() throws RecognitionException {
+        DRLParser.rule_id_return retval = new DRLParser.rule_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:729:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
+
+            if ( (LA34_0==ID) ) {
+                alt34=1;
+            }
+            else if ( (LA34_0==STRING) ) {
+                alt34=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 34, 0, input);
+
+                throw nvae;
+            }
+            switch (alt34) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:729:5: id= ID
+                    {
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1678); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 731:64: -> VT_RULE_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:5: id= STRING
+                    {
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1694); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(id);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(id, DroolsEditorType.IDENTIFIER);
+                      		setParaphrasesValue(DroolsParaphraseTypes.RULE, (id!=null?id.getText():null));	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 734:64: -> VT_RULE_ID[$id]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "rule_id"
+
+    public static class rule_attributes_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rule_attributes"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:737:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    public final DRLParser.rule_attributes_return rule_attributes() throws RecognitionException {
+        DRLParser.rule_attributes_return retval = new DRLParser.rule_attributes_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token COLON78=null;
+        Token COMMA80=null;
+        DRLParser.rule_attribute_return attr = null;
+
+        DRLParser.attributes_key_return attributes_key77 = null;
+
+        DRLParser.rule_attribute_return rule_attribute79 = null;
+
+
+        Object COLON78_tree=null;
+        Object COMMA80_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
+        RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:4: ( attributes_key COLON )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                int LA35_1 = input.LA(2);
+
+                if ( (LA35_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {
+                    alt35=1;
+                }
+            }
+            switch (alt35) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:6: attributes_key COLON
+                    {
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1715);
+                    attributes_key77=attributes_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key77.getTree());
+                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1717); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON78);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(COLON78, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1727);
+            rule_attribute79=rule_attribute();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:18: ( ( COMMA )? attr= rule_attribute )*
+            loop37:
+            do {
+                int alt37=2;
+                int LA37_0 = input.LA(1);
+
+                if ( (LA37_0==ID||LA37_0==COMMA) ) {
+                    alt37=1;
+                }
+
+
+                switch (alt37) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:20: ( COMMA )? attr= rule_attribute
+            	    {
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:20: ( COMMA )?
+            	    int alt36=2;
+            	    int LA36_0 = input.LA(1);
+
+            	    if ( (LA36_0==COMMA) ) {
+            	        alt36=1;
+            	    }
+            	    switch (alt36) {
+            	        case 1 :
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:20: COMMA
+            	            {
+            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1731); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA80);
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
+            	    }
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1738);
+            	    attr=rule_attribute();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_rule_attribute.add(attr.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop37;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: attributes_key, rule_attribute
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 740:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:27: ( attributes_key )?
+                if ( stream_attributes_key.hasNext() ) {
+                    adaptor.addChild(root_1, stream_attributes_key.nextTree());
+
+                }
+                stream_attributes_key.reset();
+                if ( !(stream_rule_attribute.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_rule_attribute.hasNext() ) {
+                    adaptor.addChild(root_1, stream_rule_attribute.nextTree());
+
+                }
+                stream_rule_attribute.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "rule_attributes"
+
+    public static class rule_attribute_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rule_attribute"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );
+    public final DRLParser.rule_attribute_return rule_attribute() throws RecognitionException {
+        DRLParser.rule_attribute_return retval = new DRLParser.rule_attribute_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.salience_return salience81 = null;
+
+        DRLParser.no_loop_return no_loop82 = null;
+
+        DRLParser.agenda_group_return agenda_group83 = null;
+
+        DRLParser.duration_return duration84 = null;
+
+        DRLParser.activation_group_return activation_group85 = null;
+
+        DRLParser.auto_focus_return auto_focus86 = null;
+
+        DRLParser.date_effective_return date_effective87 = null;
+
+        DRLParser.date_expires_return date_expires88 = null;
+
+        DRLParser.enabled_return enabled89 = null;
+
+        DRLParser.ruleflow_group_return ruleflow_group90 = null;
+
+        DRLParser.lock_on_active_return lock_on_active91 = null;
+
+        DRLParser.dialect_return dialect92 = null;
+
+        DRLParser.prior_return prior93 = null;
+
+        DRLParser.entail_mode_return entail_mode94 = null;
+
+        DRLParser.filter_return filter95 = null;
+
+
+
+         boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter )
+            int alt38=15;
+            alt38 = dfa38.predict(input);
+            switch (alt38) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:4: salience
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_salience_in_rule_attribute1777);
+                    salience81=salience();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, salience81.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:4: no_loop
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1783);
+                    no_loop82=no_loop();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, no_loop82.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:748:4: agenda_group
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1788);
+                    agenda_group83=agenda_group();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, agenda_group83.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:4: duration
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_duration_in_rule_attribute1795);
+                    duration84=duration();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, duration84.getTree());
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:4: activation_group
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1802);
+                    activation_group85=activation_group();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, activation_group85.getTree());
+
+                    }
+                    break;
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:4: auto_focus
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1808);
+                    auto_focus86=auto_focus();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, auto_focus86.getTree());
+
+                    }
+                    break;
+                case 7 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: date_effective
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1814);
+                    date_effective87=date_effective();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_effective87.getTree());
+
+                    }
+                    break;
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:4: date_expires
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1820);
+                    date_expires88=date_expires();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_expires88.getTree());
+
+                    }
+                    break;
+                case 9 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: enabled
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1826);
+                    enabled89=enabled();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, enabled89.getTree());
+
+                    }
+                    break;
+                case 10 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:4: ruleflow_group
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1832);
+                    ruleflow_group90=ruleflow_group();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ruleflow_group90.getTree());
+
+                    }
+                    break;
+                case 11 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: lock_on_active
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1838);
+                    lock_on_active91=lock_on_active();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lock_on_active91.getTree());
+
+                    }
+                    break;
+                case 12 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: dialect
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1843);
+                    dialect92=dialect();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dialect92.getTree());
+
+                    }
+                    break;
+                case 13 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: prior
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_prior_in_rule_attribute1849);
+                    prior93=prior();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, prior93.getTree());
+
+                    }
+                    break;
+                case 14 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: entail_mode
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1854);
+                    entail_mode94=entail_mode();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, entail_mode94.getTree());
+
+                    }
+                    break;
+                case 15 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: filter
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_filter_in_rule_attribute1859);
+                    filter95=filter();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, filter95.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); 
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && isFailed) {
+            		if (input.LA(2) == EOF && input.LA(1) == ID){
+            			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+            			input.consume();
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "rule_attribute"
+
+    public static class date_effective_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "date_effective"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:770:1: date_effective : date_effective_key STRING ;
+    public final DRLParser.date_effective_return date_effective() throws RecognitionException {
+        DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING97=null;
+        DRLParser.date_effective_key_return date_effective_key96 = null;
+
+
+        Object STRING97_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:2: ( date_effective_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:4: date_effective_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1873);
+            date_effective_key96=date_effective_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key96.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1878); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING97_tree = (Object)adaptor.create(STRING97);
+            adaptor.addChild(root_0, STRING97_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING97, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "date_effective"
+
+    public static class date_expires_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "date_expires"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:1: date_expires : date_expires_key STRING ;
+    public final DRLParser.date_expires_return date_expires() throws RecognitionException {
+        DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING99=null;
+        DRLParser.date_expires_key_return date_expires_key98 = null;
+
+
+        Object STRING99_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:2: ( date_expires_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:4: date_expires_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1892);
+            date_expires_key98=date_expires_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key98.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1897); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING99_tree = (Object)adaptor.create(STRING99);
+            adaptor.addChild(root_0, STRING99_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING99, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "date_expires"
+
+    public static class enabled_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "enabled"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    public final DRLParser.enabled_return enabled() throws RecognitionException {
+        DRLParser.enabled_return retval = new DRLParser.enabled_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token BOOL101=null;
+        DRLParser.enabled_key_return enabled_key100 = null;
+
+        DRLParser.paren_chunk_return paren_chunk102 = null;
+
+
+        Object BOOL101_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:4: enabled_key ( BOOL | paren_chunk )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_enabled_key_in_enabled1912);
+            enabled_key100=enabled_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key100.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:6: ( BOOL | paren_chunk )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
+
+            if ( (LA39_0==BOOL) ) {
+                alt39=1;
+            }
+            else if ( (LA39_0==LEFT_PAREN) ) {
+                alt39=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 39, 0, input);
+
+                throw nvae;
+            }
+            switch (alt39) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:8: BOOL
+                    {
+                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1925); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL101_tree = (Object)adaptor.create(BOOL101);
+                    adaptor.addChild(root_0, BOOL101_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(BOOL101, DroolsEditorType.BOOLEAN_CONST );	
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:8: paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1936);
+                    paren_chunk102=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk102.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "enabled"
+
+    public static class salience_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "salience"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:1: salience : salience_key ( INT | paren_chunk ) ;
+    public final DRLParser.salience_return salience() throws RecognitionException {
+        DRLParser.salience_return retval = new DRLParser.salience_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token INT104=null;
+        DRLParser.salience_key_return salience_key103 = null;
+
+        DRLParser.paren_chunk_return paren_chunk105 = null;
+
+
+        Object INT104_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:2: ( salience_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:4: salience_key ( INT | paren_chunk )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_salience_key_in_salience1956);
+            salience_key103=salience_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key103.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:3: ( INT | paren_chunk )
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==INT) ) {
+                alt40=1;
+            }
+            else if ( (LA40_0==LEFT_PAREN) ) {
+                alt40=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+            switch (alt40) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:5: INT
+                    {
+                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience1965); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    INT104_tree = (Object)adaptor.create(INT104);
+                    adaptor.addChild(root_0, INT104_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(INT104, DroolsEditorType.NUMERIC_CONST );	
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:5: paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_salience1974);
+                    paren_chunk105=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk105.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "salience"
+
+    public static class no_loop_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "no_loop"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:1: no_loop : no_loop_key ( BOOL )? ;
+    public final DRLParser.no_loop_return no_loop() throws RecognitionException {
+        DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token BOOL107=null;
+        DRLParser.no_loop_key_return no_loop_key106 = null;
+
+
+        Object BOOL107_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:2: ( no_loop_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:4: no_loop_key ( BOOL )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1989);
+            no_loop_key106=no_loop_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key106.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:66: ( BOOL )?
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==BOOL) ) {
+                alt41=1;
+            }
+            switch (alt41) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:66: BOOL
+                    {
+                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1994); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL107_tree = (Object)adaptor.create(BOOL107);
+                    adaptor.addChild(root_0, BOOL107_tree);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(BOOL107, DroolsEditorType.BOOLEAN_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "no_loop"
+
+    public static class auto_focus_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "auto_focus"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:1: auto_focus : auto_focus_key ( BOOL )? ;
+    public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
+        DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token BOOL109=null;
+        DRLParser.auto_focus_key_return auto_focus_key108 = null;
+
+
+        Object BOOL109_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:2: ( auto_focus_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:4: auto_focus_key ( BOOL )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2009);
+            auto_focus_key108=auto_focus_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key108.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:69: ( BOOL )?
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==BOOL) ) {
+                alt42=1;
+            }
+            switch (alt42) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:69: BOOL
+                    {
+                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2014); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL109_tree = (Object)adaptor.create(BOOL109);
+                    adaptor.addChild(root_0, BOOL109_tree);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(BOOL109, DroolsEditorType.BOOLEAN_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "auto_focus"
+
+    public static class activation_group_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "activation_group"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:1: activation_group : activation_group_key STRING ;
+    public final DRLParser.activation_group_return activation_group() throws RecognitionException {
+        DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING111=null;
+        DRLParser.activation_group_key_return activation_group_key110 = null;
+
+
+        Object STRING111_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:2: ( activation_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:4: activation_group_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_activation_group_key_in_activation_group2031);
+            activation_group_key110=activation_group_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key110.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2036); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING111_tree = (Object)adaptor.create(STRING111);
+            adaptor.addChild(root_0, STRING111_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING111, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "activation_group"
+
+    public static class ruleflow_group_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "ruleflow_group"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:1: ruleflow_group : ruleflow_group_key STRING ;
+    public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
+        DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING113=null;
+        DRLParser.ruleflow_group_key_return ruleflow_group_key112 = null;
+
+
+        Object STRING113_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:2: ( ruleflow_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:4: ruleflow_group_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2050);
+            ruleflow_group_key112=ruleflow_group_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key112.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2055); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING113_tree = (Object)adaptor.create(STRING113);
+            adaptor.addChild(root_0, STRING113_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING113, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "ruleflow_group"
+
+    public static class agenda_group_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "agenda_group"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:1: agenda_group : agenda_group_key STRING ;
+    public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
+        DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING115=null;
+        DRLParser.agenda_group_key_return agenda_group_key114 = null;
+
+
+        Object STRING115_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:2: ( agenda_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:4: agenda_group_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2069);
+            agenda_group_key114=agenda_group_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key114.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2074); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING115_tree = (Object)adaptor.create(STRING115);
+            adaptor.addChild(root_0, STRING115_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING115, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "agenda_group"
+
+    public static class duration_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "duration"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:1: duration : duration_key ( INT | paren_chunk ) ;
+    public final DRLParser.duration_return duration() throws RecognitionException {
+        DRLParser.duration_return retval = new DRLParser.duration_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token INT117=null;
+        DRLParser.duration_key_return duration_key116 = null;
+
+        DRLParser.paren_chunk_return paren_chunk118 = null;
+
+
+        Object INT117_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:2: ( duration_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:4: duration_key ( INT | paren_chunk )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_duration_key_in_duration2088);
+            duration_key116=duration_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key116.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:6: ( INT | paren_chunk )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==INT) ) {
+                alt43=1;
+            }
+            else if ( (LA43_0==LEFT_PAREN) ) {
+                alt43=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+            switch (alt43) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:8: INT
+                    {
+                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2101); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    INT117_tree = (Object)adaptor.create(INT117);
+                    adaptor.addChild(root_0, INT117_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(INT117, DroolsEditorType.NUMERIC_CONST );	
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:822:8: paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_duration2112);
+                    paren_chunk118=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk118.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "duration"
+
+    public static class dialect_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "dialect"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:1: dialect : dialect_key STRING ;
+    public final DRLParser.dialect_return dialect() throws RecognitionException {
+        DRLParser.dialect_return retval = new DRLParser.dialect_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING120=null;
+        DRLParser.dialect_key_return dialect_key119 = null;
+
+
+        Object STRING120_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:2: ( dialect_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:4: dialect_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_dialect_key_in_dialect2132);
+            dialect_key119=dialect_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key119.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2137); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING120_tree = (Object)adaptor.create(STRING120);
+            adaptor.addChild(root_0, STRING120_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(STRING120, DroolsEditorType.STRING_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "dialect"
+
+    public static class lock_on_active_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lock_on_active"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
+        DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token BOOL122=null;
+        DRLParser.lock_on_active_key_return lock_on_active_key121 = null;
+
+
+        Object BOOL122_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:2: ( lock_on_active_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:4: lock_on_active_key ( BOOL )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2155);
+            lock_on_active_key121=lock_on_active_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key121.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:73: ( BOOL )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==BOOL) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:73: BOOL
+                    {
+                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2160); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL122_tree = (Object)adaptor.create(BOOL122);
+                    adaptor.addChild(root_0, BOOL122_tree);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(BOOL122, DroolsEditorType.BOOLEAN_CONST );	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lock_on_active"
+
+    public static class prior_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "prior"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:1: prior : prior_key paren_chunk ;
+    public final DRLParser.prior_return prior() throws RecognitionException {
+        DRLParser.prior_return retval = new DRLParser.prior_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.prior_key_return prior_key123 = null;
+
+        DRLParser.paren_chunk_return paren_chunk124 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:3: ( prior_key paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:5: prior_key paren_chunk
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_prior_key_in_prior2177);
+            prior_key123=prior_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(prior_key123.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+               emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
+            }
+            pushFollow(FOLLOW_paren_chunk_in_prior2182);
+            paren_chunk124=paren_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk124.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "prior"
+
+    public static class entail_mode_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entail_mode"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:1: entail_mode : entail_mode_key STRING ;
+    public final DRLParser.entail_mode_return entail_mode() throws RecognitionException {
+        DRLParser.entail_mode_return retval = new DRLParser.entail_mode_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING126=null;
+        DRLParser.entail_mode_key_return entail_mode_key125 = null;
+
+
+        Object STRING126_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:3: ( entail_mode_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:5: entail_mode_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2199);
+            entail_mode_key125=entail_mode_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(entail_mode_key125.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+               emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
+            }
+            STRING126=(Token)match(input,STRING,FOLLOW_STRING_in_entail_mode2204); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING126_tree = (Object)adaptor.create(STRING126);
+            adaptor.addChild(root_0, STRING126_tree);
+            }
+            if ( state.backtracking==0 ) {
+               emit(STRING126, DroolsEditorType.STRING_CONST ); 
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entail_mode"
+
+    public static class filter_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "filter"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:1: filter : filter_key STRING ;
+    public final DRLParser.filter_return filter() throws RecognitionException {
+        DRLParser.filter_return retval = new DRLParser.filter_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING128=null;
+        DRLParser.filter_key_return filter_key127 = null;
+
+
+        Object STRING128_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:3: ( filter_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:5: filter_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_filter_key_in_filter2226);
+            filter_key127=filter_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(filter_key127.getTree(), root_0);
+            if ( state.backtracking==0 ) {
+               emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
+            }
+            STRING128=(Token)match(input,STRING,FOLLOW_STRING_in_filter2231); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            STRING128_tree = (Object)adaptor.create(STRING128);
+            adaptor.addChild(root_0, STRING128_tree);
+            }
+            if ( state.backtracking==0 ) {
+               emit(STRING128, DroolsEditorType.STRING_CONST ); 
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "filter"
+
+    public static class normal_lhs_block_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "normal_lhs_block"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:854:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
+        DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.lhs_return lhs129 = null;
+
+
+        RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: ( lhs )*
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: ( lhs )*
+            loop45:
+            do {
+                int alt45=2;
+                int LA45_0 = input.LA(1);
+
+                if ( (LA45_0==ID) ) {
+                    int LA45_1 = input.LA(2);
+
+                    if ( (!((((validateIdentifierKey(DroolsSoftKeywords.END)))))) ) {
+                        alt45=1;
+                    }
+
+
+                }
+                else if ( (LA45_0==LEFT_PAREN) ) {
+                    alt45=1;
+                }
+
+
+                switch (alt45) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: lhs
+            	    {
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2251);
+            	    lhs129=lhs();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_lhs.add(lhs129.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop45;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: lhs
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 856:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:23: ( lhs )*
+                while ( stream_lhs.hasNext() ) {
+                    adaptor.addChild(root_1, stream_lhs.nextTree());
+
+                }
+                stream_lhs.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "normal_lhs_block"
+
+    public static class lhs_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:1: lhs : lhs_or ;
+    public final DRLParser.lhs_return lhs() throws RecognitionException {
+        DRLParser.lhs_return retval = new DRLParser.lhs_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.lhs_or_return lhs_or130 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:5: ( lhs_or )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:7: lhs_or
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_lhs_or_in_lhs2272);
+            lhs_or130=lhs_or();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or130.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs"
+
+    public static class lhs_or_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_or"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:1: lhs_or : ( ( LEFT_PAREN or_key ( constr_param_set )? )=> LEFT_PAREN or= or_key ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_param_set )? )=> LEFT_PAREN equiv= equiv_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_param_set )? )=> LEFT_PAREN xor= xor_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_param_set )? | DOUBLE_PIPE )=> (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) );
+    public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
+        DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token pipe=null;
+        Token LEFT_PAREN131=null;
+        Token RIGHT_PAREN134=null;
+        Token LEFT_PAREN135=null;
+        Token RIGHT_PAREN139=null;
+        Token LEFT_PAREN140=null;
+        Token RIGHT_PAREN144=null;
+        DRLParser.or_key_return or = null;
+
+        DRLParser.equiv_key_return equiv = null;
+
+        DRLParser.xor_key_return xor = null;
+
+        DRLParser.or_key_return value = null;
+
+        DRLParser.constr_param_set_return constr_param_set132 = null;
+
+        DRLParser.lhs_and_return lhs_and133 = null;
+
+        DRLParser.constr_param_set_return constr_param_set136 = null;
+
+        DRLParser.lhs_and_return lhs_and137 = null;
+
+        DRLParser.lhs_and_return lhs_and138 = null;
+
+        DRLParser.constr_param_set_return constr_param_set141 = null;
+
+        DRLParser.lhs_and_return lhs_and142 = null;
+
+        DRLParser.lhs_and_return lhs_and143 = null;
+
+        DRLParser.lhs_and_return lhs_and145 = null;
+
+        DRLParser.constr_param_set_return constr_param_set146 = null;
+
+        DRLParser.lhs_and_return lhs_and147 = null;
+
+        DRLParser.hedge_return hedge148 = null;
+
+        DRLParser.lhs_or_return lhs_or149 = null;
+
+
+        Object pipe_tree=null;
+        Object LEFT_PAREN131_tree=null;
+        Object RIGHT_PAREN134_tree=null;
+        Object LEFT_PAREN135_tree=null;
+        Object RIGHT_PAREN139_tree=null;
+        Object LEFT_PAREN140_tree=null;
+        Object RIGHT_PAREN144_tree=null;
+        RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_xor_key=new RewriteRuleSubtreeStream(adaptor,"rule xor_key");
+        RewriteRuleSubtreeStream stream_hedge=new RewriteRuleSubtreeStream(adaptor,"rule hedge");
+        RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
+        RewriteRuleSubtreeStream stream_equiv_key=new RewriteRuleSubtreeStream(adaptor,"rule equiv_key");
+        RewriteRuleSubtreeStream stream_lhs_and=new RewriteRuleSubtreeStream(adaptor,"rule lhs_and");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+
+        	Token orToken = null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:3: ( ( LEFT_PAREN or_key ( constr_param_set )? )=> LEFT_PAREN or= or_key ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_param_set )? )=> LEFT_PAREN equiv= equiv_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_param_set )? )=> LEFT_PAREN xor= xor_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_param_set )? | DOUBLE_PIPE )=> (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
+            int alt53=5;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==LEFT_PAREN) ) {
+                int LA53_1 = input.LA(2);
+
+                if ( (synpred1_DRL()) ) {
+                    alt53=1;
+                }
+                else if ( (synpred2_DRL()) ) {
+                    alt53=2;
+                }
+                else if ( (synpred3_DRL()) ) {
+                    alt53=3;
+                }
+                else if ( (true) ) {
+                    alt53=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 53, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA53_0==ID) ) {
+                int LA53_2 = input.LA(2);
+
+                if ( (!((((validateIdentifierKey(DroolsSoftKeywords.VERY)))))) ) {
+                    alt53=4;
+                }
+                else if ( (((validateIdentifierKey(DroolsSoftKeywords.VERY)))) ) {
+                    alt53=5;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 53, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 53, 0, input);
+
+                throw nvae;
+            }
+            switch (alt53) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:5: ( LEFT_PAREN or_key ( constr_param_set )? )=> LEFT_PAREN or= or_key ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN
+                    {
+                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2299); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN131);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN131, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_or_key_in_lhs_or2309);
+                    or=or_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_or_key.add(or.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:4: ( constr_param_set )?
+                    int alt46=2;
+                    int LA46_0 = input.LA(1);
+
+                    if ( (LA46_0==AT) ) {
+                        alt46=1;
+                    }
+                    switch (alt46) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:4: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_lhs_or2315);
+                            constr_param_set132=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set132.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
+                    }
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:4: ( lhs_and )+
+                    int cnt47=0;
+                    loop47:
+                    do {
+                        int alt47=2;
+                        int LA47_0 = input.LA(1);
+
+                        if ( (LA47_0==ID||LA47_0==LEFT_PAREN) ) {
+                            alt47=1;
+                        }
+
+
+                        switch (alt47) {
+                    	case 1 :
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:4: lhs_and
+                    	    {
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2326);
+                    	    lhs_and133=lhs_and();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and133.getTree());
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt47 >= 1 ) break loop47;
+                    	    if (state.backtracking>0) {state.failed=true; return retval;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(47, input);
+                                throw eee;
+                        }
+                        cnt47++;
+                    } while (true);
+
+                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2332); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN134);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN134, DroolsEditorType.SYMBOL);	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: constr_param_set, RIGHT_PAREN, lhs_and
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 872:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:6: ^( VT_OR_PREFIX[$or.start] ( constr_param_set )? ( lhs_and )+ RIGHT_PAREN )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_PREFIX, (or!=null?((Token)or.start):null)), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:32: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        if ( !(stream_lhs_and.hasNext()) ) {
+                            throw new RewriteEarlyExitException();
+                        }
+                        while ( stream_lhs_and.hasNext() ) {
+                            adaptor.addChild(root_1, stream_lhs_and.nextTree());
+
+                        }
+                        stream_lhs_and.reset();
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:4: ( LEFT_PAREN equiv_key ( constr_param_set )? )=> LEFT_PAREN equiv= equiv_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN
+                    {
+                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2376); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN135);
+
+                    if ( state.backtracking==0 ) {
+                       emit(LEFT_PAREN135, DroolsEditorType.SYMBOL); 
+                    }
+                    pushFollow(FOLLOW_equiv_key_in_lhs_or2389);
+                    equiv=equiv_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_equiv_key.add(equiv.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:7: ( constr_param_set )?
+                    int alt48=2;
+                    int LA48_0 = input.LA(1);
+
+                    if ( (LA48_0==AT) ) {
+                        alt48=1;
+                    }
+                    switch (alt48) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:7: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_lhs_or2397);
+                            constr_param_set136=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set136.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
+                    }
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2410);
+                    lhs_and137=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and137.getTree());
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2418);
+                    lhs_and138=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and138.getTree());
+                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2430); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN139);
+
+                    if ( state.backtracking==0 ) {
+                       emit(RIGHT_PAREN139, DroolsEditorType.SYMBOL);  
+                    }
+
+
+                    // AST REWRITE
+                    // elements: lhs_and, lhs_and, constr_param_set, RIGHT_PAREN
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 883:5: -> ^( VT_EQUIV[$equiv.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:883:8: ^( VT_EQUIV[$equiv.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EQUIV, (equiv!=null?((Token)equiv.start):null)), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:883:33: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:4: ( LEFT_PAREN xor_key ( constr_param_set )? )=> LEFT_PAREN xor= xor_key ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN
+                    {
+                    LEFT_PAREN140=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2475); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN140);
+
+                    if ( state.backtracking==0 ) {
+                       emit(LEFT_PAREN140, DroolsEditorType.SYMBOL); 
+                    }
+                    pushFollow(FOLLOW_xor_key_in_lhs_or2488);
+                    xor=xor_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_xor_key.add(xor.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:7: ( constr_param_set )?
+                    int alt49=2;
+                    int LA49_0 = input.LA(1);
+
+                    if ( (LA49_0==AT) ) {
+                        alt49=1;
+                    }
+                    switch (alt49) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:7: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_lhs_or2496);
+                            constr_param_set141=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set141.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
+                    }
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2509);
+                    lhs_and142=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and142.getTree());
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2517);
+                    lhs_and143=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and143.getTree());
+                    RIGHT_PAREN144=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2529); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN144);
+
+                    if ( state.backtracking==0 ) {
+                       emit(RIGHT_PAREN144, DroolsEditorType.SYMBOL);  
+                    }
+
+
+                    // AST REWRITE
+                    // elements: constr_param_set, lhs_and, RIGHT_PAREN, lhs_and
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 893:5: -> ^( VT_XOR[$xor.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:893:8: ^( VT_XOR[$xor.start] ( constr_param_set )? lhs_and lhs_and RIGHT_PAREN )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_XOR, (xor!=null?((Token)xor.start):null)), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:893:29: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_param_set )? | DOUBLE_PIPE )=> (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and ) )*
+                    {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:4: ( lhs_and -> lhs_and )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:5: lhs_and
+                    {
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2562);
+                    lhs_and145=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and145.getTree());
+
+
+                    // AST REWRITE
+                    // elements: lhs_and
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 896:13: -> lhs_and
+                    {
+                        adaptor.addChild(root_0, stream_lhs_and.nextTree());
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:3: ( ( or_key ( constr_param_set )? | DOUBLE_PIPE )=> (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and ) )*
+                    loop52:
+                    do {
+                        int alt52=2;
+                        int LA52_0 = input.LA(1);
+
+                        if ( (LA52_0==ID) ) {
+                            int LA52_1 = input.LA(2);
+
+                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
+                                alt52=1;
+                            }
+
+
+                        }
+                        else if ( (LA52_0==DOUBLE_PIPE) ) {
+                            int LA52_3 = input.LA(2);
+
+                            if ( (synpred4_DRL()) ) {
+                                alt52=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt52) {
+                    	case 1 :
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:5: ( or_key ( constr_param_set )? | DOUBLE_PIPE )=> (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE ) lhs_and
+                    	    {
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:47: (value= or_key ( constr_param_set )? | pipe= DOUBLE_PIPE )
+                    	    int alt51=2;
+                    	    int LA51_0 = input.LA(1);
+
+                    	    if ( (LA51_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    	        alt51=1;
+                    	    }
+                    	    else if ( (LA51_0==DOUBLE_PIPE) ) {
+                    	        alt51=2;
+                    	    }
+                    	    else {
+                    	        if (state.backtracking>0) {state.failed=true; return retval;}
+                    	        NoViableAltException nvae =
+                    	            new NoViableAltException("", 51, 0, input);
+
+                    	        throw nvae;
+                    	    }
+                    	    switch (alt51) {
+                    	        case 1 :
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:48: value= or_key ( constr_param_set )?
+                    	            {
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2588);
+                    	            value=or_key();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+                    	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:61: ( constr_param_set )?
+                    	            int alt50=2;
+                    	            int LA50_0 = input.LA(1);
+
+                    	            if ( (LA50_0==AT) ) {
+                    	                alt50=1;
+                    	            }
+                    	            switch (alt50) {
+                    	                case 1 :
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:61: constr_param_set
+                    	                    {
+                    	                    pushFollow(FOLLOW_constr_param_set_in_lhs_or2590);
+                    	                    constr_param_set146=constr_param_set();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return retval;
+                    	                    if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set146.getTree());
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
+                    	            if ( state.backtracking==0 ) {
+                    	              orToken = (value!=null?((Token)value.start):null);
+                    	            }
+
+                    	            }
+                    	            break;
+                    	        case 2 :
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:6: pipe= DOUBLE_PIPE
+                    	            {
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2603); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+
+                    	            if ( state.backtracking==0 ) {
+                    	              orToken = pipe; emit(pipe, DroolsEditorType.SYMBOL);
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    if ( state.backtracking==0 ) {
+                    	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
+                    	    }
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2614);
+                    	    lhs_and147=lhs_and();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and147.getTree());
+
+
+                    	    // AST REWRITE
+                    	    // elements: lhs_or, constr_param_set, lhs_and
+                    	    // token labels: 
+                    	    // rule labels: retval
+                    	    // token list labels: 
+                    	    // rule list labels: 
+                    	    if ( state.backtracking==0 ) {
+                    	    retval.tree = root_0;
+                    	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    	    root_0 = (Object)adaptor.nil();
+                    	    // 901:3: -> ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and )
+                    	    {
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:6: ^( VT_OR_INFIX[orToken] ( constr_param_set )? $lhs_or lhs_and )
+                    	        {
+                    	        Object root_1 = (Object)adaptor.nil();
+                    	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
+
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:29: ( constr_param_set )?
+                    	        if ( stream_constr_param_set.hasNext() ) {
+                    	            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                    	        }
+                    	        stream_constr_param_set.reset();
+                    	        adaptor.addChild(root_1, stream_retval.nextTree());
+                    	        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+
+                    	        adaptor.addChild(root_0, root_1);
+                    	        }
+
+                    	    }
+
+                    	    retval.tree = root_0;}
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop52;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:5: hedge lhs_or
+                    {
+                    pushFollow(FOLLOW_hedge_in_lhs_or2643);
+                    hedge148=hedge();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_hedge.add(hedge148.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_or2645);
+                    lhs_or149=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or149.getTree());
+
+
+                    // AST REWRITE
+                    // elements: lhs_or, hedge
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 904:5: -> ^( hedge lhs_or )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:8: ^( hedge lhs_or )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_hedge.nextNode(), root_1);
+
+                        adaptor.addChild(root_1, stream_lhs_or.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_or"
+
+    public static class hedge_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "hedge"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:1: hedge : value= very_key -> VT_HEDGE[type] ;
+    public final DRLParser.hedge_return hedge() throws RecognitionException {
+        DRLParser.hedge_return retval = new DRLParser.hedge_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.very_key_return value = null;
+
+
+        RewriteRuleSubtreeStream stream_very_key=new RewriteRuleSubtreeStream(adaptor,"rule very_key");
+
+          Token type = null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:3: (value= very_key -> VT_HEDGE[type] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:5: value= very_key
+            {
+            pushFollow(FOLLOW_very_key_in_hedge2687);
+            value=very_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_very_key.add(value.getTree());
+            if ( state.backtracking==0 ) {
+              type = (value!=null?((Token)value.start):null); 
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 913:44: -> VT_HEDGE[type]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_HEDGE, type));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "hedge"
+
+    public static class lhs_and_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_and"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:1: lhs_and : ( ( LEFT_PAREN and_key ( constr_param_set )? )=> LEFT_PAREN and= and_key ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_param_set )? | DOUBLE_AMPER )=> (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary ) )* );
+    public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
+        DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token amper=null;
+        Token LEFT_PAREN150=null;
+        Token RIGHT_PAREN153=null;
+        DRLParser.and_key_return and = null;
+
+        DRLParser.and_key_return value = null;
+
+        DRLParser.constr_param_set_return constr_param_set151 = null;
+
+        DRLParser.lhs_unary_return lhs_unary152 = null;
+
+        DRLParser.lhs_unary_return lhs_unary154 = null;
+
+        DRLParser.constr_param_set_return constr_param_set155 = null;
+
+        DRLParser.lhs_unary_return lhs_unary156 = null;
+
+
+        Object amper_tree=null;
+        Object LEFT_PAREN150_tree=null;
+        Object RIGHT_PAREN153_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
+        RewriteRuleSubtreeStream stream_lhs_unary=new RewriteRuleSubtreeStream(adaptor,"rule lhs_unary");
+        RewriteRuleSubtreeStream stream_and_key=new RewriteRuleSubtreeStream(adaptor,"rule and_key");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+
+        	Token andToken = null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:3: ( ( LEFT_PAREN and_key ( constr_param_set )? )=> LEFT_PAREN and= and_key ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_param_set )? | DOUBLE_AMPER )=> (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary ) )* )
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==LEFT_PAREN) ) {
+                int LA59_1 = input.LA(2);
+
+                if ( (synpred5_DRL()) ) {
+                    alt59=1;
+                }
+                else if ( (true) ) {
+                    alt59=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 59, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA59_0==ID) ) {
+                alt59=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 59, 0, input);
+
+                throw nvae;
+            }
+            switch (alt59) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:5: ( LEFT_PAREN and_key ( constr_param_set )? )=> LEFT_PAREN and= and_key ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN
+                    {
+                    LEFT_PAREN150=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2723); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN150);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN150, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_and_key_in_lhs_and2733);
+                    and=and_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_key.add(and.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:4: ( constr_param_set )?
+                    int alt54=2;
+                    int LA54_0 = input.LA(1);
+
+                    if ( (LA54_0==AT) ) {
+                        alt54=1;
+                    }
+                    switch (alt54) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:4: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_lhs_and2738);
+                            constr_param_set151=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set151.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
+                    }
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:4: ( lhs_unary )+
+                    int cnt55=0;
+                    loop55:
+                    do {
+                        int alt55=2;
+                        int LA55_0 = input.LA(1);
+
+                        if ( (LA55_0==ID||LA55_0==LEFT_PAREN) ) {
+                            alt55=1;
+                        }
+
+
+                        switch (alt55) {
+                    	case 1 :
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:4: lhs_unary
+                    	    {
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2747);
+                    	    lhs_unary152=lhs_unary();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary152.getTree());
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt55 >= 1 ) break loop55;
+                    	    if (state.backtracking>0) {state.failed=true; return retval;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(55, input);
+                                throw eee;
+                        }
+                        cnt55++;
+                    } while (true);
+
+                    RIGHT_PAREN153=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2753); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN153);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN153, DroolsEditorType.SYMBOL);	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: RIGHT_PAREN, lhs_unary, constr_param_set
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 927:3: -> ^( VT_AND_PREFIX[$and.start] ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:6: ^( VT_AND_PREFIX[$and.start] ( constr_param_set )? ( lhs_unary )+ RIGHT_PAREN )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_PREFIX, (and!=null?((Token)and.start):null)), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:34: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        if ( !(stream_lhs_unary.hasNext()) ) {
+                            throw new RewriteEarlyExitException();
+                        }
+                        while ( stream_lhs_unary.hasNext() ) {
+                            adaptor.addChild(root_1, stream_lhs_unary.nextTree());
+
+                        }
+                        stream_lhs_unary.reset();
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( constr_param_set )? | DOUBLE_AMPER )=> (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary ) )*
+                    {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:2: ( lhs_unary -> lhs_unary )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:3: lhs_unary
+                    {
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2787);
+                    lhs_unary154=lhs_unary();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary154.getTree());
+
+
+                    // AST REWRITE
+                    // elements: lhs_unary
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 931:13: -> lhs_unary
+                    {
+                        adaptor.addChild(root_0, stream_lhs_unary.nextTree());
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:3: ( ( and_key ( constr_param_set )? | DOUBLE_AMPER )=> (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary ) )*
+                    loop58:
+                    do {
+                        int alt58=2;
+                        int LA58_0 = input.LA(1);
+
+                        if ( (LA58_0==ID) ) {
+                            int LA58_2 = input.LA(2);
+
+                            if ( ((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
+                                alt58=1;
+                            }
+
+
+                        }
+                        else if ( (LA58_0==DOUBLE_AMPER) ) {
+                            int LA58_3 = input.LA(2);
+
+                            if ( (synpred6_DRL()) ) {
+                                alt58=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt58) {
+                    	case 1 :
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:5: ( and_key ( constr_param_set )? | DOUBLE_AMPER )=> (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER ) lhs_unary
+                    	    {
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:3: (value= and_key ( constr_param_set )? | amper= DOUBLE_AMPER )
+                    	    int alt57=2;
+                    	    int LA57_0 = input.LA(1);
+
+                    	    if ( (LA57_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+                    	        alt57=1;
+                    	    }
+                    	    else if ( (LA57_0==DOUBLE_AMPER) ) {
+                    	        alt57=2;
+                    	    }
+                    	    else {
+                    	        if (state.backtracking>0) {state.failed=true; return retval;}
+                    	        NoViableAltException nvae =
+                    	            new NoViableAltException("", 57, 0, input);
+
+                    	        throw nvae;
+                    	    }
+                    	    switch (alt57) {
+                    	        case 1 :
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:5: value= and_key ( constr_param_set )?
+                    	            {
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2817);
+                    	            value=and_key();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+                    	            if ( state.backtracking==0 ) stream_and_key.add(value.getTree());
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:19: ( constr_param_set )?
+                    	            int alt56=2;
+                    	            int LA56_0 = input.LA(1);
+
+                    	            if ( (LA56_0==AT) ) {
+                    	                alt56=1;
+                    	            }
+                    	            switch (alt56) {
+                    	                case 1 :
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:19: constr_param_set
+                    	                    {
+                    	                    pushFollow(FOLLOW_constr_param_set_in_lhs_and2819);
+                    	                    constr_param_set155=constr_param_set();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return retval;
+                    	                    if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set155.getTree());
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
+                    	            if ( state.backtracking==0 ) {
+                    	              andToken = (value!=null?((Token)value.start):null); 
+                    	            }
+
+                    	            }
+                    	            break;
+                    	        case 2 :
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:6: amper= DOUBLE_AMPER
+                    	            {
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2832); if (state.failed) return retval; 
+                    	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
+
+                    	            if ( state.backtracking==0 ) {
+                    	              andToken = amper; emit(amper, DroolsEditorType.SYMBOL);
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    if ( state.backtracking==0 ) {
+                    	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
+                    	    }
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2846);
+                    	    lhs_unary156=lhs_unary();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return retval;
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary156.getTree());
+
+
+                    	    // AST REWRITE
+                    	    // elements: lhs_unary, constr_param_set, lhs_and
+                    	    // token labels: 
+                    	    // rule labels: retval
+                    	    // token list labels: 
+                    	    // rule list labels: 
+                    	    if ( state.backtracking==0 ) {
+                    	    retval.tree = root_0;
+                    	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    	    root_0 = (Object)adaptor.nil();
+                    	    // 938:3: -> ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary )
+                    	    {
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:6: ^( VT_AND_INFIX[andToken] ( constr_param_set )? $lhs_and lhs_unary )
+                    	        {
+                    	        Object root_1 = (Object)adaptor.nil();
+                    	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
+
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:31: ( constr_param_set )?
+                    	        if ( stream_constr_param_set.hasNext() ) {
+                    	            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                    	        }
+                    	        stream_constr_param_set.reset();
+                    	        adaptor.addChild(root_1, stream_retval.nextTree());
+                    	        adaptor.addChild(root_1, stream_lhs_unary.nextTree());
+
+                    	        adaptor.addChild(root_0, root_1);
+                    	        }
+
+                    	    }
+
+                    	    retval.tree = root_0;}
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop58;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_and"
+
+    public static class lhs_unary_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_unary"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:941:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
+        DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN163=null;
+        Token RIGHT_PAREN165=null;
+        Token SEMICOLON167=null;
+        DRLParser.lhs_exist_return lhs_exist157 = null;
+
+        DRLParser.lhs_not_binding_return lhs_not_binding158 = null;
+
+        DRLParser.lhs_not_return lhs_not159 = null;
+
+        DRLParser.lhs_eval_return lhs_eval160 = null;
+
+        DRLParser.lhs_forall_return lhs_forall161 = null;
+
+        DRLParser.lhs_forany_return lhs_forany162 = null;
+
+        DRLParser.lhs_or_return lhs_or164 = null;
+
+        DRLParser.pattern_source_return pattern_source166 = null;
+
+
+        Object LEFT_PAREN163_tree=null;
+        Object RIGHT_PAREN165_tree=null;
+        Object SEMICOLON167_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            int alt60=8;
+            alt60 = dfa60.predict(input);
+            switch (alt60) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:6: lhs_exist
+                    {
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2886);
+                    lhs_exist157=lhs_exist();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist157.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:4: {...}? => lhs_not_binding
+                    {
+                    if ( !((validateNotWithBinding())) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
+                    }
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2894);
+                    lhs_not_binding158=lhs_not_binding();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding158.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:5: lhs_not
+                    {
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2900);
+                    lhs_not159=lhs_not();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not159.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:945:5: lhs_eval
+                    {
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2906);
+                    lhs_eval160=lhs_eval();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval160.getTree());
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:5: lhs_forall
+                    {
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2912);
+                    lhs_forall161=lhs_forall();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall161.getTree());
+
+                    }
+                    break;
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:5: lhs_forany
+                    {
+                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary2918);
+                    lhs_forany162=lhs_forany();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forany162.getTree());
+
+                    }
+                    break;
+                case 7 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    {
+                    LEFT_PAREN163=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2924); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN163, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                    }
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2935);
+                    lhs_or164=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or164.getTree());
+                    RIGHT_PAREN165=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2941); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    RIGHT_PAREN165_tree = (Object)adaptor.create(RIGHT_PAREN165);
+                    adaptor.addChild(root_0, RIGHT_PAREN165_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN165, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:5: pattern_source
+                    {
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2949);
+                    pattern_source166=pattern_source();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source166.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:3: ( ( SEMICOLON )=> SEMICOLON )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==SEMICOLON) ) {
+                int LA61_1 = input.LA(2);
+
+                if ( (synpred7_DRL()) ) {
+                    alt61=1;
+                }
+            }
+            switch (alt61) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:4: ( SEMICOLON )=> SEMICOLON
+                    {
+                    SEMICOLON167=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2963); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                      	emit(SEMICOLON167, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_unary"
+
+    public static class lhs_exist_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_exist"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
+        DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN170=null;
+        Token RIGHT_PAREN172=null;
+        DRLParser.exists_key_return exists_key168 = null;
+
+        DRLParser.lhs_or_return lhs_or169 = null;
+
+        DRLParser.lhs_or_return lhs_or171 = null;
+
+        DRLParser.lhs_pattern_return lhs_pattern173 = null;
+
+
+        Object LEFT_PAREN170_tree=null;
+        Object RIGHT_PAREN172_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:957:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            {
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2979);
+            exists_key168=exists_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_exists_key.add(exists_key168.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt62=3;
+            int LA62_0 = input.LA(1);
+
+            if ( (LA62_0==LEFT_PAREN) ) {
+                int LA62_1 = input.LA(2);
+
+                if ( (synpred8_DRL()) ) {
+                    alt62=1;
+                }
+                else if ( (true) ) {
+                    alt62=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 62, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA62_0==ID) ) {
+                int LA62_2 = input.LA(2);
+
+                if ( (((synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||((synpred8_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY))))||synpred8_DRL()||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
+                    alt62=1;
+                }
+                else if ( (true) ) {
+                    alt62=3;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 62, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 62, 0, input);
+
+                throw nvae;
+            }
+            switch (alt62) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    {
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3006);
+                    lhs_or169=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or169.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    {
+                    LEFT_PAREN170=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3013); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN170);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN170, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3021);
+                    lhs_or171=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or171.getTree());
+                    RIGHT_PAREN172=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3028); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN172);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN172, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:12: lhs_pattern
+                    {
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3043);
+                    lhs_pattern173=lhs_pattern();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern173.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: exists_key, RIGHT_PAREN, lhs_or, lhs_pattern
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 965:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:26: ( lhs_or )?
+                if ( stream_lhs_or.hasNext() ) {
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
+
+                }
+                stream_lhs_or.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:34: ( lhs_pattern )?
+                if ( stream_lhs_pattern.hasNext() ) {
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
+
+                }
+                stream_lhs_pattern.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:47: ( RIGHT_PAREN )?
+                if ( stream_RIGHT_PAREN.hasNext() ) {
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                }
+                stream_RIGHT_PAREN.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_exist"
+
+    public static class lhs_not_binding_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_not_binding"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
+        DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.not_key_return not_key174 = null;
+
+        DRLParser.fact_binding_return fact_binding175 = null;
+
+
+        RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
+        RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:4: not_key fact_binding
+            {
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding3089);
+            not_key174=not_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_not_key.add(not_key174.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3091);
+            fact_binding175=fact_binding();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding175.getTree());
+
+
+            // AST REWRITE
+            // elements: not_key, fact_binding
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 970:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:15: ^( VT_PATTERN fact_binding )
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
+
+                adaptor.addChild(root_2, stream_fact_binding.nextTree());
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_not_binding"
+
+    public static class lhs_not_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_not"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
+        DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN178=null;
+        Token RIGHT_PAREN180=null;
+        DRLParser.not_key_return not_key176 = null;
+
+        DRLParser.lhs_or_return lhs_or177 = null;
+
+        DRLParser.lhs_or_return lhs_or179 = null;
+
+        DRLParser.lhs_pattern_return lhs_pattern181 = null;
+
+
+        Object LEFT_PAREN178_tree=null;
+        Object RIGHT_PAREN180_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
+        RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            {
+            pushFollow(FOLLOW_not_key_in_lhs_not3114);
+            not_key176=not_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_not_key.add(not_key176.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt63=3;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==LEFT_PAREN) ) {
+                int LA63_1 = input.LA(2);
+
+                if ( (synpred9_DRL()) ) {
+                    alt63=1;
+                }
+                else if ( (true) ) {
+                    alt63=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 63, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA63_0==ID) ) {
+                int LA63_2 = input.LA(2);
+
+                if ( (synpred9_DRL()) ) {
+                    alt63=1;
+                }
+                else if ( (true) ) {
+                    alt63=3;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 63, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 63, 0, input);
+
+                throw nvae;
+            }
+            switch (alt63) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    {
+                    if ( state.backtracking==0 ) {
+                      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                    }
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3136);
+                    lhs_or177=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or177.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    {
+                    LEFT_PAREN178=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3143); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN178);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN178, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                    }
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3152);
+                    lhs_or179=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or179.getTree());
+                    RIGHT_PAREN180=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3158); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN180);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN180, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:6: lhs_pattern
+                    {
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3168);
+                    lhs_pattern181=lhs_pattern();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern181.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: RIGHT_PAREN, lhs_or, not_key, lhs_pattern
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 980:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:23: ( lhs_or )?
+                if ( stream_lhs_or.hasNext() ) {
+                    adaptor.addChild(root_1, stream_lhs_or.nextTree());
+
+                }
+                stream_lhs_or.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:31: ( lhs_pattern )?
+                if ( stream_lhs_pattern.hasNext() ) {
+                    adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
+
+                }
+                stream_lhs_pattern.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:44: ( RIGHT_PAREN )?
+                if ( stream_RIGHT_PAREN.hasNext() ) {
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                }
+                stream_RIGHT_PAREN.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_not"
+
+    public static class lhs_eval_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_eval"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
+        DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.eval_key_return ev = null;
+
+        DRLParser.paren_chunk_return pc = null;
+
+
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:4: ev= eval_key pc= paren_chunk
+            {
+            pushFollow(FOLLOW_eval_key_in_lhs_eval3207);
+            ev=eval_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_eval_key.add(ev.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
+            }
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3216);
+            pc=paren_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              	if (((DroolsTree) (pc!=null?((Object)pc.tree):null)).getText() != null){
+              			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	            		
+              		}
+              	
+            }
+            if ( state.backtracking==0 ) {
+              	String body = safeSubstring( (pc!=null?input.toString(pc.start,pc.stop):null), 1, (pc!=null?input.toString(pc.start,pc.stop):null).length()-1 );
+              		checkTrailingSemicolon( body, (ev!=null?((Token)ev.start):null) );	
+            }
+
+
+            // AST REWRITE
+            // elements: eval_key, paren_chunk
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 993:3: -> ^( eval_key paren_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:6: ^( eval_key paren_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_eval"
+
+    public static class lhs_forall_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_forall"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:1: lhs_forall : forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) ;
+    public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
+        DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN183=null;
+        Token RIGHT_PAREN185=null;
+        DRLParser.forall_key_return forall_key182 = null;
+
+        DRLParser.pattern_source_return pattern_source184 = null;
+
+
+        Object LEFT_PAREN183_tree=null;
+        Object RIGHT_PAREN185_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
+        RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
+            {
+            pushFollow(FOLLOW_forall_key_in_lhs_forall3243);
+            forall_key182=forall_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_forall_key.add(forall_key182.getTree());
+            LEFT_PAREN183=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3248); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN183);
+
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN183, DroolsEditorType.SYMBOL);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:4: ( pattern_source )+
+            int cnt64=0;
+            loop64:
+            do {
+                int alt64=2;
+                int LA64_0 = input.LA(1);
+
+                if ( (LA64_0==ID) ) {
+                    alt64=1;
+                }
+
+
+                switch (alt64) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:4: pattern_source
+            	    {
+            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3256);
+            	    pattern_source184=pattern_source();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source184.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt64 >= 1 ) break loop64;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(64, input);
+                        throw eee;
+                }
+                cnt64++;
+            } while (true);
+
+            RIGHT_PAREN185=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3262); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN185);
+
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN185, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: pattern_source, forall_key, RIGHT_PAREN
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1001:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
+
+                if ( !(stream_pattern_source.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_pattern_source.hasNext() ) {
+                    adaptor.addChild(root_1, stream_pattern_source.nextTree());
+
+                }
+                stream_pattern_source.reset();
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_forall"
+
+    public static class lhs_forany_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_forany"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:1: lhs_forany : forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) ;
+    public final DRLParser.lhs_forany_return lhs_forany() throws RecognitionException {
+        DRLParser.lhs_forany_return retval = new DRLParser.lhs_forany_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN187=null;
+        Token RIGHT_PAREN191=null;
+        DRLParser.lhs_or_return s = null;
+
+        DRLParser.lhs_or_return w = null;
+
+        DRLParser.forany_key_return forany_key186 = null;
+
+        DRLParser.lhs_or_return lhs_or188 = null;
+
+        DRLParser.subject_key_return subject_key189 = null;
+
+        DRLParser.weight_key_return weight_key190 = null;
+
+
+        Object LEFT_PAREN187_tree=null;
+        Object RIGHT_PAREN191_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_weight_key=new RewriteRuleSubtreeStream(adaptor,"rule weight_key");
+        RewriteRuleSubtreeStream stream_forany_key=new RewriteRuleSubtreeStream(adaptor,"rule forany_key");
+        RewriteRuleSubtreeStream stream_subject_key=new RewriteRuleSubtreeStream(adaptor,"rule subject_key");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:3: ( forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:5: forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN
+            {
+            pushFollow(FOLLOW_forany_key_in_lhs_forany3293);
+            forany_key186=forany_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_forany_key.add(forany_key186.getTree());
+            LEFT_PAREN187=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3300); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN187);
+
+            if ( state.backtracking==0 ) {
+                emit(LEFT_PAREN187, DroolsEditorType.SYMBOL); 
+            }
+            pushFollow(FOLLOW_lhs_or_in_lhs_forany3311);
+            lhs_or188=lhs_or();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or188.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:7: ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:7: ( subject_key s= lhs_or )? ( weight_key w= lhs_or )?
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:7: ( subject_key s= lhs_or )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))||((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))))) {
+                int LA65_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
+                    alt65=1;
+                }
+            }
+            switch (alt65) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:8: subject_key s= lhs_or
+                    {
+                    pushFollow(FOLLOW_subject_key_in_lhs_forany3330);
+                    subject_key189=subject_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_subject_key.add(subject_key189.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3334);
+                    s=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(s.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1012:7: ( weight_key w= lhs_or )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WEIGHT))))) {
+                alt66=1;
+            }
+            switch (alt66) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1012:8: weight_key w= lhs_or
+                    {
+                    pushFollow(FOLLOW_weight_key_in_lhs_forany3345);
+                    weight_key190=weight_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_weight_key.add(weight_key190.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3349);
+                    w=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(w.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            RIGHT_PAREN191=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3365); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN191);
+
+            if ( state.backtracking==0 ) {
+               emit(RIGHT_PAREN191, DroolsEditorType.SYMBOL);  
+            }
+
+
+            // AST REWRITE
+            // elements: forany_key, s, weight_key, subject_key, RIGHT_PAREN, lhs_or, w
+            // token labels: 
+            // rule labels: w, retval, s
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_w=new RewriteRuleSubtreeStream(adaptor,"token w",w!=null?w.tree:null);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"token s",s!=null?s.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1015:5: -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:8: ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_forany_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_lhs_or.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:28: ( subject_key $s)?
+                if ( stream_s.hasNext()||stream_subject_key.hasNext() ) {
+                    adaptor.addChild(root_1, stream_subject_key.nextTree());
+                    adaptor.addChild(root_1, stream_s.nextTree());
+
+                }
+                stream_s.reset();
+                stream_subject_key.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:46: ( weight_key $w)?
+                if ( stream_weight_key.hasNext()||stream_w.hasNext() ) {
+                    adaptor.addChild(root_1, stream_weight_key.nextTree());
+                    adaptor.addChild(root_1, stream_w.nextTree());
+
+                }
+                stream_weight_key.reset();
+                stream_w.reset();
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_forany"
+
+    public static class pattern_source_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "pattern_source"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
+        DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token FROM194=null;
+        DRLParser.lhs_pattern_return lhs_pattern192 = null;
+
+        DRLParser.over_clause_return over_clause193 = null;
+
+        DRLParser.accumulate_statement_return accumulate_statement195 = null;
+
+        DRLParser.collect_statement_return collect_statement196 = null;
+
+        DRLParser.entrypoint_statement_return entrypoint_statement197 = null;
+
+        DRLParser.from_source_return from_source198 = null;
+
+
+        Object FROM194_tree=null;
+
+         boolean isFailed = true;	
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1022:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3426);
+            lhs_pattern192=lhs_pattern();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern192.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:3: ( over_clause )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==OVER) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:3: over_clause
+                    {
+                    pushFollow(FOLLOW_over_clause_in_pattern_source3430);
+                    over_clause193=over_clause();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause193.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1025:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==FROM) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1026:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    {
+                    FROM194=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3440); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    FROM194_tree = (Object)adaptor.create(FROM194);
+                    root_0 = (Object)adaptor.becomeRoot(FROM194_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(FROM194, DroolsEditorType.KEYWORD);
+                      			emit(Location.LOCATION_LHS_FROM);	
+                    }
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    int alt68=4;
+                    switch ( input.LA(1) ) {
+                    case ACCUMULATE:
+                        {
+                        alt68=1;
+                        }
+                        break;
+                    case COLLECT:
+                        {
+                        alt68=2;
+                        }
+                        break;
+                    case ID:
+                        {
+                        int LA68_3 = input.LA(2);
+
+                        if ( (LA68_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
+                            alt68=3;
+                        }
+                        else if ( ((LA68_3>=SEMICOLON && LA68_3<=DOT)||(LA68_3>=LEFT_PAREN && LA68_3<=RIGHT_PAREN)||(LA68_3>=DOUBLE_PIPE && LA68_3<=DOUBLE_AMPER)||LA68_3==THEN) ) {
+                            alt68=4;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return retval;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 68, 3, input);
+
+                            throw nvae;
+                        }
+                        }
+                        break;
+                    default:
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 68, 0, input);
+
+                        throw nvae;
+                    }
+
+                    switch (alt68) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:14: accumulate_statement
+                            {
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3460);
+                            accumulate_statement195=accumulate_statement();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement195.getTree());
+
+                            }
+                            break;
+                        case 2 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:15: collect_statement
+                            {
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source3476);
+                            collect_statement196=collect_statement();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement196.getTree());
+
+                            }
+                            break;
+                        case 3 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:15: entrypoint_statement
+                            {
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3493);
+                            entrypoint_statement197=entrypoint_statement();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement197.getTree());
+
+                            }
+                            break;
+                        case 4 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:15: from_source
+                            {
+                            pushFollow(FOLLOW_from_source_in_pattern_source3509);
+                            from_source198=from_source();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source198.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               isFailed = false;	
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
+            			emit(input.LT(1), DroolsEditorType.KEYWORD);
+            			emit(input.LT(2), DroolsEditorType.SYMBOL);
+            			input.consume();
+            			emit(true, Location.LOCATION_LHS_FROM_ACCUMULATE);
+            	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == COLLECT) {
+            			emit(input.LT(1), DroolsEditorType.KEYWORD);
+            			emit(input.LT(2), DroolsEditorType.SYMBOL);
+            			input.consume();
+            			emit(true, Location.LOCATION_LHS_FROM_COLLECT);
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "pattern_source"
+
+    public static class over_clause_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "over_clause"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1050:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    public final DRLParser.over_clause_return over_clause() throws RecognitionException {
+        DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token OVER199=null;
+        Token COMMA201=null;
+        DRLParser.over_elements_return over_elements200 = null;
+
+        DRLParser.over_elements_return over_elements202 = null;
+
+
+        Object OVER199_tree=null;
+        Object COMMA201_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:4: OVER over_elements ( COMMA over_elements )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            OVER199=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3541); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            OVER199_tree = (Object)adaptor.create(OVER199);
+            root_0 = (Object)adaptor.becomeRoot(OVER199_tree, root_0);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(OVER199, DroolsEditorType.KEYWORD);	
+            }
+            pushFollow(FOLLOW_over_elements_in_over_clause3546);
+            over_elements200=over_elements();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements200.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:4: ( COMMA over_elements )*
+            loop70:
+            do {
+                int alt70=2;
+                int LA70_0 = input.LA(1);
+
+                if ( (LA70_0==COMMA) ) {
+                    int LA70_2 = input.LA(2);
+
+                    if ( (LA70_2==ID) ) {
+                        int LA70_3 = input.LA(3);
+
+                        if ( (LA70_3==COLON) ) {
+                            alt70=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt70) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:5: COMMA over_elements
+            	    {
+            	    COMMA201=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3553); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA201, DroolsEditorType.SYMBOL);	
+            	    }
+            	    pushFollow(FOLLOW_over_elements_in_over_clause3558);
+            	    over_elements202=over_elements();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements202.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop70;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "over_clause"
+
+    public static class over_elements_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "over_elements"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1055:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    public final DRLParser.over_elements_return over_elements() throws RecognitionException {
+        DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token id2=null;
+        Token COLON203=null;
+        DRLParser.paren_chunk_return paren_chunk204 = null;
+
+
+        Object id1_tree=null;
+        Object id2_tree=null;
+        Object COLON203_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:4: id1= ID COLON id2= ID paren_chunk
+            {
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3573); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.IDENTIFIER);	
+            }
+            COLON203=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3580); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON203);
+
+            if ( state.backtracking==0 ) {
+              	emit(COLON203, DroolsEditorType.SYMBOL);	
+            }
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3589); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              	emit(id2, DroolsEditorType.IDENTIFIER);	
+            }
+            pushFollow(FOLLOW_paren_chunk_in_over_elements3596);
+            paren_chunk204=paren_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk204.getTree());
+
+
+            // AST REWRITE
+            // elements: paren_chunk, id2, id1
+            // token labels: id2, id1
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleTokenStream stream_id2=new RewriteRuleTokenStream(adaptor,"token id2",id2);
+            RewriteRuleTokenStream stream_id1=new RewriteRuleTokenStream(adaptor,"token id1",id1);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1060:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
+
+                adaptor.addChild(root_1, stream_id1.nextNode());
+                adaptor.addChild(root_1, stream_id2.nextNode());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "over_elements"
+
+    public static class accumulate_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accumulate_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
+        DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ACCUMULATE205=null;
+        Token LEFT_PAREN206=null;
+        Token COMMA208=null;
+        Token RIGHT_PAREN211=null;
+        DRLParser.lhs_or_return lhs_or207 = null;
+
+        DRLParser.accumulate_init_clause_return accumulate_init_clause209 = null;
+
+        DRLParser.accumulate_id_clause_return accumulate_id_clause210 = null;
+
+
+        Object ACCUMULATE205_tree=null;
+        Object LEFT_PAREN206_tree=null;
+        Object COMMA208_tree=null;
+        Object RIGHT_PAREN211_tree=null;
+        RewriteRuleTokenStream stream_ACCUMULATE=new RewriteRuleTokenStream(adaptor,"token ACCUMULATE");
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        RewriteRuleSubtreeStream stream_accumulate_init_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_init_clause");
+        RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
+        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1064:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            {
+            ACCUMULATE205=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3622); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE205);
+
+            if ( state.backtracking==0 ) {
+              	emit(ACCUMULATE205, DroolsEditorType.KEYWORD);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
+            }
+            LEFT_PAREN206=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3631); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN206);
+
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN206, DroolsEditorType.SYMBOL);	
+            }
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3639);
+            lhs_or207=lhs_or();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or207.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:3: ( COMMA )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==COMMA) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:3: COMMA
+                    {
+                    COMMA208=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3644); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA208);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(COMMA208, DroolsEditorType.SYMBOL);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:3: ( accumulate_init_clause | accumulate_id_clause )
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==ID) ) {
+                int LA72_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
+                    alt72=1;
+                }
+                else if ( (true) ) {
+                    alt72=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 72, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 72, 0, input);
+
+                throw nvae;
+            }
+            switch (alt72) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:5: accumulate_init_clause
+                    {
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3654);
+                    accumulate_init_clause209=accumulate_init_clause();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause209.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1070:5: accumulate_id_clause
+                    {
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3660);
+                    accumulate_id_clause210=accumulate_id_clause();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause210.getTree());
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_PAREN211=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3668); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN211);
+
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN211, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+            }
+
+
+            // AST REWRITE
+            // elements: lhs_or, RIGHT_PAREN, accumulate_id_clause, ACCUMULATE, accumulate_init_clause
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1074:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_lhs_or.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:26: ( accumulate_init_clause )?
+                if ( stream_accumulate_init_clause.hasNext() ) {
+                    adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
+
+                }
+                stream_accumulate_init_clause.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:50: ( accumulate_id_clause )?
+                if ( stream_accumulate_id_clause.hasNext() ) {
+                    adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
+
+                }
+                stream_accumulate_id_clause.reset();
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accumulate_statement"
+
+    public static class accumulate_init_clause_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accumulate_init_clause"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1078:1: accumulate_init_clause : init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    public final DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
+        DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token cm1=null;
+        Token cm2=null;
+        Token cm3=null;
+        DRLParser.accumulate_paren_chunk_return pc1 = null;
+
+        DRLParser.accumulate_paren_chunk_return pc2 = null;
+
+        DRLParser.accumulate_paren_chunk_return pc3 = null;
+
+        DRLParser.result_key_return res1 = null;
+
+        DRLParser.accumulate_paren_chunk_return pc4 = null;
+
+        DRLParser.init_key_return init_key212 = null;
+
+        DRLParser.action_key_return action_key213 = null;
+
+        DRLParser.reverse_key_return reverse_key214 = null;
+
+
+        Object cm1_tree=null;
+        Object cm2_tree=null;
+        Object cm3_tree=null;
+        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
+        RewriteRuleSubtreeStream stream_accumulate_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_paren_chunk");
+        RewriteRuleSubtreeStream stream_reverse_key=new RewriteRuleSubtreeStream(adaptor,"rule reverse_key");
+        RewriteRuleSubtreeStream stream_result_key=new RewriteRuleSubtreeStream(adaptor,"rule result_key");
+        RewriteRuleSubtreeStream stream_init_key=new RewriteRuleSubtreeStream(adaptor,"rule init_key");
+         boolean isFailed = true;	
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:2: ( init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:4: init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            {
+            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3714);
+            init_key212=init_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_init_key.add(init_key212.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
+            }
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3724);
+            pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:84: (cm1= COMMA )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==COMMA) ) {
+                alt73=1;
+            }
+            switch (alt73) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:84: cm1= COMMA
+                    {
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3729); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm1);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(cm1, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
+            }
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3740);
+            action_key213=action_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_action_key.add(action_key213.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3744);
+            pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:97: (cm2= COMMA )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( (LA74_0==COMMA) ) {
+                alt74=1;
+            }
+            switch (alt74) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:97: cm2= COMMA
+                    {
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3749); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(cm2);
+
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(cm2, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==ID) ) {
+                int LA76_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
+                    alt76=1;
+                }
+            }
+            switch (alt76) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    {
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3761);
+                    reverse_key214=reverse_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key214.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3765);
+                    pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:100: (cm3= COMMA )?
+                    int alt75=2;
+                    int LA75_0 = input.LA(1);
+
+                    if ( (LA75_0==COMMA) ) {
+                        alt75=1;
+                    }
+                    switch (alt75) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:100: cm3= COMMA
+                            {
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3770); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_COMMA.add(cm3);
+
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                      	emit(cm3, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+                          			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+                          			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+              			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
+              		}	
+              	
+            }
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3786);
+            res1=result_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_result_key.add(res1.getTree());
+            if ( state.backtracking==0 ) {
+              	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
+            }
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792);
+            pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc4.getTree());
+
+
+            // AST REWRITE
+            // elements: result_key, init_key, pc2, reverse_key, pc1, pc4, action_key, pc3
+            // token labels: 
+            // rule labels: pc4, pc3, retval, pc1, pc2
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_pc4=new RewriteRuleSubtreeStream(adaptor,"token pc4",pc4!=null?pc4.tree:null);
+            RewriteRuleSubtreeStream stream_pc3=new RewriteRuleSubtreeStream(adaptor,"token pc3",pc3!=null?pc3.tree:null);
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_pc1=new RewriteRuleSubtreeStream(adaptor,"token pc1",pc1!=null?pc1.tree:null);
+            RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1096:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
+
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:33: ^( init_key $pc1)
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(stream_init_key.nextNode(), root_2);
+
+                adaptor.addChild(root_2, stream_pc1.nextTree());
+
+                adaptor.addChild(root_1, root_2);
+                }
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:50: ^( action_key $pc2)
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
+
+                adaptor.addChild(root_2, stream_pc2.nextTree());
+
+                adaptor.addChild(root_1, root_2);
+                }
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:69: ( ^( reverse_key $pc3) )?
+                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:69: ^( reverse_key $pc3)
+                    {
+                    Object root_2 = (Object)adaptor.nil();
+                    root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
+
+                    adaptor.addChild(root_2, stream_pc3.nextTree());
+
+                    adaptor.addChild(root_1, root_2);
+                    }
+
+                }
+                stream_reverse_key.reset();
+                stream_pc3.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:90: ^( result_key $pc4)
+                {
+                Object root_2 = (Object)adaptor.nil();
+                root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
+
+                adaptor.addChild(root_2, stream_pc4.nextTree());
+
+                adaptor.addChild(root_1, root_2);
+                }
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               isFailed = false;	
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+             
+            	if (isEditorInterfaceEnabled && isFailed && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.RESULT)) {
+            		emit(input.LT(1), DroolsEditorType.KEYWORD);
+            		input.consume();
+            		if (input.LA(1) == LEFT_PAREN){
+            			input.consume();
+            			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "accumulate_init_clause"
+
+    public static class accumulate_paren_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accumulate_paren_chunk"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1109:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.accumulate_paren_chunk_data_return pc = null;
+
+
+        RewriteRuleSubtreeStream stream_accumulate_paren_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_paren_chunk_data");
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            {
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3850);
+            pc=accumulate_paren_chunk_data(false, locationType);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accumulate_paren_chunk_data.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (pc!=null?input.toString(pc.start,pc.stop):null);
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1113:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accumulate_paren_chunk"
+
+    public static class accumulate_paren_chunk_data_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accumulate_paren_chunk_data"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
+        DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lp1=null;
+        Token any=null;
+        Token rp1=null;
+        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data215 = null;
+
+
+        Object lp1_tree=null;
+        Object any_tree=null;
+        Object rp1_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            {
+            root_0 = (Object)adaptor.nil();
+
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3874); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            lp1_tree = (Object)adaptor.create(lp1);
+            adaptor.addChild(root_0, lp1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(lp1, DroolsEditorType.SYMBOL);
+              				emit(locationType);
+              			} else {
+              				emit(lp1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            loop77:
+            do {
+                int alt77=3;
+                int LA77_0 = input.LA(1);
+
+                if ( ((LA77_0>=VT_COMPILATION_UNIT && LA77_0<=STRING)||LA77_0==COMMA||(LA77_0>=AT && LA77_0<=MULTI_LINE_COMMENT)) ) {
+                    alt77=1;
+                }
+                else if ( (LA77_0==LEFT_PAREN) ) {
+                    alt77=2;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    {
+            	    any=(Token)input.LT(1);
+            	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
+            	        input.consume();
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	       emit(any, DroolsEditorType.CODE_CHUNK); 
+            	    }
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1125:87: accumulate_paren_chunk_data[true,-1]
+            	    {
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3902);
+            	    accumulate_paren_chunk_data215=accumulate_paren_chunk_data(true, -1);
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data215.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } while (true);
+
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3913); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            rp1_tree = (Object)adaptor.create(rp1);
+            adaptor.addChild(root_0, rp1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(rp1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(rp1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accumulate_paren_chunk_data"
+
+    public static class accumulate_id_clause_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accumulate_id_clause"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1135:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
+        DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ID216=null;
+        DRLParser.paren_chunk_return paren_chunk217 = null;
+
+
+        Object ID216_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1136:4: ID paren_chunk
+            {
+            ID216=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3929); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID216);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID216, DroolsEditorType.IDENTIFIER);	
+            }
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3935);
+            paren_chunk217=paren_chunk();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk217.getTree());
+
+
+            // AST REWRITE
+            // elements: ID, paren_chunk
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1138:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1138:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
+
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accumulate_id_clause"
+
+    public static class collect_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "collect_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
+        DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token COLLECT218=null;
+        Token LEFT_PAREN219=null;
+        Token RIGHT_PAREN221=null;
+        DRLParser.pattern_source_return pattern_source220 = null;
+
+
+        Object COLLECT218_tree=null;
+        Object LEFT_PAREN219_tree=null;
+        Object RIGHT_PAREN221_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleTokenStream stream_COLLECT=new RewriteRuleTokenStream(adaptor,"token COLLECT");
+        RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            {
+            COLLECT218=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3957); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT218);
+
+            if ( state.backtracking==0 ) {
+              	emit(COLLECT218, DroolsEditorType.KEYWORD);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_FROM_COLLECT);	
+            }
+            LEFT_PAREN219=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3966); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN219);
+
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN219, DroolsEditorType.SYMBOL);	
+            }
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3973);
+            pattern_source220=pattern_source();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source220.getTree());
+            RIGHT_PAREN221=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3978); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN221);
+
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN221, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+            }
+
+
+            // AST REWRITE
+            // elements: RIGHT_PAREN, pattern_source, COLLECT
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1148:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1148:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_pattern_source.nextTree());
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "collect_statement"
+
+    public static class entrypoint_statement_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entrypoint_statement"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1151:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
+        DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.entry_point_key_return entry_point_key222 = null;
+
+        DRLParser.entrypoint_id_return entrypoint_id223 = null;
+
+
+        RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
+        RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:4: entry_point_key entrypoint_id
+            {
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4005);
+            entry_point_key222=entry_point_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key222.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_FROM_COLLECT);	
+            }
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4013);
+            entrypoint_id223=entrypoint_id();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id223.getTree());
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
+            }
+
+
+            // AST REWRITE
+            // elements: entry_point_key, entrypoint_id
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1156:2: -> ^( entry_point_key entrypoint_id )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:5: ^( entry_point_key entrypoint_id )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
+
+                adaptor.addChild(root_1, stream_entrypoint_id.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entrypoint_statement"
+
+    public static class entrypoint_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entrypoint_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
+        DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+
+        Object value_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( (LA78_0==ID) ) {
+                alt78=1;
+            }
+            else if ( (LA78_0==STRING) ) {
+                alt78=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 78, 0, input);
+
+                throw nvae;
+            }
+            switch (alt78) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1160:5: value= ID
+                    {
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4039); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_ID.add(value);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(value, DroolsEditorType.IDENTIFIER);	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1161:3: -> VT_ENTRYPOINT_ID[$value]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1162:5: value= STRING
+                    {
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4056); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_STRING.add(value);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(value, DroolsEditorType.IDENTIFIER);	
+                    }
+
+
+                    // AST REWRITE
+                    // elements: 
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1163:3: -> VT_ENTRYPOINT_ID[$value]
+                    {
+                        adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entrypoint_id"
+
+    public static class from_source_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "from_source"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1166:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.from_source_return from_source() throws RecognitionException {
+        DRLParser.from_source_return retval = new DRLParser.from_source_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ID224=null;
+        DRLParser.paren_chunk_return args = null;
+
+        DRLParser.expression_chain_return expression_chain225 = null;
+
+
+        Object ID224_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            {
+            ID224=(Token)match(input,ID,FOLLOW_ID_in_from_source4076); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID224);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID224, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            int alt79=2;
+            alt79 = dfa79.predict(input);
+            switch (alt79) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:5: ( LEFT_PAREN )=>args= paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_from_source4091);
+                    args=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(args.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1169:3: ( expression_chain )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==DOT) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1169:3: expression_chain
+                    {
+                    pushFollow(FOLLOW_expression_chain_in_from_source4098);
+                    expression_chain225=expression_chain();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain225.getTree());
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
+              			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+              		} else if ( input.LA(1) != EOF ) {
+              			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+              		}	
+            }
+
+
+            // AST REWRITE
+            // elements: ID, expression_chain, paren_chunk
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1175:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1175:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
+
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1175:25: ( paren_chunk )?
+                if ( stream_paren_chunk.hasNext() ) {
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                }
+                stream_paren_chunk.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1175:38: ( expression_chain )?
+                if ( stream_expression_chain.hasNext() ) {
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
+
+                }
+                stream_expression_chain.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "from_source"
+
+    public static class expression_chain_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "expression_chain"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1178:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
+        DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOT226=null;
+        Token ID227=null;
+        DRLParser.paren_chunk_return paren_chunk228 = null;
+
+        DRLParser.square_chunk_return square_chunk229 = null;
+
+        DRLParser.expression_chain_return expression_chain230 = null;
+
+
+        Object DOT226_tree=null;
+        Object ID227_tree=null;
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
+        RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1179:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            {
+            DOT226=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4131); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_DOT.add(DOT226);
+
+            if ( state.backtracking==0 ) {
+              	emit(DOT226, DroolsEditorType.IDENTIFIER);	
+            }
+            ID227=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4138); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID227);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID227, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1182:4: ({...}? paren_chunk | square_chunk )?
+            int alt81=3;
+            alt81 = dfa81.predict(input);
+            switch (alt81) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:6: {...}? paren_chunk
+                    {
+                    if ( !((input.LA(1) == LEFT_PAREN)) ) {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
+                    }
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4154);
+                    paren_chunk228=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk228.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:6: square_chunk
+                    {
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain4168);
+                    square_chunk229=square_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk229.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: ( expression_chain )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
+
+            if ( (LA82_0==DOT) ) {
+                alt82=1;
+            }
+            switch (alt82) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: expression_chain
+                    {
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain4179);
+                    expression_chain230=expression_chain();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain230.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: expression_chain, paren_chunk, square_chunk, ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1188:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT226), root_1);
+
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:38: ( square_chunk )?
+                if ( stream_square_chunk.hasNext() ) {
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
+
+                }
+                stream_square_chunk.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:52: ( paren_chunk )?
+                if ( stream_paren_chunk.hasNext() ) {
+                    adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                }
+                stream_paren_chunk.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:65: ( expression_chain )?
+                if ( stream_expression_chain.hasNext() ) {
+                    adaptor.addChild(root_1, stream_expression_chain.nextTree());
+
+                }
+                stream_expression_chain.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "expression_chain"
+
+    public static class lhs_pattern_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lhs_pattern"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:1: lhs_pattern : ( fact_binding ( cut_key )? -> ^( VT_PATTERN fact_binding ) | fact ( cut_key )? -> ^( VT_PATTERN fact ) );
+    public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
+        DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.fact_binding_return fact_binding231 = null;
+
+        DRLParser.cut_key_return cut_key232 = null;
+
+        DRLParser.fact_return fact233 = null;
+
+        DRLParser.cut_key_return cut_key234 = null;
+
+
+        RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
+        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
+        RewriteRuleSubtreeStream stream_cut_key=new RewriteRuleSubtreeStream(adaptor,"rule cut_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:3: ( fact_binding ( cut_key )? -> ^( VT_PATTERN fact_binding ) | fact ( cut_key )? -> ^( VT_PATTERN fact ) )
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( (LA85_0==ID) ) {
+                int LA85_1 = input.LA(2);
+
+                if ( (LA85_1==DOT||LA85_1==LEFT_PAREN||LA85_1==LEFT_SQUARE) ) {
+                    alt85=2;
+                }
+                else if ( (LA85_1==COLON) ) {
+                    alt85=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 85, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 85, 0, input);
+
+                throw nvae;
+            }
+            switch (alt85) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:5: fact_binding ( cut_key )?
+                    {
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4215);
+                    fact_binding231=fact_binding();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding231.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:18: ( cut_key )?
+                    int alt83=2;
+                    int LA83_0 = input.LA(1);
+
+                    if ( (LA83_0==CUT) ) {
+                        alt83=1;
+                    }
+                    switch (alt83) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:18: cut_key
+                            {
+                            pushFollow(FOLLOW_cut_key_in_lhs_pattern4217);
+                            cut_key232=cut_key();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_cut_key.add(cut_key232.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: fact_binding
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1193:27: -> ^( VT_PATTERN fact_binding )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:30: ^( VT_PATTERN fact_binding )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
+
+                        adaptor.addChild(root_1, stream_fact_binding.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:5: fact ( cut_key )?
+                    {
+                    pushFollow(FOLLOW_fact_in_lhs_pattern4233);
+                    fact233=fact();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact.add(fact233.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:10: ( cut_key )?
+                    int alt84=2;
+                    int LA84_0 = input.LA(1);
+
+                    if ( (LA84_0==CUT) ) {
+                        alt84=1;
+                    }
+                    switch (alt84) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:10: cut_key
+                            {
+                            pushFollow(FOLLOW_cut_key_in_lhs_pattern4235);
+                            cut_key234=cut_key();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_cut_key.add(cut_key234.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: fact
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1194:19: -> ^( VT_PATTERN fact )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1194:22: ^( VT_PATTERN fact )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
+
+                        adaptor.addChild(root_1, stream_fact.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lhs_pattern"
+
+    public static class fact_binding_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "fact_binding"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
+        DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN237=null;
+        Token RIGHT_PAREN239=null;
+        DRLParser.label_return label235 = null;
+
+        DRLParser.fact_return fact236 = null;
+
+        DRLParser.fact_binding_expression_return fact_binding_expression238 = null;
+
+
+        Object LEFT_PAREN237_tree=null;
+        Object RIGHT_PAREN239_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
+        RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
+        RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            {
+            pushFollow(FOLLOW_label_in_fact_binding4263);
+            label235=label();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_label.add(label235.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            int alt86=2;
+            int LA86_0 = input.LA(1);
+
+            if ( (LA86_0==ID) ) {
+                alt86=1;
+            }
+            else if ( (LA86_0==LEFT_PAREN) ) {
+                alt86=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 86, 0, input);
+
+                throw nvae;
+            }
+            switch (alt86) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1201:5: fact
+                    {
+                    pushFollow(FOLLOW_fact_in_fact_binding4269);
+                    fact236=fact();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact.add(fact236.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1202:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    {
+                    LEFT_PAREN237=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4276); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN237);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN237, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4284);
+                    fact_binding_expression238=fact_binding_expression();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression238.getTree());
+                    RIGHT_PAREN239=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding4292); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN239);
+
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN239, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: fact_binding_expression, RIGHT_PAREN, fact, label
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1206:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
+
+                adaptor.addChild(root_1, stream_label.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:30: ( fact )?
+                if ( stream_fact.hasNext() ) {
+                    adaptor.addChild(root_1, stream_fact.nextTree());
+
+                }
+                stream_fact.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:36: ( fact_binding_expression )?
+                if ( stream_fact_binding_expression.hasNext() ) {
+                    adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
+
+                }
+                stream_fact_binding_expression.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:61: ( RIGHT_PAREN )?
+                if ( stream_RIGHT_PAREN.hasNext() ) {
+                    adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                }
+                stream_RIGHT_PAREN.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "fact_binding"
+
+    public static class fact_binding_expression_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "fact_binding_expression"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
+        DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token pipe=null;
+        DRLParser.or_key_return value = null;
+
+        DRLParser.fact_return fact240 = null;
+
+        DRLParser.fact_return fact241 = null;
+
+
+        Object pipe_tree=null;
+        RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
+        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
+        RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
+
+        	Token orToken = null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:5: ( fact -> fact )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:6: fact
+            {
+            pushFollow(FOLLOW_fact_in_fact_binding_expression4333);
+            fact240=fact();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_fact.add(fact240.getTree());
+
+
+            // AST REWRITE
+            // elements: fact
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1212:11: -> fact
+            {
+                adaptor.addChild(root_0, stream_fact.nextTree());
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            loop88:
+            do {
+                int alt88=2;
+                int LA88_0 = input.LA(1);
+
+                if ( (LA88_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    alt88=1;
+                }
+                else if ( (LA88_0==DOUBLE_PIPE) ) {
+                    alt88=1;
+                }
+
+
+                switch (alt88) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    {
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    int alt87=2;
+            	    int LA87_0 = input.LA(1);
+
+            	    if ( (LA87_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            	        alt87=1;
+            	    }
+            	    else if ( (LA87_0==DOUBLE_PIPE) ) {
+            	        alt87=2;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 87, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt87) {
+            	        case 1 :
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:23: value= or_key
+            	            {
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4345);
+            	            value=or_key();
+
+            	            state._fsp--;
+            	            if (state.failed) return retval;
+            	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
+            	            if ( state.backtracking==0 ) {
+            	              orToken = (value!=null?((Token)value.start):null);
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1212:62: pipe= DOUBLE_PIPE
+            	            {
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4351); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
+
+            	            if ( state.backtracking==0 ) {
+            	              orToken = pipe;
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4356);
+            	    fact241=fact();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_fact.add(fact241.getTree());
+
+
+            	    // AST REWRITE
+            	    // elements: fact_binding_expression, fact
+            	    // token labels: 
+            	    // rule labels: retval
+            	    // token list labels: 
+            	    // rule list labels: 
+            	    if ( state.backtracking==0 ) {
+            	    retval.tree = root_0;
+            	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            	    root_0 = (Object)adaptor.nil();
+            	    // 1213:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    {
+            	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1213:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        {
+            	        Object root_1 = (Object)adaptor.nil();
+            	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_OR, orToken), root_1);
+
+            	        adaptor.addChild(root_1, stream_retval.nextTree());
+            	        adaptor.addChild(root_1, stream_fact.nextTree());
+
+            	        adaptor.addChild(root_0, root_1);
+            	        }
+
+            	    }
+
+            	    retval.tree = root_0;}
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "fact_binding_expression"
+
+    public static class fact_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "fact"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1216:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_param_set )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_param_set )? RIGHT_PAREN ) ;
+    public final DRLParser.fact_return fact() throws RecognitionException {
+        DRLParser.fact_return retval = new DRLParser.fact_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN243=null;
+        Token RIGHT_PAREN245=null;
+        DRLParser.pattern_type_return pattern_type242 = null;
+
+        DRLParser.constraints_return constraints244 = null;
+
+        DRLParser.constr_param_set_return constr_param_set246 = null;
+
+
+        Object LEFT_PAREN243_tree=null;
+        Object RIGHT_PAREN245_tree=null;
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
+        RewriteRuleSubtreeStream stream_pattern_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+         boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1219:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_param_set )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_param_set )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1219:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_param_set )?
+            {
+            pushFollow(FOLLOW_pattern_type_in_fact4396);
+            pattern_type242=pattern_type();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type242.getTree());
+            LEFT_PAREN243=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4403); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN243);
+
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN243, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:4: ( constraints )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( (LA89_0==ID||LA89_0==LEFT_PAREN) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:4: constraints
+                    {
+                    pushFollow(FOLLOW_constraints_in_fact4414);
+                    constraints244=constraints();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_constraints.add(constraints244.getTree());
+
+                    }
+                    break;
+
+            }
+
+            RIGHT_PAREN245=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4420); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN245);
+
+            if ( state.backtracking==0 ) {
+              	isFailedOnConstraints = false;	
+            }
+            if ( state.backtracking==0 ) {
+              	if ((RIGHT_PAREN245!=null?RIGHT_PAREN245.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+              			emit(RIGHT_PAREN245, DroolsEditorType.SYMBOL);
+              			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+              		}	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1230:5: ( constr_param_set )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
+
+            if ( (LA90_0==AT) ) {
+                alt90=1;
+            }
+            switch (alt90) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1230:5: constr_param_set
+                    {
+                    pushFollow(FOLLOW_constr_param_set_in_fact4434);
+                    constr_param_set246=constr_param_set();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set246.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+
+            // AST REWRITE
+            // elements: RIGHT_PAREN, constraints, constr_param_set, pattern_type
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1232:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_param_set )? RIGHT_PAREN )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:5: ^( VT_FACT pattern_type ( constraints )? ( constr_param_set )? RIGHT_PAREN )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT, "VT_FACT"), root_1);
+
+                adaptor.addChild(root_1, stream_pattern_type.nextTree());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:28: ( constraints )?
+                if ( stream_constraints.hasNext() ) {
+                    adaptor.addChild(root_1, stream_constraints.nextTree());
+
+                }
+                stream_constraints.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1232:41: ( constr_param_set )?
+                if ( stream_constr_param_set.hasNext() ) {
+                    adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                }
+                stream_constr_param_set.reset();
+                adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               paraphrases.pop();	
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
+            		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
+            			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "fact"
+
+    public static class constr_param_set_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constr_param_set"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1246:1: constr_param_set : AT LEFT_PAREN ( constr_attr )+ RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )+ ) ;
+    public final DRLParser.constr_param_set_return constr_param_set() throws RecognitionException {
+        DRLParser.constr_param_set_return retval = new DRLParser.constr_param_set_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token AT247=null;
+        Token LEFT_PAREN248=null;
+        Token RIGHT_PAREN250=null;
+        DRLParser.constr_attr_return constr_attr249 = null;
+
+
+        Object AT247_tree=null;
+        Object LEFT_PAREN248_tree=null;
+        Object RIGHT_PAREN250_tree=null;
+        RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
+        RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
+        RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
+        RewriteRuleSubtreeStream stream_constr_attr=new RewriteRuleSubtreeStream(adaptor,"rule constr_attr");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:2: ( AT LEFT_PAREN ( constr_attr )+ RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:3: AT LEFT_PAREN ( constr_attr )+ RIGHT_PAREN
+            {
+            AT247=(Token)match(input,AT,FOLLOW_AT_in_constr_param_set4480); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT247);
+
+            LEFT_PAREN248=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_param_set4485); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN248);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:5: ( constr_attr )+
+            int cnt91=0;
+            loop91:
+            do {
+                int alt91=2;
+                int LA91_0 = input.LA(1);
+
+                if ( (LA91_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    alt91=1;
+                }
+
+
+                switch (alt91) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1250:5: constr_attr
+            	    {
+            	    pushFollow(FOLLOW_constr_attr_in_constr_param_set4492);
+            	    constr_attr249=constr_attr();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_constr_attr.add(constr_attr249.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt91 >= 1 ) break loop91;
+            	    if (state.backtracking>0) {state.failed=true; return retval;}
+                        EarlyExitException eee =
+                            new EarlyExitException(91, input);
+                        throw eee;
+                }
+                cnt91++;
+            } while (true);
+
+            RIGHT_PAREN250=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_param_set4497); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN250);
+
+
+
+            // AST REWRITE
+            // elements: constr_attr
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1252:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )+ )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1252:6: ^( VT_CONSTR_ATTRIBUTES ( constr_attr )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CONSTR_ATTRIBUTES, "VT_CONSTR_ATTRIBUTES"), root_1);
+
+                if ( !(stream_constr_attr.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_constr_attr.hasNext() ) {
+                    adaptor.addChild(root_1, stream_constr_attr.nextTree());
+
+                }
+                stream_constr_attr.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "constr_param_set"
+
+    public static class constr_attr_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constr_attr"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1257:1: constr_attr : ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior );
+    public final DRLParser.constr_attr_return constr_attr() throws RecognitionException {
+        DRLParser.constr_attr_return retval = new DRLParser.constr_attr_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.c_param_id_return c_param_id251 = null;
+
+        DRLParser.c_param_type_return c_param_type252 = null;
+
+        DRLParser.c_param_args_return c_param_args253 = null;
+
+        DRLParser.c_param_cut_return c_param_cut254 = null;
+
+        DRLParser.c_param_prior_return c_param_prior255 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1258:3: ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior )
+            int alt92=5;
+            int LA92_0 = input.LA(1);
+
+            if ( (LA92_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                int LA92_1 = input.LA(2);
+
+                if ( (LA92_1==EQUALS) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    int LA92_2 = input.LA(3);
+
+                    if ( (LA92_2==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                        int LA92_3 = input.LA(4);
+
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
+                            alt92=1;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.TYPE)))) ) {
+                            alt92=2;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
+                            alt92=3;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
+                            alt92=4;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
+                            alt92=5;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return retval;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 92, 3, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 92, 2, input);
+
+                        throw nvae;
+                    }
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 92, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 92, 0, input);
+
+                throw nvae;
+            }
+            switch (alt92) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:5: c_param_id
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_id_in_constr_attr4530);
+                    c_param_id251=c_param_id();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_id251.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:7: c_param_type
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_type_in_constr_attr4542);
+                    c_param_type252=c_param_type();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_type252.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:7: c_param_args
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_args_in_constr_attr4550);
+                    c_param_args253=c_param_args();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_args253.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:7: c_param_cut
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_cut_in_constr_attr4558);
+                    c_param_cut254=c_param_cut();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_cut254.getTree());
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1263:7: c_param_prior
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_prior_in_constr_attr4566);
+                    c_param_prior255=c_param_prior();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_prior255.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "constr_attr"
+
+    public static class c_param_id_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "c_param_id"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1267:1: c_param_id : id_key EQUALS cid= STRING -> ^( id_key cid ) ;
+    public final DRLParser.c_param_id_return c_param_id() throws RecognitionException {
+        DRLParser.c_param_id_return retval = new DRLParser.c_param_id_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token cid=null;
+        Token EQUALS257=null;
+        DRLParser.id_key_return id_key256 = null;
+
+
+        Object cid_tree=null;
+        Object EQUALS257_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+        RewriteRuleSubtreeStream stream_id_key=new RewriteRuleSubtreeStream(adaptor,"rule id_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1268:3: ( id_key EQUALS cid= STRING -> ^( id_key cid ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1269:5: id_key EQUALS cid= STRING
+            {
+            pushFollow(FOLLOW_id_key_in_c_param_id4588);
+            id_key256=id_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_id_key.add(id_key256.getTree());
+            EQUALS257=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id4594); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS257);
+
+            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id4602); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_STRING.add(cid);
+
+
+
+            // AST REWRITE
+            // elements: cid, id_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1272:5: -> ^( id_key cid )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:8: ^( id_key cid )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_id_key.nextNode(), root_1);
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "c_param_id"
+
+    public static class c_param_type_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "c_param_type"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1275:1: c_param_type : type_key EQUALS type= STRING -> ^( type_key type ) ;
+    public final DRLParser.c_param_type_return c_param_type() throws RecognitionException {
+        DRLParser.c_param_type_return retval = new DRLParser.c_param_type_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token type=null;
+        Token EQUALS259=null;
+        DRLParser.type_key_return type_key258 = null;
+
+
+        Object type_tree=null;
+        Object EQUALS259_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+        RewriteRuleSubtreeStream stream_type_key=new RewriteRuleSubtreeStream(adaptor,"rule type_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:3: ( type_key EQUALS type= STRING -> ^( type_key type ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1277:5: type_key EQUALS type= STRING
+            {
+            pushFollow(FOLLOW_type_key_in_c_param_type4631);
+            type_key258=type_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_type_key.add(type_key258.getTree());
+            EQUALS259=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_type4637); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS259);
+
+            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_type4645); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_STRING.add(type);
+
+
+
+            // AST REWRITE
+            // elements: type, type_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1280:5: -> ^( type_key type )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1280:8: ^( type_key type )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_type_key.nextNode(), root_1);
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "c_param_type"
+
+    public static class c_param_cut_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "c_param_cut"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:1: c_param_cut : kut_key EQUALS kut= STRING -> ^( kut_key kut ) ;
+    public final DRLParser.c_param_cut_return c_param_cut() throws RecognitionException {
+        DRLParser.c_param_cut_return retval = new DRLParser.c_param_cut_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token kut=null;
+        Token EQUALS261=null;
+        DRLParser.kut_key_return kut_key260 = null;
+
+
+        Object kut_tree=null;
+        Object EQUALS261_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+        RewriteRuleSubtreeStream stream_kut_key=new RewriteRuleSubtreeStream(adaptor,"rule kut_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1284:3: ( kut_key EQUALS kut= STRING -> ^( kut_key kut ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1285:5: kut_key EQUALS kut= STRING
+            {
+            pushFollow(FOLLOW_kut_key_in_c_param_cut4676);
+            kut_key260=kut_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_kut_key.add(kut_key260.getTree());
+            EQUALS261=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut4682); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS261);
+
+            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut4690); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_STRING.add(kut);
+
+
+
+            // AST REWRITE
+            // elements: kut, kut_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1288:5: -> ^( kut_key kut )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:8: ^( kut_key kut )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_kut_key.nextNode(), root_1);
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "c_param_cut"
+
+    public static class c_param_args_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "c_param_args"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:1: c_param_args : args_key EQUALS pms= STRING -> ^( args_key pms ) ;
+    public final DRLParser.c_param_args_return c_param_args() throws RecognitionException {
+        DRLParser.c_param_args_return retval = new DRLParser.c_param_args_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token pms=null;
+        Token EQUALS263=null;
+        DRLParser.args_key_return args_key262 = null;
+
+
+        Object pms_tree=null;
+        Object EQUALS263_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+        RewriteRuleSubtreeStream stream_args_key=new RewriteRuleSubtreeStream(adaptor,"rule args_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:3: ( args_key EQUALS pms= STRING -> ^( args_key pms ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:5: args_key EQUALS pms= STRING
+            {
+            pushFollow(FOLLOW_args_key_in_c_param_args4720);
+            args_key262=args_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_args_key.add(args_key262.getTree());
+            EQUALS263=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args4726); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS263);
+
+            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args4734); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_STRING.add(pms);
+
+
+
+            // AST REWRITE
+            // elements: pms, args_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1296:5: -> ^( args_key pms )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1296:8: ^( args_key pms )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_args_key.nextNode(), root_1);
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "c_param_args"
+
+    public static class c_param_prior_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "c_param_prior"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1299:1: c_param_prior : prior_key EQUALS pri= STRING -> ^( prior_key pri ) ;
+    public final DRLParser.c_param_prior_return c_param_prior() throws RecognitionException {
+        DRLParser.c_param_prior_return retval = new DRLParser.c_param_prior_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token pri=null;
+        Token EQUALS265=null;
+        DRLParser.prior_key_return prior_key264 = null;
+
+
+        Object pri_tree=null;
+        Object EQUALS265_tree=null;
+        RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
+        RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
+        RewriteRuleSubtreeStream stream_prior_key=new RewriteRuleSubtreeStream(adaptor,"rule prior_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:3: ( prior_key EQUALS pri= STRING -> ^( prior_key pri ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:5: prior_key EQUALS pri= STRING
+            {
+            pushFollow(FOLLOW_prior_key_in_c_param_prior4765);
+            prior_key264=prior_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_prior_key.add(prior_key264.getTree());
+            EQUALS265=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior4771); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS265);
+
+            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior4779); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_STRING.add(pri);
+
+
+
+            // AST REWRITE
+            // elements: pri, prior_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1304:5: -> ^( prior_key pri )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1304:8: ^( prior_key pri )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(stream_prior_key.nextNode(), root_1);
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "c_param_prior"
+
+    public static class constraints_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constraints"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:1: constraints : constraint ( COMMA constraint )* ;
+    public final DRLParser.constraints_return constraints() throws RecognitionException {
+        DRLParser.constraints_return retval = new DRLParser.constraints_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token COMMA267=null;
+        DRLParser.constraint_return constraint266 = null;
+
+        DRLParser.constraint_return constraint268 = null;
+
+
+        Object COMMA267_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:2: ( constraint ( COMMA constraint )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:4: constraint ( COMMA constraint )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_constraint_in_constraints4811);
+            constraint266=constraint();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint266.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:15: ( COMMA constraint )*
+            loop93:
+            do {
+                int alt93=2;
+                int LA93_0 = input.LA(1);
+
+                if ( (LA93_0==COMMA) ) {
+                    alt93=1;
+                }
+
+
+                switch (alt93) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:17: COMMA constraint
+            	    {
+            	    COMMA267=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4815); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA267, DroolsEditorType.SYMBOL);
+            	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
+            	    }
+            	    pushFollow(FOLLOW_constraint_in_constraints4822);
+            	    constraint268=constraint();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint268.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "constraints"
+
+    public static class constraint_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constraint"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1319:1: constraint : or_constr ;
+    public final DRLParser.constraint_return constraint() throws RecognitionException {
+        DRLParser.constraint_return retval = new DRLParser.constraint_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.or_constr_return or_constr269 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:2: ( or_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:4: or_constr
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_or_constr_in_constraint4836);
+            or_constr269=or_constr();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr269.getTree());
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "constraint"
+
+    public static class or_constr_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "or_constr"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1323:1: or_constr : or_constr_config ( DOUBLE_PIPE and_constr )* ;
+    public final DRLParser.or_constr_return or_constr() throws RecognitionException {
+        DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOUBLE_PIPE271=null;
+        DRLParser.or_constr_config_return or_constr_config270 = null;
+
+        DRLParser.and_constr_return and_constr272 = null;
+
+
+        Object DOUBLE_PIPE271_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1324:2: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1325:6: or_constr_config ( DOUBLE_PIPE and_constr )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_or_constr_config_in_or_constr4864);
+            or_constr_config270=or_constr_config();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr_config270.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:9: ( DOUBLE_PIPE and_constr )*
+            loop94:
+            do {
+                int alt94=2;
+                int LA94_0 = input.LA(1);
+
+                if ( (LA94_0==DOUBLE_PIPE) ) {
+                    alt94=1;
+                }
+
+
+                switch (alt94) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:10: DOUBLE_PIPE and_constr
+            	    {
+            	    DOUBLE_PIPE271=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4886); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    DOUBLE_PIPE271_tree = (Object)adaptor.create(DOUBLE_PIPE271);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE271_tree, root_0);
+            	    }
+            	    pushFollow(FOLLOW_and_constr_in_or_constr4922);
+            	    and_constr272=and_constr();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr272.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop94;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "or_constr"
+
+    public static class or_constr_config_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "or_constr_config"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1333:1: or_constr_config : ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE ( constr_param_set )? and_constr -> ^( SINGLE_PIPE ( constr_param_set )? and_constr and_constr ) | and_constr );
+    public final DRLParser.or_constr_config_return or_constr_config() throws RecognitionException {
+        DRLParser.or_constr_config_return retval = new DRLParser.or_constr_config_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SINGLE_PIPE274=null;
+        DRLParser.and_constr_return and_constr273 = null;
+
+        DRLParser.constr_param_set_return constr_param_set275 = null;
+
+        DRLParser.and_constr_return and_constr276 = null;
+
+        DRLParser.and_constr_return and_constr277 = null;
+
+
+        Object SINGLE_PIPE274_tree=null;
+        RewriteRuleTokenStream stream_SINGLE_PIPE=new RewriteRuleTokenStream(adaptor,"token SINGLE_PIPE");
+        RewriteRuleSubtreeStream stream_and_constr=new RewriteRuleSubtreeStream(adaptor,"rule and_constr");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1334:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE ( constr_param_set )? and_constr -> ^( SINGLE_PIPE ( constr_param_set )? and_constr and_constr ) | and_constr )
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==ID) ) {
+                int LA96_1 = input.LA(2);
+
+                if ( ((synpred11_DRL()||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL)))))) ) {
+                    alt96=1;
+                }
+                else if ( (true) ) {
+                    alt96=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 96, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA96_0==LEFT_PAREN) ) {
+                int LA96_2 = input.LA(2);
+
+                if ( (synpred11_DRL()) ) {
+                    alt96=1;
+                }
+                else if ( (true) ) {
+                    alt96=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 96, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 96, 0, input);
+
+                throw nvae;
+            }
+            switch (alt96) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE ( constr_param_set )? and_constr
+                    {
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4978);
+                    and_constr273=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr273.getTree());
+                    SINGLE_PIPE274=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4989); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_PIPE.add(SINGLE_PIPE274);
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:12: ( constr_param_set )?
+                    int alt95=2;
+                    int LA95_0 = input.LA(1);
+
+                    if ( (LA95_0==AT) ) {
+                        alt95=1;
+                    }
+                    switch (alt95) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1341:12: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_or_constr_config5038);
+                            constr_param_set275=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set275.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config5065);
+                    and_constr276=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr276.getTree());
+
+
+                    // AST REWRITE
+                    // elements: constr_param_set, and_constr, SINGLE_PIPE, and_constr
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1343:7: -> ^( SINGLE_PIPE ( constr_param_set )? and_constr and_constr )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1343:10: ^( SINGLE_PIPE ( constr_param_set )? and_constr and_constr )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_PIPE.nextNode(), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1345:13: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        adaptor.addChild(root_1, stream_and_constr.nextTree());
+                        adaptor.addChild(root_1, stream_and_constr.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1348:5: and_constr
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config5135);
+                    and_constr277=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr277.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "or_constr_config"
+
+    public static class and_constr_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "and_constr"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1351:1: and_constr : and_constr_config ( DOUBLE_AMPER unary_constr )* ;
+    public final DRLParser.and_constr_return and_constr() throws RecognitionException {
+        DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOUBLE_AMPER279=null;
+        DRLParser.and_constr_config_return and_constr_config278 = null;
+
+        DRLParser.unary_constr_return unary_constr280 = null;
+
+
+        Object DOUBLE_AMPER279_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1353:2: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1354:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_and_constr_config_in_and_constr5175);
+            and_constr_config278=and_constr_config();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr_config278.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1356:11: ( DOUBLE_AMPER unary_constr )*
+            loop97:
+            do {
+                int alt97=2;
+                int LA97_0 = input.LA(1);
+
+                if ( (LA97_0==DOUBLE_AMPER) ) {
+                    alt97=1;
+                }
+
+
+                switch (alt97) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1356:12: DOUBLE_AMPER unary_constr
+            	    {
+            	    DOUBLE_AMPER279=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr5199); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    DOUBLE_AMPER279_tree = (Object)adaptor.create(DOUBLE_AMPER279);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER279_tree, root_0);
+            	    }
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr5238);
+            	    unary_constr280=unary_constr();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr280.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop97;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "and_constr"
+
+    public static class and_constr_config_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "and_constr_config"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1363:1: and_constr_config : ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_param_set )? unary_constr -> ^( SINGLE_AMPER ( constr_param_set )? unary_constr unary_constr ) | unary_constr );
+    public final DRLParser.and_constr_config_return and_constr_config() throws RecognitionException {
+        DRLParser.and_constr_config_return retval = new DRLParser.and_constr_config_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token SINGLE_AMPER282=null;
+        DRLParser.unary_constr_return unary_constr281 = null;
+
+        DRLParser.constr_param_set_return constr_param_set283 = null;
+
+        DRLParser.unary_constr_return unary_constr284 = null;
+
+        DRLParser.unary_constr_return unary_constr285 = null;
+
+
+        Object SINGLE_AMPER282_tree=null;
+        RewriteRuleTokenStream stream_SINGLE_AMPER=new RewriteRuleTokenStream(adaptor,"token SINGLE_AMPER");
+        RewriteRuleSubtreeStream stream_unary_constr=new RewriteRuleSubtreeStream(adaptor,"rule unary_constr");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1364:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_param_set )? unary_constr -> ^( SINGLE_AMPER ( constr_param_set )? unary_constr unary_constr ) | unary_constr )
+            int alt99=2;
+            int LA99_0 = input.LA(1);
+
+            if ( (LA99_0==ID) ) {
+                int LA99_1 = input.LA(2);
+
+                if ( (((synpred12_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred12_DRL())) ) {
+                    alt99=1;
+                }
+                else if ( (true) ) {
+                    alt99=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 99, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA99_0==LEFT_PAREN) ) {
+                int LA99_2 = input.LA(2);
+
+                if ( (synpred12_DRL()) ) {
+                    alt99=1;
+                }
+                else if ( (true) ) {
+                    alt99=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 99, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 99, 0, input);
+
+                throw nvae;
+            }
+            switch (alt99) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_param_set )? unary_constr
+                    {
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5316);
+                    unary_constr281=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr281.getTree());
+                    SINGLE_AMPER282=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5327); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_AMPER.add(SINGLE_AMPER282);
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1371:12: ( constr_param_set )?
+                    int alt98=2;
+                    int LA98_0 = input.LA(1);
+
+                    if ( (LA98_0==AT) ) {
+                        alt98=1;
+                    }
+                    switch (alt98) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1371:12: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_and_constr_config5376);
+                            constr_param_set283=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set283.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5407);
+                    unary_constr284=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr284.getTree());
+
+
+                    // AST REWRITE
+                    // elements: unary_constr, SINGLE_AMPER, constr_param_set, unary_constr
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1373:7: -> ^( SINGLE_AMPER ( constr_param_set )? unary_constr unary_constr )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1373:10: ^( SINGLE_AMPER ( constr_param_set )? unary_constr unary_constr )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_AMPER.nextNode(), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1375:13: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        adaptor.addChild(root_1, stream_unary_constr.nextTree());
+                        adaptor.addChild(root_1, stream_unary_constr.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1378:5: unary_constr
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5488);
+                    unary_constr285=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr285.getTree());
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "and_constr_config"
+
+    public static class unary_constr_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "unary_constr"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1383:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
+        DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN289=null;
+        Token RIGHT_PAREN291=null;
+        DRLParser.eval_key_return eval_key286 = null;
+
+        DRLParser.paren_chunk_return paren_chunk287 = null;
+
+        DRLParser.field_constraint_return field_constraint288 = null;
+
+        DRLParser.or_constr_return or_constr290 = null;
+
+
+        Object LEFT_PAREN289_tree=null;
+        Object RIGHT_PAREN291_tree=null;
+
+         boolean isFailed = true;	
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            int alt100=3;
+            alt100 = dfa100.predict(input);
+            switch (alt100) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:4: eval_key paren_chunk
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_eval_key_in_unary_constr5542);
+                    eval_key286=eval_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key286.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5545);
+                    paren_chunk287=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk287.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1388:4: field_constraint
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr5550);
+                    field_constraint288=field_constraint();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint288.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1389:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    LEFT_PAREN289=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5556); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN289, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_or_constr_in_unary_constr5566);
+                    or_constr290=or_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr290.getTree());
+                    RIGHT_PAREN291=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5571); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    RIGHT_PAREN291_tree = (Object)adaptor.create(RIGHT_PAREN291);
+                    adaptor.addChild(root_0, RIGHT_PAREN291_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN291, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+            if ( state.backtracking==0 ) {
+               isFailed = false;	
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+             
+            	if (isEditorInterfaceEnabled && isFailed && input.LA(2) == EOF && input.LA(1) == ID) {
+            		emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+            		input.consume();
+            		if (input.get(input.index() - 1).getType() == WS)
+            			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "unary_constr"
+
+    public static class field_constraint_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "field_constraint"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? ( cut_key )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ( ^( VT_CUT cut_key ) )? ) ) | accessor_path or_restr_connective ( cut_key )? -> ^( VT_FIELD accessor_path or_restr_connective ( ^( VT_CUT cut_key ) )? ) );
+    public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
+        DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token arw=null;
+        DRLParser.label_return label292 = null;
+
+        DRLParser.accessor_path_return accessor_path293 = null;
+
+        DRLParser.or_restr_connective_return or_restr_connective294 = null;
+
+        DRLParser.paren_chunk_return paren_chunk295 = null;
+
+        DRLParser.cut_key_return cut_key296 = null;
+
+        DRLParser.accessor_path_return accessor_path297 = null;
+
+        DRLParser.or_restr_connective_return or_restr_connective298 = null;
+
+        DRLParser.cut_key_return cut_key299 = null;
+
+
+        Object arw_tree=null;
+        RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
+        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
+        RewriteRuleSubtreeStream stream_cut_key=new RewriteRuleSubtreeStream(adaptor,"rule cut_key");
+        RewriteRuleSubtreeStream stream_or_restr_connective=new RewriteRuleSubtreeStream(adaptor,"rule or_restr_connective");
+        RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
+        RewriteRuleSubtreeStream stream_accessor_path=new RewriteRuleSubtreeStream(adaptor,"rule accessor_path");
+
+        	boolean isArrow = false;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? ( cut_key )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ( ^( VT_CUT cut_key ) )? ) ) | accessor_path or_restr_connective ( cut_key )? -> ^( VT_FIELD accessor_path or_restr_connective ( ^( VT_CUT cut_key ) )? ) )
+            int alt104=2;
+            int LA104_0 = input.LA(1);
+
+            if ( (LA104_0==ID) ) {
+                int LA104_1 = input.LA(2);
+
+                if ( (LA104_1==COLON) ) {
+                    alt104=1;
+                }
+                else if ( ((LA104_1>=ID && LA104_1<=DOT)||LA104_1==LEFT_PAREN||(LA104_1>=EQUAL && LA104_1<=NOT_EQUAL)||LA104_1==LEFT_SQUARE||LA104_1==APPROX) ) {
+                    alt104=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 104, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 104, 0, input);
+
+                throw nvae;
+            }
+            switch (alt104) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1405:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? ( cut_key )?
+                    {
+                    pushFollow(FOLLOW_label_in_field_constraint5591);
+                    label292=label();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_label.add(label292.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5593);
+                    accessor_path293=accessor_path();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path293.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    int alt101=3;
+                    int LA101_0 = input.LA(1);
+
+                    if ( (LA101_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                        alt101=1;
+                    }
+                    else if ( (LA101_0==LEFT_PAREN||(LA101_0>=EQUAL && LA101_0<=NOT_EQUAL)||LA101_0==APPROX) ) {
+                        alt101=1;
+                    }
+                    else if ( (LA101_0==ARROW) ) {
+                        alt101=2;
+                    }
+                    switch (alt101) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:5: or_restr_connective
+                            {
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5600);
+                            or_restr_connective294=or_restr_connective();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective294.getTree());
+
+                            }
+                            break;
+                        case 2 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:27: arw= ARROW paren_chunk
+                            {
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5606); if (state.failed) return retval; 
+                            if ( state.backtracking==0 ) stream_ARROW.add(arw);
+
+                            if ( state.backtracking==0 ) {
+                              	emit(arw, DroolsEditorType.SYMBOL);	
+                            }
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5610);
+                            paren_chunk295=paren_chunk();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk295.getTree());
+                            if ( state.backtracking==0 ) {
+                              isArrow = true;
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:3: ( cut_key )?
+                    int alt102=2;
+                    int LA102_0 = input.LA(1);
+
+                    if ( (LA102_0==CUT) ) {
+                        alt102=1;
+                    }
+                    switch (alt102) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:3: cut_key
+                            {
+                            pushFollow(FOLLOW_cut_key_in_field_constraint5618);
+                            cut_key296=cut_key();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_cut_key.add(cut_key296.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: cut_key, or_restr_connective, label, label, accessor_path, accessor_path, paren_chunk
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1408:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    if (isArrow) {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
+
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:39: ^( VT_FIELD accessor_path )
+                        {
+                        Object root_2 = (Object)adaptor.nil();
+                        root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
+
+                        adaptor.addChild(root_2, stream_accessor_path.nextTree());
+
+                        adaptor.addChild(root_1, root_2);
+                        }
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        if ( stream_paren_chunk.hasNext() ) {
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1408:66: ^( VK_EVAL[$arw] paren_chunk )
+                            {
+                            Object root_1 = (Object)adaptor.nil();
+                            root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VK_EVAL, arw), root_1);
+
+                            adaptor.addChild(root_1, stream_paren_chunk.nextTree());
+
+                            adaptor.addChild(root_0, root_1);
+                            }
+
+                        }
+                        stream_paren_chunk.reset();
+
+                    }
+                    else // 1409:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ( ^( VT_CUT cut_key ) )? ) )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ( ^( VT_CUT cut_key ) )? ) )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
+
+                        adaptor.addChild(root_1, stream_label.nextTree());
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:28: ^( VT_FIELD accessor_path ( or_restr_connective )? ( ^( VT_CUT cut_key ) )? )
+                        {
+                        Object root_2 = (Object)adaptor.nil();
+                        root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
+
+                        adaptor.addChild(root_2, stream_accessor_path.nextTree());
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:53: ( or_restr_connective )?
+                        if ( stream_or_restr_connective.hasNext() ) {
+                            adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
+
+                        }
+                        stream_or_restr_connective.reset();
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:74: ( ^( VT_CUT cut_key ) )?
+                        if ( stream_cut_key.hasNext() ) {
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:74: ^( VT_CUT cut_key )
+                            {
+                            Object root_3 = (Object)adaptor.nil();
+                            root_3 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CUT, "VT_CUT"), root_3);
+
+                            adaptor.addChild(root_3, stream_cut_key.nextTree());
+
+                            adaptor.addChild(root_2, root_3);
+                            }
+
+                        }
+                        stream_cut_key.reset();
+
+                        adaptor.addChild(root_1, root_2);
+                        }
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:4: accessor_path or_restr_connective ( cut_key )?
+                    {
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5676);
+                    accessor_path297=accessor_path();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path297.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5678);
+                    or_restr_connective298=or_restr_connective();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective298.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:38: ( cut_key )?
+                    int alt103=2;
+                    int LA103_0 = input.LA(1);
+
+                    if ( (LA103_0==CUT) ) {
+                        alt103=1;
+                    }
+                    switch (alt103) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:38: cut_key
+                            {
+                            pushFollow(FOLLOW_cut_key_in_field_constraint5680);
+                            cut_key299=cut_key();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_cut_key.add(cut_key299.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: or_restr_connective, accessor_path, cut_key
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1411:3: -> ^( VT_FIELD accessor_path or_restr_connective ( ^( VT_CUT cut_key ) )? )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:6: ^( VT_FIELD accessor_path or_restr_connective ( ^( VT_CUT cut_key ) )? )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
+
+                        adaptor.addChild(root_1, stream_accessor_path.nextTree());
+                        adaptor.addChild(root_1, stream_or_restr_connective.nextTree());
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:51: ( ^( VT_CUT cut_key ) )?
+                        if ( stream_cut_key.hasNext() ) {
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1411:51: ^( VT_CUT cut_key )
+                            {
+                            Object root_2 = (Object)adaptor.nil();
+                            root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CUT, "VT_CUT"), root_2);
+
+                            adaptor.addChild(root_2, stream_cut_key.nextTree());
+
+                            adaptor.addChild(root_1, root_2);
+                            }
+
+                        }
+                        stream_cut_key.reset();
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "field_constraint"
+
+    public static class cut_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "cut"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1414:1: cut : cut_key -> ^( VT_CUT cut_key ) ;
+    public final DRLParser.cut_return cut() throws RecognitionException {
+        DRLParser.cut_return retval = new DRLParser.cut_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.cut_key_return cut_key300 = null;
+
+
+        RewriteRuleSubtreeStream stream_cut_key=new RewriteRuleSubtreeStream(adaptor,"rule cut_key");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:3: ( cut_key -> ^( VT_CUT cut_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:5: cut_key
+            {
+            pushFollow(FOLLOW_cut_key_in_cut5712);
+            cut_key300=cut_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_cut_key.add(cut_key300.getTree());
+
+
+            // AST REWRITE
+            // elements: cut_key
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1416:3: -> ^( VT_CUT cut_key )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1416:6: ^( VT_CUT cut_key )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CUT, "VT_CUT"), root_1);
+
+                adaptor.addChild(root_1, stream_cut_key.nextTree());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "cut"
+
+    public static class label_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "label"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1419:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    public final DRLParser.label_return label() throws RecognitionException {
+        DRLParser.label_return retval = new DRLParser.label_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token value=null;
+        Token COLON301=null;
+
+        Object value_tree=null;
+        Object COLON301_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1420:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1420:4: value= ID COLON
+            {
+            value=(Token)match(input,ID,FOLLOW_ID_in_label5736); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(value);
+
+            if ( state.backtracking==0 ) {
+              	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
+            }
+            COLON301=(Token)match(input,COLON,FOLLOW_COLON_in_label5743); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON301);
+
+            if ( state.backtracking==0 ) {
+              	emit(COLON301, DroolsEditorType.SYMBOL);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1422:3: -> VT_LABEL[$value]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "label"
+
+    public static class or_restr_connective_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "or_restr_connective"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
+        DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOUBLE_PIPE303=null;
+        DRLParser.and_restr_connective_return and_restr_connective302 = null;
+
+        DRLParser.and_restr_connective_return and_restr_connective304 = null;
+
+
+        Object DOUBLE_PIPE303_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5764);
+            and_restr_connective302=and_restr_connective();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective302.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            loop105:
+            do {
+                int alt105=2;
+                int LA105_0 = input.LA(1);
+
+                if ( (LA105_0==DOUBLE_PIPE) ) {
+                    int LA105_4 = input.LA(2);
+
+                    if ( (((validateRestr()))) ) {
+                        alt105=1;
+                    }
+
+
+                }
+
+
+                switch (alt105) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    {
+            	    if ( !(((validateRestr()))) ) {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
+            	    }
+            	    DOUBLE_PIPE303=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5770); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    DOUBLE_PIPE303_tree = (Object)adaptor.create(DOUBLE_PIPE303);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE303_tree, root_0);
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	      	emit(DOUBLE_PIPE303, DroolsEditorType.SYMBOL);	
+            	    }
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5780);
+            	    and_restr_connective304=and_restr_connective();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective304.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop105;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException re ) {
+
+            	if (!lookaheadTest){
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+            	} else {
+            		throw re;
+            	}
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "or_restr_connective"
+
+    public static class and_restr_connective_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "and_restr_connective"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
+        DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOUBLE_AMPER306=null;
+        DRLParser.constraint_expression_return constraint_expression305 = null;
+
+        DRLParser.constraint_expression_return constraint_expression307 = null;
+
+
+        Object DOUBLE_AMPER306_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5801);
+            constraint_expression305=constraint_expression();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression305.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            loop106:
+            do {
+                int alt106=2;
+                int LA106_0 = input.LA(1);
+
+                if ( (LA106_0==DOUBLE_AMPER) ) {
+                    int LA106_6 = input.LA(2);
+
+                    if ( (((validateRestr()))) ) {
+                        alt106=1;
+                    }
+
+
+                }
+
+
+                switch (alt106) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    {
+            	    if ( !(((validateRestr()))) ) {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
+            	    }
+            	    DOUBLE_AMPER306=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5807); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	    DOUBLE_AMPER306_tree = (Object)adaptor.create(DOUBLE_AMPER306);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER306_tree, root_0);
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	      	emit(DOUBLE_AMPER306, DroolsEditorType.SYMBOL);	
+            	    }
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5814);
+            	    constraint_expression307=constraint_expression();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression307.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop106;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException re ) {
+
+            	if (!lookaheadTest){
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+            	} else {
+            		throw re;
+            	}
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "and_restr_connective"
+
+    public static class constraint_expression_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constraint_expression"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1453:1: constraint_expression options {k=3; } : ( compound_operator | op= simple_operator ( constr_param_set )? val= expression_value -> ^( simple_operator ( constr_param_set )? expression_value ) | custom_operator ( constr_param_set )? ( expression_value )? -> ^( custom_operator ( constr_param_set )? ( expression_value )? ) | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
+        DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN313=null;
+        Token RIGHT_PAREN315=null;
+        DRLParser.simple_operator_return op = null;
+
+        DRLParser.expression_value_return val = null;
+
+        DRLParser.compound_operator_return compound_operator308 = null;
+
+        DRLParser.constr_param_set_return constr_param_set309 = null;
+
+        DRLParser.custom_operator_return custom_operator310 = null;
+
+        DRLParser.constr_param_set_return constr_param_set311 = null;
+
+        DRLParser.expression_value_return expression_value312 = null;
+
+        DRLParser.or_restr_connective_return or_restr_connective314 = null;
+
+
+        Object LEFT_PAREN313_tree=null;
+        Object RIGHT_PAREN315_tree=null;
+        RewriteRuleSubtreeStream stream_expression_value=new RewriteRuleSubtreeStream(adaptor,"rule expression_value");
+        RewriteRuleSubtreeStream stream_constr_param_set=new RewriteRuleSubtreeStream(adaptor,"rule constr_param_set");
+        RewriteRuleSubtreeStream stream_custom_operator=new RewriteRuleSubtreeStream(adaptor,"rule custom_operator");
+        RewriteRuleSubtreeStream stream_simple_operator=new RewriteRuleSubtreeStream(adaptor,"rule simple_operator");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:3: ( compound_operator | op= simple_operator ( constr_param_set )? val= expression_value -> ^( simple_operator ( constr_param_set )? expression_value ) | custom_operator ( constr_param_set )? ( expression_value )? -> ^( custom_operator ( constr_param_set )? ( expression_value )? ) | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            int alt110=4;
+            alt110 = dfa110.predict(input);
+            switch (alt110) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:5: compound_operator
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5842);
+                    compound_operator308=compound_operator();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator308.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:4: op= simple_operator ( constr_param_set )? val= expression_value
+                    {
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5849);
+                    op=simple_operator();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_simple_operator.add(op.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:23: ( constr_param_set )?
+                    int alt107=2;
+                    int LA107_0 = input.LA(1);
+
+                    if ( (LA107_0==AT) ) {
+                        alt107=1;
+                    }
+                    switch (alt107) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:23: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_constraint_expression5851);
+                            constr_param_set309=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set309.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_expression_value_in_constraint_expression5856);
+                    val=expression_value();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_expression_value.add(val.getTree());
+
+
+                    // AST REWRITE
+                    // elements: expression_value, constr_param_set, simple_operator
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1458:3: -> ^( simple_operator ( constr_param_set )? expression_value )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:6: ^( simple_operator ( constr_param_set )? expression_value )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_simple_operator.nextNode(), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:24: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        adaptor.addChild(root_1, stream_expression_value.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:4: custom_operator ( constr_param_set )? ( expression_value )?
+                    {
+                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5875);
+                    custom_operator310=custom_operator();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_custom_operator.add(custom_operator310.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:20: ( constr_param_set )?
+                    int alt108=2;
+                    int LA108_0 = input.LA(1);
+
+                    if ( (LA108_0==AT) ) {
+                        alt108=1;
+                    }
+                    switch (alt108) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:20: constr_param_set
+                            {
+                            pushFollow(FOLLOW_constr_param_set_in_constraint_expression5877);
+                            constr_param_set311=constr_param_set();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_param_set.add(constr_param_set311.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:38: ( expression_value )?
+                    int alt109=2;
+                    int LA109_0 = input.LA(1);
+
+                    if ( (LA109_0==ID||(LA109_0>=STRING && LA109_0<=LEFT_PAREN)||(LA109_0>=BOOL && LA109_0<=INT)||(LA109_0>=FLOAT && LA109_0<=NULL)) ) {
+                        alt109=1;
+                    }
+                    switch (alt109) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:38: expression_value
+                            {
+                            pushFollow(FOLLOW_expression_value_in_constraint_expression5880);
+                            expression_value312=expression_value();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_expression_value.add(expression_value312.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: expression_value, custom_operator, constr_param_set
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 1460:3: -> ^( custom_operator ( constr_param_set )? ( expression_value )? )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:6: ^( custom_operator ( constr_param_set )? ( expression_value )? )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_custom_operator.nextNode(), root_1);
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:24: ( constr_param_set )?
+                        if ( stream_constr_param_set.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_param_set.nextTree());
+
+                        }
+                        stream_constr_param_set.reset();
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:42: ( expression_value )?
+                        if ( stream_expression_value.hasNext() ) {
+                            adaptor.addChild(root_1, stream_expression_value.nextTree());
+
+                        }
+                        stream_expression_value.reset();
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1461:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    LEFT_PAREN313=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5901); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                      	emit(LEFT_PAREN313, DroolsEditorType.SYMBOL);	
+                    }
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5910);
+                    or_restr_connective314=or_restr_connective();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective314.getTree());
+                    RIGHT_PAREN315=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5915); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    RIGHT_PAREN315_tree = (Object)adaptor.create(RIGHT_PAREN315);
+                    adaptor.addChild(root_0, RIGHT_PAREN315_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(RIGHT_PAREN315, DroolsEditorType.SYMBOL);	
+                    }
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch ( RecognitionException re ) {
+
+            	if (!lookaheadTest){
+                    reportError(re);
+                    recover(input,re);
+                	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+            	} else {
+            		throw re;
+            	}
+
+        }
+        finally {
+
+            	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		emit(input.LT(1), DroolsEditorType.KEYWORD);
+            		input.consume();
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+            	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID && 
+            				input.LA(2) == ID && validateLT(1, DroolsSoftKeywords.NOT)) {
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		emit(input.LT(1), DroolsEditorType.KEYWORD);
+            		emit(input.LT(2), DroolsEditorType.KEYWORD);
+            		input.consume();
+            		input.consume();
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+            	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF  && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.IN)) {
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		emit(input.LT(1), DroolsEditorType.KEYWORD);
+            		emit(input.LT(2), DroolsEditorType.SYMBOL);
+            		input.consume();
+            		input.consume();
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+            	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID) {
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		emit(input.LT(1), DroolsEditorType.KEYWORD);
+            		emit(input.LT(2), DroolsEditorType.IDENTIFIER);
+            		input.consume();
+            		input.consume();
+            		if (input.get(input.index() - 1).getType() == WS){
+            			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_END);
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "constraint_expression"
+
+    public static class simple_operator_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "simple_operator"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1507:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) ;
+    public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
+        DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token EQUAL316=null;
+        Token GREATER317=null;
+        Token GREATER_EQUAL318=null;
+        Token LESS319=null;
+        Token LESS_EQUAL320=null;
+        Token NOT_EQUAL321=null;
+
+        Object EQUAL316_tree=null;
+        Object GREATER317_tree=null;
+        Object GREATER_EQUAL318_tree=null;
+        Object LESS319_tree=null;
+        Object LESS_EQUAL320_tree=null;
+        Object NOT_EQUAL321_tree=null;
+
+
+          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1511:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            int alt111=6;
+            switch ( input.LA(1) ) {
+            case EQUAL:
+                {
+                alt111=1;
+                }
+                break;
+            case GREATER:
+                {
+                alt111=2;
+                }
+                break;
+            case GREATER_EQUAL:
+                {
+                alt111=3;
+                }
+                break;
+            case LESS:
+                {
+                alt111=4;
+                }
+                break;
+            case LESS_EQUAL:
+                {
+                alt111=5;
+                }
+                break;
+            case NOT_EQUAL:
+                {
+                alt111=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 111, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt111) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1513:7: EQUAL
+                    {
+                    EQUAL316=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5958); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    EQUAL316_tree = (Object)adaptor.create(EQUAL316);
+                    root_0 = (Object)adaptor.becomeRoot(EQUAL316_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(EQUAL316, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      		    
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1519:7: GREATER
+                    {
+                    GREATER317=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator6017); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    GREATER317_tree = (Object)adaptor.create(GREATER317);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER317_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(GREATER317, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+                      	      
+                      	      
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1525:7: GREATER_EQUAL
+                    {
+                    GREATER_EQUAL318=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator6056); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    GREATER_EQUAL318_tree = (Object)adaptor.create(GREATER_EQUAL318);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL318_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(GREATER_EQUAL318, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1531:7: LESS
+                    {
+                    LESS319=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator6091); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    LESS319_tree = (Object)adaptor.create(LESS319);
+                    root_0 = (Object)adaptor.becomeRoot(LESS319_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(LESS319, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1537:7: LESS_EQUAL
+                    {
+                    LESS_EQUAL320=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator6126); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    LESS_EQUAL320_tree = (Object)adaptor.create(LESS_EQUAL320);
+                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL320_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(LESS_EQUAL320, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1543:7: NOT_EQUAL
+                    {
+                    NOT_EQUAL321=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator6161); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    NOT_EQUAL321_tree = (Object)adaptor.create(NOT_EQUAL321);
+                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL321_tree, root_0);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(NOT_EQUAL321, DroolsEditorType.SYMBOL);	
+                    }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "simple_operator"
+
+    public static class custom_operator_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "custom_operator"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:1: custom_operator : ( not_key )? ( approx_symb )? operator_key ( square_chunk )? ;
+    public final DRLParser.custom_operator_return custom_operator() throws RecognitionException {
+        DRLParser.custom_operator_return retval = new DRLParser.custom_operator_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.not_key_return not_key322 = null;
+
+        DRLParser.approx_symb_return approx_symb323 = null;
+
+        DRLParser.operator_key_return operator_key324 = null;
+
+        DRLParser.square_chunk_return square_chunk325 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:3: ( ( not_key )? ( approx_symb )? operator_key ( square_chunk )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:9: ( not_key )? ( approx_symb )? operator_key ( square_chunk )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:9: ( not_key )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                int LA112_1 = input.LA(2);
+
+                if ( (LA112_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                    int LA112_4 = input.LA(3);
+
+                    if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                        alt112=1;
+                    }
+                }
+                else if ( (LA112_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt112=1;
+                }
+            }
+            switch (alt112) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:9: not_key
+                    {
+                    pushFollow(FOLLOW_not_key_in_custom_operator6227);
+                    not_key322=not_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key322.getTree());
+
+                    }
+                    break;
+
+            }
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: ( approx_symb )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==APPROX) ) {
+                alt113=1;
+            }
+            switch (alt113) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:9: approx_symb
+                    {
+                    pushFollow(FOLLOW_approx_symb_in_custom_operator6238);
+                    approx_symb323=approx_symb();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, approx_symb323.getTree());
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_operator_key_in_custom_operator6241);
+            operator_key324=operator_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key324.getTree(), root_0);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:9: ( square_chunk )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==LEFT_SQUARE) ) {
+                alt114=1;
+            }
+            switch (alt114) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:9: square_chunk
+                    {
+                    pushFollow(FOLLOW_square_chunk_in_custom_operator6252);
+                    square_chunk325=square_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk325.getTree());
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+                      
+                      
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "custom_operator"
+
+    public static class compound_operator_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "compound_operator"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
+        DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_PAREN329=null;
+        Token COMMA331=null;
+        Token RIGHT_PAREN333=null;
+        DRLParser.in_key_return in_key326 = null;
+
+        DRLParser.not_key_return not_key327 = null;
+
+        DRLParser.in_key_return in_key328 = null;
+
+        DRLParser.expression_value_return expression_value330 = null;
+
+        DRLParser.expression_value_return expression_value332 = null;
+
+
+        Object LEFT_PAREN329_tree=null;
+        Object COMMA331_tree=null;
+        Object RIGHT_PAREN333_tree=null;
+
+         if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1568:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:2: ( in_key | not_key in_key )
+            int alt115=2;
+            int LA115_0 = input.LA(1);
+
+            if ( (LA115_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                int LA115_1 = input.LA(2);
+
+                if ( (LA115_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
+                    alt115=1;
+                }
+                else if ( (LA115_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt115=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 115, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 115, 0, input);
+
+                throw nvae;
+            }
+            switch (alt115) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:4: in_key
+                    {
+                    pushFollow(FOLLOW_in_key_in_compound_operator6311);
+                    in_key326=in_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key326.getTree(), root_0);
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1569:14: not_key in_key
+                    {
+                    pushFollow(FOLLOW_not_key_in_compound_operator6316);
+                    not_key327=not_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key327.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator6318);
+                    in_key328=in_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key328.getTree(), root_0);
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
+            }
+            LEFT_PAREN329=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator6329); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_PAREN329, DroolsEditorType.SYMBOL);	
+            }
+            pushFollow(FOLLOW_expression_value_in_compound_operator6337);
+            expression_value330=expression_value();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value330.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:21: ( COMMA expression_value )*
+            loop116:
+            do {
+                int alt116=2;
+                int LA116_0 = input.LA(1);
+
+                if ( (LA116_0==COMMA) ) {
+                    alt116=1;
+                }
+
+
+                switch (alt116) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1572:23: COMMA expression_value
+            	    {
+            	    COMMA331=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6341); if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) {
+            	      	emit(COMMA331, DroolsEditorType.SYMBOL);	
+            	    }
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator6346);
+            	    expression_value332=expression_value();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value332.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop116;
+                }
+            } while (true);
+
+            RIGHT_PAREN333=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6354); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_PAREN333_tree = (Object)adaptor.create(RIGHT_PAREN333);
+            adaptor.addChild(root_0, RIGHT_PAREN333_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_PAREN333, DroolsEditorType.SYMBOL);	
+            }
+            if ( state.backtracking==0 ) {
+              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+             
+            	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == DOUBLE_PIPE) {
+            		emit(input.LT(1), DroolsEditorType.SYMBOL);
+            		input.consume();
+            		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            	}	
+        }
+        return retval;
+    }
+    // $ANTLR end "compound_operator"
+
+    public static class operator_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "operator_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1589:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.operator_key_return operator_key() throws RecognitionException {
+        DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:9: {...}? =>id= ID
+            {
+            if ( !(((isPluggableEvaluator(false)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6392); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.IDENTIFIER); 
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1592:9: -> VK_OPERATOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "operator_key"
+
+    public static class neg_operator_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "neg_operator_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
+        DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:9: {...}? =>id= ID
+            {
+            if ( !(((isPluggableEvaluator(true)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6437); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.IDENTIFIER); 
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1598:9: -> VK_OPERATOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "neg_operator_key"
+
+    public static class expression_value_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "expression_value"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    public final DRLParser.expression_value_return expression_value() throws RecognitionException {
+        DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.accessor_path_return accessor_path334 = null;
+
+        DRLParser.literal_constraint_return literal_constraint335 = null;
+
+        DRLParser.paren_chunk_return paren_chunk336 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:4: ( accessor_path | literal_constraint | paren_chunk )
+            {
+            root_0 = (Object)adaptor.nil();
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:4: ( accessor_path | literal_constraint | paren_chunk )
+            int alt117=3;
+            switch ( input.LA(1) ) {
+            case ID:
+                {
+                alt117=1;
+                }
+                break;
+            case STRING:
+            case BOOL:
+            case INT:
+            case FLOAT:
+            case NULL:
+                {
+                alt117=2;
+                }
+                break;
+            case LEFT_PAREN:
+                {
+                alt117=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 117, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt117) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:5: accessor_path
+                    {
+                    pushFollow(FOLLOW_accessor_path_in_expression_value6474);
+                    accessor_path334=accessor_path();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path334.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:4: literal_constraint
+                    {
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value6479);
+                    literal_constraint335=literal_constraint();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint335.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:4: paren_chunk
+                    {
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value6485);
+                    paren_chunk336=paren_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk336.getTree());
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
+              			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+             
+            	if (isEditorInterfaceEnabled && input.LA(2) == EOF) {
+            		if (input.LA(1) == DOUBLE_PIPE) {
+            			emit(input.LT(1), DroolsEditorType.SYMBOL);
+            			input.consume();
+            			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+            		}
+            	}
+
+        }
+        return retval;
+    }
+    // $ANTLR end "expression_value"
+
+    public static class literal_constraint_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "literal_constraint"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1618:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
+        DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token STRING337=null;
+        Token INT338=null;
+        Token FLOAT339=null;
+        Token BOOL340=null;
+        Token NULL341=null;
+
+        Object STRING337_tree=null;
+        Object INT338_tree=null;
+        Object FLOAT339_tree=null;
+        Object BOOL340_tree=null;
+        Object NULL341_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            int alt118=5;
+            switch ( input.LA(1) ) {
+            case STRING:
+                {
+                alt118=1;
+                }
+                break;
+            case INT:
+                {
+                alt118=2;
+                }
+                break;
+            case FLOAT:
+                {
+                alt118=3;
+                }
+                break;
+            case BOOL:
+                {
+                alt118=4;
+                }
+                break;
+            case NULL:
+                {
+                alt118=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 118, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt118) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:4: STRING
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    STRING337=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6504); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    STRING337_tree = (Object)adaptor.create(STRING337);
+                    adaptor.addChild(root_0, STRING337_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(STRING337, DroolsEditorType.STRING_CONST);	
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1620:4: INT
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    INT338=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6511); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    INT338_tree = (Object)adaptor.create(INT338);
+                    adaptor.addChild(root_0, INT338_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(INT338, DroolsEditorType.NUMERIC_CONST);	
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:4: FLOAT
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    FLOAT339=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6518); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    FLOAT339_tree = (Object)adaptor.create(FLOAT339);
+                    adaptor.addChild(root_0, FLOAT339_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(FLOAT339, DroolsEditorType.NUMERIC_CONST);	
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1622:4: BOOL
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    BOOL340=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6525); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    BOOL340_tree = (Object)adaptor.create(BOOL340);
+                    adaptor.addChild(root_0, BOOL340_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(BOOL340, DroolsEditorType.BOOLEAN_CONST);	
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:4: NULL
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    NULL341=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6532); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    NULL341_tree = (Object)adaptor.create(NULL341);
+                    adaptor.addChild(root_0, NULL341_tree);
+                    }
+                    if ( state.backtracking==0 ) {
+                      	emit(NULL341, DroolsEditorType.NULL_CONST);	
+                    }
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "literal_constraint"
+
+    public static class pattern_type_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "pattern_type"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
+        DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+        List list_id=null;
+        DRLParser.dimension_definition_return dimension_definition342 = null;
+
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6547); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if (list_id==null) list_id=new ArrayList();
+            list_id.add(id);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:11: (id+= DOT id+= ID )*
+            loop119:
+            do {
+                int alt119=2;
+                int LA119_0 = input.LA(1);
+
+                if ( (LA119_0==DOT) ) {
+                    alt119=1;
+                }
+
+
+                switch (alt119) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:13: id+= DOT id+= ID
+            	    {
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6553); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6557); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop119;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+              	emit(list_id, DroolsEditorType.IDENTIFIER);
+              		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:6: ( dimension_definition )*
+            loop120:
+            do {
+                int alt120=2;
+                int LA120_0 = input.LA(1);
+
+                if ( (LA120_0==LEFT_SQUARE) ) {
+                    alt120=1;
+                }
+
+
+                switch (alt120) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:6: dimension_definition
+            	    {
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6572);
+            	    dimension_definition342=dimension_definition();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition342.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop120;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: dimension_definition, ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1631:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
+
+                if ( !(stream_ID.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_ID.hasNext() ) {
+                    adaptor.addChild(root_1, stream_ID.nextNode());
+
+                }
+                stream_ID.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1631:28: ( dimension_definition )*
+                while ( stream_dimension_definition.hasNext() ) {
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
+
+                }
+                stream_dimension_definition.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "pattern_type"
+
+    public static class data_type_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "data_type"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    public final DRLParser.data_type_return data_type() throws RecognitionException {
+        DRLParser.data_type_return retval = new DRLParser.data_type_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+        List list_id=null;
+        DRLParser.dimension_definition_return dimension_definition343 = null;
+
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            {
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6600); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if (list_id==null) list_id=new ArrayList();
+            list_id.add(id);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:11: (id+= DOT id+= ID )*
+            loop121:
+            do {
+                int alt121=2;
+                int LA121_0 = input.LA(1);
+
+                if ( (LA121_0==DOT) ) {
+                    alt121=1;
+                }
+
+
+                switch (alt121) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:13: id+= DOT id+= ID
+            	    {
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6606); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6610); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_ID.add(id);
+
+            	    if (list_id==null) list_id=new ArrayList();
+            	    list_id.add(id);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop121;
+                }
+            } while (true);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:31: ( dimension_definition )*
+            loop122:
+            do {
+                int alt122=2;
+                int LA122_0 = input.LA(1);
+
+                if ( (LA122_0==LEFT_SQUARE) ) {
+                    alt122=1;
+                }
+
+
+                switch (alt122) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:31: dimension_definition
+            	    {
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type6615);
+            	    dimension_definition343=dimension_definition();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition343.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop122;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+              	emit(list_id, DroolsEditorType.IDENTIFIER);	
+            }
+
+
+            // AST REWRITE
+            // elements: dimension_definition, ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1637:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1637:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
+
+                if ( !(stream_ID.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_ID.hasNext() ) {
+                    adaptor.addChild(root_1, stream_ID.nextNode());
+
+                }
+                stream_ID.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1637:25: ( dimension_definition )*
+                while ( stream_dimension_definition.hasNext() ) {
+                    adaptor.addChild(root_1, stream_dimension_definition.nextTree());
+
+                }
+                stream_dimension_definition.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "data_type"
+
+    public static class dimension_definition_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "dimension_definition"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
+        DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token LEFT_SQUARE344=null;
+        Token RIGHT_SQUARE345=null;
+
+        Object LEFT_SQUARE344_tree=null;
+        Object RIGHT_SQUARE345_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:4: LEFT_SQUARE RIGHT_SQUARE
+            {
+            root_0 = (Object)adaptor.nil();
+
+            LEFT_SQUARE344=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6644); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            LEFT_SQUARE344_tree = (Object)adaptor.create(LEFT_SQUARE344);
+            adaptor.addChild(root_0, LEFT_SQUARE344_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(LEFT_SQUARE344, DroolsEditorType.SYMBOL);	
+            }
+            RIGHT_SQUARE345=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6651); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            RIGHT_SQUARE345_tree = (Object)adaptor.create(RIGHT_SQUARE345);
+            adaptor.addChild(root_0, RIGHT_SQUARE345_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(RIGHT_SQUARE345, DroolsEditorType.SYMBOL);	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "dimension_definition"
+
+    public static class accessor_path_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accessor_path"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
+        DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token DOT347=null;
+        DRLParser.accessor_element_return accessor_element346 = null;
+
+        DRLParser.accessor_element_return accessor_element348 = null;
+
+
+        Object DOT347_tree=null;
+        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
+        RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1646:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1646:4: accessor_element ( DOT accessor_element )*
+            {
+            pushFollow(FOLLOW_accessor_element_in_accessor_path6665);
+            accessor_element346=accessor_element();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element346.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1646:21: ( DOT accessor_element )*
+            loop123:
+            do {
+                int alt123=2;
+                int LA123_0 = input.LA(1);
+
+                if ( (LA123_0==DOT) ) {
+                    alt123=1;
+                }
+
+
+                switch (alt123) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1646:23: DOT accessor_element
+            	    {
+            	    DOT347=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6669); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT347);
+
+            	    if ( state.backtracking==0 ) {
+            	      	emit(DOT347, DroolsEditorType.IDENTIFIER);	
+            	    }
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6673);
+            	    accessor_element348=accessor_element();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element348.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop123;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: accessor_element
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1647:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1647:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
+
+                if ( !(stream_accessor_element.hasNext()) ) {
+                    throw new RewriteEarlyExitException();
+                }
+                while ( stream_accessor_element.hasNext() ) {
+                    adaptor.addChild(root_1, stream_accessor_element.nextTree());
+
+                }
+                stream_accessor_element.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accessor_path"
+
+    public static class accessor_element_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "accessor_element"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
+        DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ID349=null;
+        DRLParser.square_chunk_return square_chunk350 = null;
+
+
+        Object ID349_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:4: ID ( square_chunk )*
+            {
+            ID349=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6697); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID349);
+
+            if ( state.backtracking==0 ) {
+              	emit(ID349, DroolsEditorType.IDENTIFIER);	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1652:3: ( square_chunk )*
+            loop124:
+            do {
+                int alt124=2;
+                int LA124_0 = input.LA(1);
+
+                if ( (LA124_0==LEFT_SQUARE) ) {
+                    alt124=1;
+                }
+
+
+                switch (alt124) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1652:3: square_chunk
+            	    {
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6703);
+            	    square_chunk350=square_chunk();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk350.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop124;
+                }
+            } while (true);
+
+
+
+            // AST REWRITE
+            // elements: square_chunk, ID
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1653:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
+
+                adaptor.addChild(root_1, stream_ID.nextNode());
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:30: ( square_chunk )*
+                while ( stream_square_chunk.hasNext() ) {
+                    adaptor.addChild(root_1, stream_square_chunk.nextTree());
+
+                }
+                stream_square_chunk.reset();
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "accessor_element"
+
+    public static class rhs_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rhs_chunk"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
+        DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.rhs_chunk_data_return rc = null;
+
+
+        RewriteRuleSubtreeStream stream_rhs_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk_data");
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1659:5: rc= rhs_chunk_data
+            {
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6732);
+            rc=rhs_chunk_data();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_rhs_chunk_data.add(rc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (rc!=null?input.toString(rc.start,rc.stop):null);
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1660:2: -> VT_RHS_CHUNK[$rc.start,text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "rhs_chunk"
+
+    public static class rhs_chunk_data_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rhs_chunk_data"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:1: rhs_chunk_data : THEN ( not_end_key )* end_key ( SEMICOLON )? ;
+    public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
+        DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token THEN351=null;
+        Token SEMICOLON354=null;
+        DRLParser.not_end_key_return not_end_key352 = null;
+
+        DRLParser.end_key_return end_key353 = null;
+
+
+        Object THEN351_tree=null;
+        Object SEMICOLON354_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1664:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1664:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
+            {
+            root_0 = (Object)adaptor.nil();
+
+            THEN351=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6751); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            THEN351_tree = (Object)adaptor.create(THEN351);
+            adaptor.addChild(root_0, THEN351_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if ((THEN351!=null?THEN351.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN351, DroolsEditorType.KEYWORD);
+              			emit(Location.LOCATION_RHS);
+              		}	
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:4: ( not_end_key )*
+            loop125:
+            do {
+                int alt125=2;
+                int LA125_0 = input.LA(1);
+
+                if ( (LA125_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.END)))||(!(validateIdentifierKey(DroolsSoftKeywords.END)))))) {
+                    int LA125_1 = input.LA(2);
+
+                    if ( ((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
+                        alt125=1;
+                    }
+
+
+                }
+                else if ( ((LA125_0>=VT_COMPILATION_UNIT && LA125_0<=SEMICOLON)||(LA125_0>=DOT && LA125_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
+                    alt125=1;
+                }
+
+
+                switch (alt125) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:4: not_end_key
+            	    {
+            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6760);
+            	    not_end_key352=not_end_key();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key352.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop125;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6766);
+            end_key353=end_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key353.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:3: ( SEMICOLON )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==SEMICOLON) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:3: SEMICOLON
+                    {
+                    SEMICOLON354=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6771); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) {
+                    SEMICOLON354_tree = (Object)adaptor.create(SEMICOLON354);
+                    adaptor.addChild(root_0, SEMICOLON354_tree);
+                    }
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+              	emit(SEMICOLON354, DroolsEditorType.KEYWORD);	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "rhs_chunk_data"
+
+    public static class curly_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "curly_chunk"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1674:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
+        DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.curly_chunk_data_return cc = null;
+
+
+        RewriteRuleSubtreeStream stream_curly_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk_data");
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1677:5: cc= curly_chunk_data[false]
+            {
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6790);
+            cc=curly_chunk_data(false);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_curly_chunk_data.add(cc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (cc!=null?input.toString(cc.start,cc.stop):null);
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1678:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "curly_chunk"
+
+    public static class curly_chunk_data_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "curly_chunk_data"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1681:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lc1=null;
+        Token any=null;
+        Token rc1=null;
+        DRLParser.curly_chunk_data_return curly_chunk_data355 = null;
+
+
+        Object lc1_tree=null;
+        Object any_tree=null;
+        Object rc1_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            {
+            root_0 = (Object)adaptor.nil();
+
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6813); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            lc1_tree = (Object)adaptor.create(lc1);
+            adaptor.addChild(root_0, lc1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(lc1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(lc1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            loop127:
+            do {
+                int alt127=3;
+                int LA127_0 = input.LA(1);
+
+                if ( ((LA127_0>=VT_COMPILATION_UNIT && LA127_0<=THEN)||(LA127_0>=MISC && LA127_0<=MULTI_LINE_COMMENT)) ) {
+                    alt127=1;
+                }
+                else if ( (LA127_0==LEFT_CURLY) ) {
+                    alt127=2;
+                }
+
+
+                switch (alt127) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    {
+            	    any=(Token)input.LT(1);
+            	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
+            	        input.consume();
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	       emit(any, DroolsEditorType.CODE_CHUNK); 
+            	    }
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689:87: curly_chunk_data[true]
+            	    {
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6841);
+            	    curly_chunk_data355=curly_chunk_data(true);
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data355.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop127;
+                }
+            } while (true);
+
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6852); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            rc1_tree = (Object)adaptor.create(rc1);
+            adaptor.addChild(root_0, rc1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(rc1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(rc1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "curly_chunk_data"
+
+    public static class paren_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "paren_chunk"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
+        DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.paren_chunk_data_return pc = null;
+
+
+        RewriteRuleSubtreeStream stream_paren_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk_data");
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:5: pc= paren_chunk_data[false]
+            {
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6873);
+            pc=paren_chunk_data(false);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_paren_chunk_data.add(pc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (pc!=null?input.toString(pc.start,pc.stop):null);
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1703:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "paren_chunk"
+
+    public static class paren_chunk_data_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "paren_chunk_data"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token lp1=null;
+        Token any=null;
+        Token rp1=null;
+        DRLParser.paren_chunk_data_return paren_chunk_data356 = null;
+
+
+        Object lp1_tree=null;
+        Object any_tree=null;
+        Object rp1_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            {
+            root_0 = (Object)adaptor.nil();
+
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data6897); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            lp1_tree = (Object)adaptor.create(lp1);
+            adaptor.addChild(root_0, lp1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(lp1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(lp1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            loop128:
+            do {
+                int alt128=3;
+                int LA128_0 = input.LA(1);
+
+                if ( ((LA128_0>=VT_COMPILATION_UNIT && LA128_0<=STRING)||LA128_0==COMMA||(LA128_0>=AT && LA128_0<=MULTI_LINE_COMMENT)) ) {
+                    alt128=1;
+                }
+                else if ( (LA128_0==LEFT_PAREN) ) {
+                    alt128=2;
+                }
+
+
+                switch (alt128) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    {
+            	    any=(Token)input.LT(1);
+            	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
+            	        input.consume();
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	       emit(any, DroolsEditorType.CODE_CHUNK); 
+            	    }
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:87: paren_chunk_data[true]
+            	    {
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data6925);
+            	    paren_chunk_data356=paren_chunk_data(true);
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data356.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop128;
+                }
+            } while (true);
+
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data6936); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            rp1_tree = (Object)adaptor.create(rp1);
+            adaptor.addChild(root_0, rp1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(rp1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(rp1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "paren_chunk_data"
+
+    public static class square_chunk_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "square_chunk"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1729:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
+        DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        DRLParser.square_chunk_data_return sc = null;
+
+
+        RewriteRuleSubtreeStream stream_square_chunk_data=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk_data");
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:5: sc= square_chunk_data[false]
+            {
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk6962);
+            sc=square_chunk_data(false);
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_square_chunk_data.add(sc.getTree());
+            if ( state.backtracking==0 ) {
+              text = (sc!=null?input.toString(sc.start,sc.stop):null);
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1733:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "square_chunk"
+
+    public static class square_chunk_data_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "square_chunk_data"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1736:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
+        DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token ls1=null;
+        Token any=null;
+        Token rs1=null;
+        DRLParser.square_chunk_data_return square_chunk_data357 = null;
+
+
+        Object ls1_tree=null;
+        Object any_tree=null;
+        Object rs1_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1737:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            {
+            root_0 = (Object)adaptor.nil();
+
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data6985); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            ls1_tree = (Object)adaptor.create(ls1);
+            adaptor.addChild(root_0, ls1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(ls1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(ls1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1744:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            loop129:
+            do {
+                int alt129=3;
+                int LA129_0 = input.LA(1);
+
+                if ( ((LA129_0>=VT_COMPILATION_UNIT && LA129_0<=NULL)||(LA129_0>=THEN && LA129_0<=MULTI_LINE_COMMENT)) ) {
+                    alt129=1;
+                }
+                else if ( (LA129_0==LEFT_SQUARE) ) {
+                    alt129=2;
+                }
+
+
+                switch (alt129) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1744:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    {
+            	    any=(Token)input.LT(1);
+            	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
+            	        input.consume();
+            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return retval;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	       emit(any, DroolsEditorType.CODE_CHUNK); 
+            	    }
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1744:88: square_chunk_data[true]
+            	    {
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data7012);
+            	    square_chunk_data357=square_chunk_data(true);
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data357.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop129;
+                }
+            } while (true);
+
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data7023); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            rs1_tree = (Object)adaptor.create(rs1);
+            adaptor.addChild(root_0, rs1_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	if (!isRecursive) {
+              				emit(rs1, DroolsEditorType.SYMBOL);
+              			} else {
+              				emit(rs1, DroolsEditorType.CODE_CHUNK);
+              			}	
+              		
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "square_chunk_data"
+
+    public static class lock_on_active_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "lock_on_active_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1754:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
+        DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+        Token mis2=null;
+        Token id3=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        Object mis2_tree=null;
+        Object id3_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1757:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1757:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "lock_on_active_key", "(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, \"-\") && validateLT(5, DroolsSoftKeywords.ACTIVE))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7047); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7051); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7055); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7059); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis2);
+
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7063); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id3);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);
+              		emit(mis2, DroolsEditorType.KEYWORD);
+              		emit(id3, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1763:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "lock_on_active_key"
+
+    public static class date_effective_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "date_effective_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1766:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
+        DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1769:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1769:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7095); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7099); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7103); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1773:3: -> VK_DATE_EFFECTIVE[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "date_effective_key"
+
+    public static class date_expires_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "date_expires_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1776:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
+        DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1779:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1779:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7136); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7140); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7144); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1783:3: -> VK_DATE_EXPIRES[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "date_expires_key"
+
+    public static class no_loop_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "no_loop_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1786:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
+        DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1789:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7176); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7180); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7184); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1793:3: -> VK_NO_LOOP[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "no_loop_key"
+
+    public static class auto_focus_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "auto_focus_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1796:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
+        DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1799:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1799:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7216); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7220); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7224); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1803:3: -> VK_AUTO_FOCUS[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "auto_focus_key"
+
+    public static class activation_group_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "activation_group_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1806:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
+        DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1809:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7256); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7260); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7264); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1813:3: -> VK_ACTIVATION_GROUP[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "activation_group_key"
+
+    public static class agenda_group_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "agenda_group_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1816:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
+        DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1819:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1819:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7296); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7300); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7304); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1823:3: -> VK_AGENDA_GROUP[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "agenda_group_key"
+
+    public static class ruleflow_group_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "ruleflow_group_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1826:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
+        DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1829:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7336); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7340); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7344); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1833:3: -> VK_RULEFLOW_GROUP[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "ruleflow_group_key"
+
+    public static class entry_point_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entry_point_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1836:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
+        DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id1=null;
+        Token mis1=null;
+        Token id2=null;
+
+        Object id1_tree=null;
+        Object mis1_tree=null;
+        Object id2_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+        RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
+
+
+        	String text = "";
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1839:5: {...}? =>id1= ID mis1= MISC id2= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
+            }
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7376); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id1);
+
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7380); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_MISC.add(mis1);
+
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7384); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id2);
+
+            if ( state.backtracking==0 ) {
+              text = input.toString(retval.start,input.LT(-1));
+            }
+            if ( state.backtracking==0 ) {
+              	emit(id1, DroolsEditorType.KEYWORD);
+              		emit(mis1, DroolsEditorType.KEYWORD);
+              		emit(id2, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1843:3: -> VK_ENTRY_POINT[$start, text]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entry_point_key"
+
+    public static class duration_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "duration_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1846:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    public final DRLParser.duration_key_return duration_key() throws RecognitionException {
+        DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1847:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7413); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1849:3: -> VK_DURATION[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "duration_key"
+
+    public static class package_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "package_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1852:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    public final DRLParser.package_key_return package_key() throws RecognitionException {
+        DRLParser.package_key_return retval = new DRLParser.package_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7440); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1855:3: -> VK_PACKAGE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "package_key"
+
+    public static class import_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "import_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1858:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    public final DRLParser.import_key_return import_key() throws RecognitionException {
+        DRLParser.import_key_return retval = new DRLParser.import_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1859:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7467); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1861:3: -> VK_IMPORT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "import_key"
+
+    public static class dialect_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "dialect_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1864:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
+        DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7494); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1867:3: -> VK_DIALECT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "dialect_key"
+
+    public static class prior_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "prior_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1870:1: prior_key : {...}? =>id= ID -> VK_PRIOR[$id] ;
+    public final DRLParser.prior_key_return prior_key() throws RecognitionException {
+        DRLParser.prior_key_return retval = new DRLParser.prior_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1871:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1871:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "prior_key", "(validateIdentifierKey(DroolsSoftKeywords.PRIOR))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_prior_key7522); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1873:5: -> VK_PRIOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_PRIOR, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "prior_key"
+
+    public static class entail_mode_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "entail_mode_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1876:1: entail_mode_key : {...}? =>id= ID -> VK_ENTAIL[$id] ;
+    public final DRLParser.entail_mode_key_return entail_mode_key() throws RecognitionException {
+        DRLParser.entail_mode_key_return retval = new DRLParser.entail_mode_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1877:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "entail_mode_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTAIL))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_entail_mode_key7555); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1879:5: -> VK_ENTAIL[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTAIL, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "entail_mode_key"
+
+    public static class filter_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "filter_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1882:1: filter_key : {...}? =>id= ID -> VK_FILTER[$id] ;
+    public final DRLParser.filter_key_return filter_key() throws RecognitionException {
+        DRLParser.filter_key_return retval = new DRLParser.filter_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:3: ({...}? =>id= ID -> VK_FILTER[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FILTER)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "filter_key", "(validateIdentifierKey(DroolsSoftKeywords.FILTER))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_filter_key7588); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1885:5: -> VK_FILTER[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FILTER, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "filter_key"
+
+    public static class salience_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "salience_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1889:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    public final DRLParser.salience_key_return salience_key() throws RecognitionException {
+        DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1890:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1890:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7621); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1892:3: -> VK_SALIENCE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "salience_key"
+
+    public static class enabled_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "enabled_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
+        DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1896:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1896:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7648); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1898:3: -> VK_ENABLED[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "enabled_key"
+
+    public static class attributes_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "attributes_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1901:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
+        DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7675); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1904:3: -> VK_ATTRIBUTES[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "attributes_key"
+
+    public static class rule_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "rule_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1907:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    public final DRLParser.rule_key_return rule_key() throws RecognitionException {
+        DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7702); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1910:3: -> VK_RULE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "rule_key"
+
+    public static class extend_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "extend_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1913:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    public final DRLParser.extend_key_return extend_key() throws RecognitionException {
+        DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "extend_key", "(validateIdentifierKey(DroolsSoftKeywords.EXTEND))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7729); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1916:3: -> VK_EXTEND[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "extend_key"
+
+    public static class template_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "template_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1919:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    public final DRLParser.template_key_return template_key() throws RecognitionException {
+        DRLParser.template_key_return retval = new DRLParser.template_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7756); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1922:3: -> VK_TEMPLATE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "template_key"
+
+    public static class query_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "query_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1925:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    public final DRLParser.query_key_return query_key() throws RecognitionException {
+        DRLParser.query_key_return retval = new DRLParser.query_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7783); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1928:3: -> VK_QUERY[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "query_key"
+
+    public static class declare_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "declare_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1931:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    public final DRLParser.declare_key_return declare_key() throws RecognitionException {
+        DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1932:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1932:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7810); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1934:3: -> VK_DECLARE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "declare_key"
+
+    public static class function_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "function_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1937:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    public final DRLParser.function_key_return function_key() throws RecognitionException {
+        DRLParser.function_key_return retval = new DRLParser.function_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1938:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1938:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7837); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1940:3: -> VK_FUNCTION[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "function_key"
+
+    public static class global_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "global_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1943:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    public final DRLParser.global_key_return global_key() throws RecognitionException {
+        DRLParser.global_key_return retval = new DRLParser.global_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1944:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1944:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7864); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1946:3: -> VK_GLOBAL[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "global_key"
+
+    public static class eval_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "eval_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1949:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    public final DRLParser.eval_key_return eval_key() throws RecognitionException {
+        DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1950:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1950:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7891); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1952:3: -> VK_EVAL[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "eval_key"
+
+    public static class not_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "not_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1955:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    public final DRLParser.not_key_return not_key() throws RecognitionException {
+        DRLParser.not_key_return retval = new DRLParser.not_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1956:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1956:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key7918); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1958:3: -> VK_NOT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "not_key"
+
+    public static class in_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "in_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1961:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    public final DRLParser.in_key_return in_key() throws RecognitionException {
+        DRLParser.in_key_return retval = new DRLParser.in_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1962:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1962:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key7945); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1964:3: -> VK_IN[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "in_key"
+
+    public static class or_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "or_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1967:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    public final DRLParser.or_key_return or_key() throws RecognitionException {
+        DRLParser.or_key_return retval = new DRLParser.or_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1968:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1968:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key7972); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1970:3: -> VK_OR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "or_key"
+
+    public static class and_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "and_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1973:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    public final DRLParser.and_key_return and_key() throws RecognitionException {
+        DRLParser.and_key_return retval = new DRLParser.and_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1974:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1974:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key7999); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1976:3: -> VK_AND[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "and_key"
+
+    public static class equiv_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "equiv_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1979:1: equiv_key : {...}? =>id= ID -> VK_EQUIV[$id] ;
+    public final DRLParser.equiv_key_return equiv_key() throws RecognitionException {
+        DRLParser.equiv_key_return retval = new DRLParser.equiv_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1980:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1980:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EQUIV)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "equiv_key", "(validateIdentifierKey(DroolsSoftKeywords.EQUIV))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_equiv_key8029); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1982:5: -> VK_EQUIV[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EQUIV, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "equiv_key"
+
+    public static class xor_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "xor_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1985:1: xor_key : {...}? =>id= ID -> VK_XOR[$id] ;
+    public final DRLParser.xor_key_return xor_key() throws RecognitionException {
+        DRLParser.xor_key_return retval = new DRLParser.xor_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1986:3: ({...}? =>id= ID -> VK_XOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1986:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.XOR)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "xor_key", "(validateIdentifierKey(DroolsSoftKeywords.XOR))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_xor_key8065); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1988:5: -> VK_XOR[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_XOR, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "xor_key"
+
+    public static class exists_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "exists_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1992:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    public final DRLParser.exists_key_return exists_key() throws RecognitionException {
+        DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8101); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1995:3: -> VK_EXISTS[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "exists_key"
+
+    public static class forall_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "forall_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1998:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    public final DRLParser.forall_key_return forall_key() throws RecognitionException {
+        DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8128); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2001:3: -> VK_FORALL[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "forall_key"
+
+    public static class forany_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "forany_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2004:1: forany_key : {...}? =>id= ID -> VK_FORANY[$id] ;
+    public final DRLParser.forany_key_return forany_key() throws RecognitionException {
+        DRLParser.forany_key_return retval = new DRLParser.forany_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:3: ({...}? =>id= ID -> VK_FORANY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORANY)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "forany_key", "(validateIdentifierKey(DroolsSoftKeywords.FORANY))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_forany_key8157); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2007:5: -> VK_FORANY[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_FORANY, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "forany_key"
+
+    public static class action_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "action_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2010:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    public final DRLParser.action_key_return action_key() throws RecognitionException {
+        DRLParser.action_key_return retval = new DRLParser.action_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTION)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8190); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2013:3: -> VK_ACTION[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "action_key"
+
+    public static class reverse_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "reverse_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2016:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
+        DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8217); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2019:3: -> VK_REVERSE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "reverse_key"
+
+    public static class result_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "result_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2022:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    public final DRLParser.result_key_return result_key() throws RecognitionException {
+        DRLParser.result_key_return retval = new DRLParser.result_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8244); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2025:3: -> VK_RESULT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "result_key"
+
+    public static class end_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "end_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2028:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
+    public final DRLParser.end_key_return end_key() throws RecognitionException {
+        DRLParser.end_key_return retval = new DRLParser.end_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:2: ({...}? =>id= ID -> VK_END[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "end_key", "(validateIdentifierKey(DroolsSoftKeywords.END))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8271); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2031:3: -> VK_END[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_END, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "end_key"
+
+    public static class not_end_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "not_end_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2034:1: not_end_key : {...}? =>any= . ;
+    public final DRLParser.not_end_key_return not_end_key() throws RecognitionException {
+        DRLParser.not_end_key_return retval = new DRLParser.not_end_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token any=null;
+
+        Object any_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2035:2: ({...}? =>any= . )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2035:4: {...}? =>any= .
+            {
+            root_0 = (Object)adaptor.nil();
+
+            if ( !((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "not_end_key", "!(validateIdentifierKey(DroolsSoftKeywords.END))");
+            }
+            any=(Token)input.LT(1);
+            matchAny(input); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            any_tree = (Object)adaptor.create(any);
+            adaptor.addChild(root_0, any_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(any, DroolsEditorType.CODE_CHUNK);	
+            }
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "not_end_key"
+
+    public static class init_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "init_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2039:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
+    public final DRLParser.init_key_return init_key() throws RecognitionException {
+        DRLParser.init_key_return retval = new DRLParser.init_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2040:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2040:4: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "init_key", "(validateIdentifierKey(DroolsSoftKeywords.INIT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8318); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+              	emit(id, DroolsEditorType.KEYWORD);	
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2042:3: -> VK_INIT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_INIT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "init_key"
+
+    public static class subject_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "subject_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2046:1: subject_key : {...}? =>id= ID -> VK_SUBJECT[$id] ;
+    public final DRLParser.subject_key_return subject_key() throws RecognitionException {
+        DRLParser.subject_key_return retval = new DRLParser.subject_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2047:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2047:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "subject_key", "(validateIdentifierKey(DroolsSoftKeywords.SUBJECT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_subject_key8349); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2049:5: -> VK_SUBJECT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_SUBJECT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "subject_key"
+
+    public static class weight_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "weight_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2053:1: weight_key : {...}? =>id= ID -> VK_WEIGHT[$id] ;
+    public final DRLParser.weight_key_return weight_key() throws RecognitionException {
+        DRLParser.weight_key_return retval = new DRLParser.weight_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "weight_key", "(validateIdentifierKey(DroolsSoftKeywords.WEIGHT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_weight_key8387); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2056:5: -> VK_WEIGHT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_WEIGHT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "weight_key"
+
+    public static class very_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "very_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060:1: very_key : {...}? =>id= ID -> VK_VERY[$id] ;
+    public final DRLParser.very_key_return very_key() throws RecognitionException {
+        DRLParser.very_key_return retval = new DRLParser.very_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:3: ({...}? =>id= ID -> VK_VERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.VERY)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "very_key", "(validateIdentifierKey(DroolsSoftKeywords.VERY))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_very_key8426); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2063:5: -> VK_VERY[$id]
+            {
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "very_key"
+
+    public static class cut_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "cut_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:1: cut_key : CUT -> VK_CUT ;
+    public final DRLParser.cut_key_return cut_key() throws RecognitionException {
+        DRLParser.cut_key_return retval = new DRLParser.cut_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token CUT358=null;
+
+        Object CUT358_tree=null;
+        RewriteRuleTokenStream stream_CUT=new RewriteRuleTokenStream(adaptor,"token CUT");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2068:3: ( CUT -> VK_CUT )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2068:5: CUT
+            {
+            CUT358=(Token)match(input,CUT,FOLLOW_CUT_in_cut_key8460); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_CUT.add(CUT358);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2068:9: -> VK_CUT
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_CUT, "VK_CUT"));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "cut_key"
+
+    public static class id_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "id_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2074:1: id_key : {...}? =>id= ID -> VK_CONSTRID[$id] ;
+    public final DRLParser.id_key_return id_key() throws RecognitionException {
+        DRLParser.id_key_return retval = new DRLParser.id_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2075:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2075:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "id_key", "(validateIdentifierKey(DroolsSoftKeywords.CID))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_id_key8492); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2077:5: -> VK_CONSTRID[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_CONSTRID, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "id_key"
+
+    public static class kut_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "kut_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2080:1: kut_key : {...}? =>id= ID -> VK_CUT[$id] ;
+    public final DRLParser.kut_key_return kut_key() throws RecognitionException {
+        DRLParser.kut_key_return retval = new DRLParser.kut_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2081:3: ({...}? =>id= ID -> VK_CUT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2081:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "kut_key", "(validateIdentifierKey(DroolsSoftKeywords.CUT))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_kut_key8540); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2083:5: -> VK_CUT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_CUT, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "kut_key"
+
+    public static class type_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "type_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2086:1: type_key : {...}? =>id= ID -> VK_TYPE[$id] ;
+    public final DRLParser.type_key_return type_key() throws RecognitionException {
+        DRLParser.type_key_return retval = new DRLParser.type_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2087:3: ({...}? =>id= ID -> VK_TYPE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2087:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.TYPE)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "type_key", "(validateIdentifierKey(DroolsSoftKeywords.TYPE))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_key8577); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2089:5: -> VK_TYPE[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_TYPE, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "type_key"
+
+    public static class args_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "args_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2092:1: args_key : {...}? =>id= ID -> VK_PARAMS[$id] ;
+    public final DRLParser.args_key_return args_key() throws RecognitionException {
+        DRLParser.args_key_return retval = new DRLParser.args_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2093:3: ({...}? =>id= ID -> VK_PARAMS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2093:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "args_key", "(validateIdentifierKey(DroolsSoftKeywords.ARGS))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_args_key8614); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2095:5: -> VK_PARAMS[$id]
+            {
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "args_key"
+
+    public static class approx_symb_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "approx_symb"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2106:1: approx_symb : APPROX -> VK_APPROX ;
+    public final DRLParser.approx_symb_return approx_symb() throws RecognitionException {
+        DRLParser.approx_symb_return retval = new DRLParser.approx_symb_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token APPROX359=null;
+
+        Object APPROX359_tree=null;
+        RewriteRuleTokenStream stream_APPROX=new RewriteRuleTokenStream(adaptor,"token APPROX");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2107:3: ( APPROX -> VK_APPROX )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2107:5: APPROX
+            {
+            APPROX359=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8664); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_APPROX.add(APPROX359);
+
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2107:12: -> VK_APPROX
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_APPROX, "VK_APPROX"));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "approx_symb"
+
+    // $ANTLR start synpred1_DRL
+    public final void synpred1_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:5: ( LEFT_PAREN or_key ( constr_param_set )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:6: LEFT_PAREN or_key ( constr_param_set )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2287); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2289);
+        or_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:24: ( constr_param_set )?
+        int alt130=2;
+        int LA130_0 = input.LA(1);
+
+        if ( (LA130_0==AT) ) {
+            alt130=1;
+        }
+        switch (alt130) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:24: constr_param_set
+                {
+                pushFollow(FOLLOW_constr_param_set_in_synpred1_DRL2291);
+                constr_param_set();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred1_DRL
+
+    // $ANTLR start synpred2_DRL
+    public final void synpred2_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:4: ( LEFT_PAREN equiv_key ( constr_param_set )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:5: LEFT_PAREN equiv_key ( constr_param_set )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2362); if (state.failed) return ;
+        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2364);
+        equiv_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:26: ( constr_param_set )?
+        int alt131=2;
+        int LA131_0 = input.LA(1);
+
+        if ( (LA131_0==AT) ) {
+            alt131=1;
+        }
+        switch (alt131) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:26: constr_param_set
+                {
+                pushFollow(FOLLOW_constr_param_set_in_synpred2_DRL2366);
+                constr_param_set();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred2_DRL
+
+    // $ANTLR start synpred3_DRL
+    public final void synpred3_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:4: ( LEFT_PAREN xor_key ( constr_param_set )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:5: LEFT_PAREN xor_key ( constr_param_set )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2461); if (state.failed) return ;
+        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2463);
+        xor_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:24: ( constr_param_set )?
+        int alt132=2;
+        int LA132_0 = input.LA(1);
+
+        if ( (LA132_0==AT) ) {
+            alt132=1;
+        }
+        switch (alt132) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:885:24: constr_param_set
+                {
+                pushFollow(FOLLOW_constr_param_set_in_synpred3_DRL2465);
+                constr_param_set();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred3_DRL
+
+    // $ANTLR start synpred4_DRL
+    public final void synpred4_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:5: ( or_key ( constr_param_set )? | DOUBLE_PIPE )
+        int alt134=2;
+        int LA134_0 = input.LA(1);
+
+        if ( (LA134_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            alt134=1;
+        }
+        else if ( (LA134_0==DOUBLE_PIPE) ) {
+            alt134=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 134, 0, input);
+
+            throw nvae;
+        }
+        switch (alt134) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:6: or_key ( constr_param_set )?
+                {
+                pushFollow(FOLLOW_or_key_in_synpred4_DRL2575);
+                or_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:13: ( constr_param_set )?
+                int alt133=2;
+                int LA133_0 = input.LA(1);
+
+                if ( (LA133_0==AT) ) {
+                    alt133=1;
+                }
+                switch (alt133) {
+                    case 1 :
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:13: constr_param_set
+                        {
+                        pushFollow(FOLLOW_constr_param_set_in_synpred4_DRL2577);
+                        constr_param_set();
+
+                        state._fsp--;
+                        if (state.failed) return ;
+
+                        }
+                        break;
+
+                }
+
+
+                }
+                break;
+            case 2 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:32: DOUBLE_PIPE
+                {
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2581); if (state.failed) return ;
+
+                }
+                break;
+
+        }}
+    // $ANTLR end synpred4_DRL
+
+    // $ANTLR start synpred5_DRL
+    public final void synpred5_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:5: ( LEFT_PAREN and_key ( constr_param_set )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:6: LEFT_PAREN and_key ( constr_param_set )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred5_DRL2711); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred5_DRL2713);
+        and_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:25: ( constr_param_set )?
+        int alt135=2;
+        int LA135_0 = input.LA(1);
+
+        if ( (LA135_0==AT) ) {
+            alt135=1;
+        }
+        switch (alt135) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:25: constr_param_set
+                {
+                pushFollow(FOLLOW_constr_param_set_in_synpred5_DRL2715);
+                constr_param_set();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred5_DRL
+
+    // $ANTLR start synpred6_DRL
+    public final void synpred6_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:5: ( and_key ( constr_param_set )? | DOUBLE_AMPER )
+        int alt137=2;
+        int LA137_0 = input.LA(1);
+
+        if ( (LA137_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+            alt137=1;
+        }
+        else if ( (LA137_0==DOUBLE_AMPER) ) {
+            alt137=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 137, 0, input);
+
+            throw nvae;
+        }
+        switch (alt137) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:6: and_key ( constr_param_set )?
+                {
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2800);
+                and_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:14: ( constr_param_set )?
+                int alt136=2;
+                int LA136_0 = input.LA(1);
+
+                if ( (LA136_0==AT) ) {
+                    alt136=1;
+                }
+                switch (alt136) {
+                    case 1 :
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:14: constr_param_set
+                        {
+                        pushFollow(FOLLOW_constr_param_set_in_synpred6_DRL2802);
+                        constr_param_set();
+
+                        state._fsp--;
+                        if (state.failed) return ;
+
+                        }
+                        break;
+
+                }
+
+
+                }
+                break;
+            case 2 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:33: DOUBLE_AMPER
+                {
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2806); if (state.failed) return ;
+
+                }
+                break;
+
+        }}
+    // $ANTLR end synpred6_DRL
+
+    // $ANTLR start synpred7_DRL
+    public final void synpred7_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:4: ( SEMICOLON )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:5: SEMICOLON
+        {
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred7_DRL2959); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred7_DRL
+
+    // $ANTLR start synpred8_DRL
+    public final void synpred8_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:13: LEFT_PAREN ( or_key | and_key )
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL2996); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:24: ( or_key | and_key )
+        int alt138=2;
+        int LA138_0 = input.LA(1);
+
+        if ( (LA138_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA138_1 = input.LA(2);
+
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                alt138=1;
+            }
+            else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                alt138=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 138, 1, input);
+
+                throw nvae;
+            }
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 138, 0, input);
+
+            throw nvae;
+        }
+        switch (alt138) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:25: or_key
+                {
+                pushFollow(FOLLOW_or_key_in_synpred8_DRL2999);
+                or_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:32: and_key
+                {
+                pushFollow(FOLLOW_and_key_in_synpred8_DRL3001);
+                and_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_DRL
+
+    // $ANTLR start synpred9_DRL
+    public final void synpred9_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:6: LEFT_PAREN ( or_key | and_key )
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3124); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:17: ( or_key | and_key )
+        int alt139=2;
+        int LA139_0 = input.LA(1);
+
+        if ( (LA139_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA139_1 = input.LA(2);
+
+            if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
+                alt139=1;
+            }
+            else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
+                alt139=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 139, 1, input);
+
+                throw nvae;
+            }
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 139, 0, input);
+
+            throw nvae;
+        }
+        switch (alt139) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:18: or_key
+                {
+                pushFollow(FOLLOW_or_key_in_synpred9_DRL3127);
+                or_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:25: and_key
+                {
+                pushFollow(FOLLOW_and_key_in_synpred9_DRL3129);
+                and_key();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_DRL
+
+    // $ANTLR start synpred10_DRL
+    public final void synpred10_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:5: ( LEFT_PAREN )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:6: LEFT_PAREN
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL4085); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred10_DRL
+
+    // $ANTLR start synpred11_DRL
+    public final void synpred11_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:5: ( and_constr SINGLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1335:6: and_constr SINGLE_PIPE
+        {
+        pushFollow(FOLLOW_and_constr_in_synpred11_DRL4965);
+        and_constr();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred11_DRL4967); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred11_DRL
+
+    // $ANTLR start synpred12_DRL
+    public final void synpred12_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:5: ( unary_constr SINGLE_AMPER )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1365:6: unary_constr SINGLE_AMPER
+        {
+        pushFollow(FOLLOW_unary_constr_in_synpred12_DRL5303);
+        unary_constr();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred12_DRL5305); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred12_DRL
+
+    // Delegated rules
+
+    public final boolean synpred1_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred5_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred11_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred9_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred6_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred10_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred2_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred3_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred3_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred4_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred4_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred7_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred8_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred12_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_DRL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA1 dfa1 = new DFA1(this);
+    protected DFA5 dfa5 = new DFA5(this);
+    protected DFA12 dfa12 = new DFA12(this);
+    protected DFA17 dfa17 = new DFA17(this);
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA38 dfa38 = new DFA38(this);
+    protected DFA60 dfa60 = new DFA60(this);
+    protected DFA79 dfa79 = new DFA79(this);
+    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA100 dfa100 = new DFA100(this);
+    protected DFA110 dfa110 = new DFA110(this);
+    static final String DFA1_eotS =
+        "\12\uffff";
+    static final String DFA1_eofS =
+        "\1\2\11\uffff";
+    static final String DFA1_minS =
+        "\2\151\4\uffff\1\0\3\uffff";
+    static final String DFA1_maxS =
+        "\1\151\1\u008c\4\uffff\1\0\3\uffff";
+    static final String DFA1_acceptS =
+        "\2\uffff\4\2\1\uffff\2\2\1\1";
+    static final String DFA1_specialS =
+        "\1\uffff\1\0\4\uffff\1\1\3\uffff}>";
+    static final String[] DFA1_transitionS = {
+            "\1\1",
+            "\1\6\2\uffff\1\7\1\5\6\uffff\1\10\1\4\26\uffff\1\3",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
+    static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
+    static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
+    static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
+    static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
+    static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
+    static final short[][] DFA1_transition;
+
+    static {
+        int numStates = DFA1_transitionS.length;
+        DFA1_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
+        }
+    }
+
+    class DFA1 extends DFA {
+
+        public DFA1(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 1;
+            this.eot = DFA1_eot;
+            this.eof = DFA1_eof;
+            this.min = DFA1_min;
+            this.max = DFA1_max;
+            this.accept = DFA1_accept;
+            this.special = DFA1_special;
+            this.transition = DFA1_transition;
+        }
+        public String getDescription() {
+            return "430:4: ( package_statement )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA1_1 = input.LA(1);
+
+                         
+                        int index1_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA1_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
+
+                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 5;}
+
+                        else if ( (LA1_1==ID) ) {s = 6;}
+
+                        else if ( (LA1_1==STRING) ) {s = 7;}
+
+                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 8;}
+
+                         
+                        input.seek(index1_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA1_6 = input.LA(1);
+
+                         
+                        int index1_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index1_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 1, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA5_eotS =
+        "\20\uffff";
+    static final String DFA5_eofS =
+        "\20\uffff";
+    static final String DFA5_minS =
+        "\2\151\1\uffff\2\0\13\uffff";
+    static final String DFA5_maxS =
+        "\1\151\1\u008c\1\uffff\2\0\13\uffff";
+    static final String DFA5_acceptS =
+        "\2\uffff\1\1\2\uffff\3\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11";
+    static final String DFA5_specialS =
+        "\1\uffff\1\0\1\uffff\1\1\1\2\13\uffff}>";
+    static final String[] DFA5_transitionS = {
+            "\1\1",
+            "\1\3\2\uffff\1\4\1\6\6\uffff\1\5\1\7\26\uffff\1\2",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS);
+    static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS);
+    static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS);
+    static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS);
+    static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS);
+    static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS);
+    static final short[][] DFA5_transition;
+
+    static {
+        int numStates = DFA5_transitionS.length;
+        DFA5_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA5_transition[i] = DFA.unpackEncodedString(DFA5_transitionS[i]);
+        }
+    }
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = DFA5_eot;
+            this.eof = DFA5_eof;
+            this.min = DFA5_min;
+            this.max = DFA5_max;
+            this.accept = DFA5_accept;
+            this.special = DFA5_special;
+            this.transition = DFA5_transition;
+        }
+        public String getDescription() {
+            return "488:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA5_1 = input.LA(1);
+
+                         
+                        int index5_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
+
+                        else if ( (LA5_1==ID) && (((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import"!
 ) && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywor
ds.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLAR!
 E))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((va!
 lidateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, Dr
oolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSof!
 tKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftK!
 eywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))
||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1,!
  "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateI!
 dentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoft
Keywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "!
 function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IM!
 PORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateId
entifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(!
 DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKe!
 y(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywo
rds.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMP!
 ORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))!
 ||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((va
lidateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT!
 (1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, Dr!
 oolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor
ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftK!
 eywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdenti
fierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsS!
 oftKeywords.FUNCTION)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLA
TE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function"!
 ) ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validat
eLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") !
 && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywor!
 ds.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))|
|((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((!
 validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(!
 (validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey
(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DE!
 CLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywo!
 rds.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali
dateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdenti!
 fierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Dro!
 olsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords
.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT!
 )))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valid!
 ateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierK
ey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Droo!
 lsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoft!
 Keywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTIO
N))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))!
 ||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((!
 ((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKe
y(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Drools!
 SoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeyw!
 ords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))
)||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((va!
 lidateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validate!
 IdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, D
roolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsS!
 oftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKey!
 words.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))
))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPO!
 RT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Droo
lsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeyw!
 ords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)!
 ))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validate
IdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(!
 1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "impor!
 t") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof
tKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKey!
 words.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords!
 .IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))
||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((!
 (validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((valid!
 ateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool
sSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.!
 DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTI!
 ON))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((valid
ateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((v!
 alidateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentif!
 ierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSo
ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeyw!
 ords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TE!
 MPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&
&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(!
 1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Drool!
 sSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FU
NCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)!
 )))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 )||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifie
rKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dr!
 oolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&
&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "impo!
 rt") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSo
ftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywo!
 rds.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLAR!
 E))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validat
eIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(!
 DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(D!
 roolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywo
rds.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLA!
 RE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((val
idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateL!
 T(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, Dr!
 oolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor
ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&!
 &((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "fu!
 nction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validat!
 eLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1!
 , "import") && validateLT(2, "function") ))&&((validateIdentifierKey(D
roolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.G!
 LOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)!
 ))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT
(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey!
 (DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifi!
 erKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoft
Keywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTI!
 ON)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))!
 )||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifie
rKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsS!
 oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSo!
 ftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLO
BAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT!
 (1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftK
eywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL!
 )))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateId
entifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "i!
 mport") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(!
 DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeyword
s.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))))) {s = 3;}
+
+                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden!
 tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Drool
sSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER!
 )))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentif
ierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(!
 DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(
((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENT
AIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dro
olsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierK
ey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey!
 (DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Drool!
 sSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))
)||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((va!
 lidateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeyw
ords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdenti!
 fierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dr
oolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIA!
 LECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifier
Key(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||(
(validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC
T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Drool
sSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC!
 T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw!
 ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY!
 ))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va
lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))
)||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentif!
 ierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FIL!
 TER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden
tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.
ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)!
 ))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(
DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))))) {s = 4;}
+
+                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
+
+                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 6;}
+
+                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+
+                         
+                        input.seek(index5_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA5_3 = input.LA(1);
+
+                         
+                        int index5_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) ) {s = 8;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {s = 9;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {s = 10;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {s = 11;}
+
+                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 12;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
+
+                        else if ( (!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+
+                         
+                        input.seek(index5_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA5_4 = input.LA(1);
+
+                         
+                        int index5_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) ) {s = 7;}
+
+                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 12;}
+
+                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+
+                         
+                        input.seek(index5_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 5, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA12_eotS =
+        "\16\uffff";
+    static final String DFA12_eofS =
+        "\16\uffff";
+    static final String DFA12_minS =
+        "\2\151\1\uffff\1\151\1\uffff\1\u0088\4\151\2\u0088\1\155\1\151";
+    static final String DFA12_maxS =
+        "\1\155\1\157\1\uffff\1\u0087\1\uffff\1\u0088\1\151\3\u0087\2\u0088"+
+        "\2\u0087";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\1\uffff\1\1\11\uffff";
+    static final String DFA12_specialS =
+        "\16\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\1\2\3\uffff\1\1",
+            "\1\3\3\uffff\1\2\1\uffff\1\4",
+            "",
+            "\1\7\1\6\2\uffff\1\2\2\4\2\2\25\uffff\1\5",
+            "",
+            "\1\10",
+            "\1\11",
+            "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\12",
+            "\1\4\3\uffff\1\2\2\4\27\uffff\1\5",
+            "\1\4\1\6\2\uffff\1\2\31\uffff\1\13",
+            "\1\14",
+            "\1\15",
+            "\1\2\2\4\27\uffff\1\12",
+            "\1\4\3\uffff\1\2\31\uffff\1\13"
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "559:3: ( parameters )?";
+        }
+    }
+    static final String DFA17_eotS =
+        "\6\uffff";
+    static final String DFA17_eofS =
+        "\6\uffff";
+    static final String DFA17_minS =
+        "\2\151\1\uffff\1\u0088\1\uffff\1\151";
+    static final String DFA17_maxS =
+        "\1\151\1\u0087\1\uffff\1\u0088\1\uffff\1\u0087";
+    static final String DFA17_acceptS =
+        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+    static final String DFA17_specialS =
+        "\6\uffff}>";
+    static final String[] DFA17_transitionS = {
+            "\1\1",
+            "\2\2\3\uffff\2\4\27\uffff\1\3",
+            "",
+            "\1\5",
+            "",
+            "\1\2\4\uffff\2\4\27\uffff\1\3"
+    };
+
+    static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
+    static final short[] DFA17_eof = DFA.unpackEncodedString(DFA17_eofS);
+    static final char[] DFA17_min = DFA.unpackEncodedStringToUnsignedChars(DFA17_minS);
+    static final char[] DFA17_max = DFA.unpackEncodedStringToUnsignedChars(DFA17_maxS);
+    static final short[] DFA17_accept = DFA.unpackEncodedString(DFA17_acceptS);
+    static final short[] DFA17_special = DFA.unpackEncodedString(DFA17_specialS);
+    static final short[][] DFA17_transition;
+
+    static {
+        int numStates = DFA17_transitionS.length;
+        DFA17_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA17_transition[i] = DFA.unpackEncodedString(DFA17_transitionS[i]);
+        }
+    }
+
+    class DFA17 extends DFA {
+
+        public DFA17(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 17;
+            this.eot = DFA17_eot;
+            this.eof = DFA17_eof;
+            this.min = DFA17_min;
+            this.max = DFA17_max;
+            this.accept = DFA17_accept;
+            this.special = DFA17_special;
+            this.transition = DFA17_transition;
+        }
+        public String getDescription() {
+            return "584:4: ( data_type )?";
+        }
+    }
+    static final String DFA29_eotS =
+        "\12\uffff";
+    static final String DFA29_eofS =
+        "\12\uffff";
+    static final String DFA29_minS =
+        "\2\151\5\uffff\1\0\2\uffff";
+    static final String DFA29_maxS =
+        "\1\u0089\1\u008c\5\uffff\1\0\2\uffff";
+    static final String DFA29_acceptS =
+        "\2\uffff\4\2\1\1\1\uffff\2\2";
+    static final String DFA29_specialS =
+        "\1\2\1\0\5\uffff\1\1\2\uffff}>";
+    static final String[] DFA29_transitionS = {
+            "\1\1\6\uffff\1\2\2\uffff\1\2\25\uffff\1\2",
+            "\1\6\2\uffff\1\7\1\5\3\uffff\1\11\2\uffff\1\4\1\10\26\uffff"+
+            "\1\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
+    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
+    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
+    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
+    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
+    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
+    static final short[][] DFA29_transition;
+
+    static {
+        int numStates = DFA29_transitionS.length;
+        DFA29_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
+        }
+    }
+
+    class DFA29 extends DFA {
+
+        public DFA29(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 29;
+            this.eot = DFA29_eot;
+            this.eof = DFA29_eof;
+            this.min = DFA29_min;
+            this.max = DFA29_max;
+            this.accept = DFA29_accept;
+            this.special = DFA29_special;
+            this.transition = DFA29_transition;
+        }
+        public String getDescription() {
+            return "674:3: ( extend_key rule_id )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA29_1 = input.LA(1);
+
+                         
+                        int index29_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA29_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+
+                        else if ( (LA29_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 4;}
+
+                        else if ( (LA29_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 5;}
+
+                        else if ( (LA29_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 6;}
+
+                        else if ( (LA29_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 7;}
+
+                        else if ( (LA29_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 8;}
+
+                        else if ( (LA29_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
+
+                         
+                        input.seek(index29_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA29_7 = input.LA(1);
+
+                         
+                        int index29_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 6;}
+
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) ) {s = 9;}
+
+                         
+                        input.seek(index29_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA29_0 = input.LA(1);
+
+                         
+                        int index29_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA29_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 1;}
+
+                        else if ( (LA29_0==AT||LA29_0==WHEN||LA29_0==THEN) ) {s = 2;}
+
+                         
+                        input.seek(index29_0);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 29, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA38_eotS =
+        "\21\uffff";
+    static final String DFA38_eofS =
+        "\21\uffff";
+    static final String DFA38_minS =
+        "\1\151\1\0\17\uffff";
+    static final String DFA38_maxS =
+        "\1\151\1\0\17\uffff";
+    static final String DFA38_acceptS =
+        "\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+
+        "\15\1\16\1\17";
+    static final String DFA38_specialS =
+        "\1\0\1\1\17\uffff}>";
+    static final String[] DFA38_transitionS = {
+            "\1\1",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
+    static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
+    static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
+    static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
+    static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
+    static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
+    static final short[][] DFA38_transition;
+
+    static {
+        int numStates = DFA38_transitionS.length;
+        DFA38_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
+        }
+    }
+
+    class DFA38 extends DFA {
+
+        public DFA38(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 38;
+            this.eot = DFA38_eot;
+            this.eof = DFA38_eof;
+            this.min = DFA38_min;
+            this.max = DFA38_max;
+            this.accept = DFA38_accept;
+            this.special = DFA38_special;
+            this.transition = DFA38_transition;
+        }
+        public String getDescription() {
+            return "743:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA38_0 = input.LA(1);
+
+                         
+                        int index38_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA38_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((v!
 alidateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 1;}
+
+                         
+                        input.seek(index38_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA38_1 = input.LA(1);
+
+                         
+                        int index38_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {s = 2;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {s = 3;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 4;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {s = 5;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 6;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {s = 7;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {s = 8;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {s = 9;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {s = 10;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {s = 11;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {s = 12;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 13;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {s = 14;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))) ) {s = 15;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FILTER)))) ) {s = 16;}
+
+                         
+                        input.seek(index38_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 38, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA60_eotS =
+        "\12\uffff";
+    static final String DFA60_eofS =
+        "\12\uffff";
+    static final String DFA60_minS =
+        "\1\151\1\0\10\uffff";
+    static final String DFA60_maxS =
+        "\1\155\1\0\10\uffff";
+    static final String DFA60_acceptS =
+        "\2\uffff\1\7\1\1\1\2\1\3\1\4\1\5\1\6\1\10";
+    static final String DFA60_specialS =
+        "\1\uffff\1\0\10\uffff}>";
+    static final String[] DFA60_transitionS = {
+            "\1\1\3\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA60_eot = DFA.unpackEncodedString(DFA60_eotS);
+    static final short[] DFA60_eof = DFA.unpackEncodedString(DFA60_eofS);
+    static final char[] DFA60_min = DFA.unpackEncodedStringToUnsignedChars(DFA60_minS);
+    static final char[] DFA60_max = DFA.unpackEncodedStringToUnsignedChars(DFA60_maxS);
+    static final short[] DFA60_accept = DFA.unpackEncodedString(DFA60_acceptS);
+    static final short[] DFA60_special = DFA.unpackEncodedString(DFA60_specialS);
+    static final short[][] DFA60_transition;
+
+    static {
+        int numStates = DFA60_transitionS.length;
+        DFA60_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA60_transition[i] = DFA.unpackEncodedString(DFA60_transitionS[i]);
+        }
+    }
+
+    class DFA60 extends DFA {
+
+        public DFA60(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 60;
+            this.eot = DFA60_eot;
+            this.eof = DFA60_eof;
+            this.min = DFA60_min;
+            this.max = DFA60_max;
+            this.accept = DFA60_accept;
+            this.special = DFA60_special;
+            this.transition = DFA60_transition;
+        }
+        public String getDescription() {
+            return "942:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA60_1 = input.LA(1);
+
+                         
+                        int index60_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {s = 3;}
+
+                        else if ( (((validateNotWithBinding())&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))) ) {s = 4;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 5;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 6;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {s = 7;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FORANY)))) ) {s = 8;}
+
+                        else if ( (true) ) {s = 9;}
+
+                         
+                        input.seek(index60_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 60, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA79_eotS =
+        "\13\uffff";
+    static final String DFA79_eofS =
+        "\13\uffff";
+    static final String DFA79_minS =
+        "\1\150\1\0\11\uffff";
+    static final String DFA79_maxS =
+        "\1\u0089\1\0\11\uffff";
+    static final String DFA79_acceptS =
+        "\2\uffff\1\2\7\uffff\1\1";
+    static final String DFA79_specialS =
+        "\1\uffff\1\0\11\uffff}>";
+    static final String[] DFA79_transitionS = {
+            "\3\2\2\uffff\1\1\2\2\6\uffff\2\2\21\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA79_eot = DFA.unpackEncodedString(DFA79_eotS);
+    static final short[] DFA79_eof = DFA.unpackEncodedString(DFA79_eofS);
+    static final char[] DFA79_min = DFA.unpackEncodedStringToUnsignedChars(DFA79_minS);
+    static final char[] DFA79_max = DFA.unpackEncodedStringToUnsignedChars(DFA79_maxS);
+    static final short[] DFA79_accept = DFA.unpackEncodedString(DFA79_acceptS);
+    static final short[] DFA79_special = DFA.unpackEncodedString(DFA79_specialS);
+    static final short[][] DFA79_transition;
+
+    static {
+        int numStates = DFA79_transitionS.length;
+        DFA79_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA79_transition[i] = DFA.unpackEncodedString(DFA79_transitionS[i]);
+        }
+    }
+
+    class DFA79 extends DFA {
+
+        public DFA79(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 79;
+            this.eot = DFA79_eot;
+            this.eof = DFA79_eof;
+            this.min = DFA79_min;
+            this.max = DFA79_max;
+            this.accept = DFA79_accept;
+            this.special = DFA79_special;
+            this.transition = DFA79_transition;
+        }
+        public String getDescription() {
+            return "1168:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA79_1 = input.LA(1);
+
+                         
+                        int index79_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred10_DRL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index79_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 79, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA81_eotS =
+        "\14\uffff";
+    static final String DFA81_eofS =
+        "\14\uffff";
+    static final String DFA81_minS =
+        "\1\150\1\0\12\uffff";
+    static final String DFA81_maxS =
+        "\1\u0089\1\0\12\uffff";
+    static final String DFA81_acceptS =
+        "\2\uffff\1\2\1\3\7\uffff\1\1";
+    static final String DFA81_specialS =
+        "\1\uffff\1\0\12\uffff}>";
+    static final String[] DFA81_transitionS = {
+            "\3\3\2\uffff\1\1\2\3\6\uffff\2\3\17\uffff\1\2\1\uffff\1\3",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
+    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
+    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
+    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
+    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
+    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
+    static final short[][] DFA81_transition;
+
+    static {
+        int numStates = DFA81_transitionS.length;
+        DFA81_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
+        }
+    }
+
+    class DFA81 extends DFA {
+
+        public DFA81(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 81;
+            this.eot = DFA81_eot;
+            this.eof = DFA81_eof;
+            this.min = DFA81_min;
+            this.max = DFA81_max;
+            this.accept = DFA81_accept;
+            this.special = DFA81_special;
+            this.transition = DFA81_transition;
+        }
+        public String getDescription() {
+            return "1182:4: ({...}? paren_chunk | square_chunk )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA81_1 = input.LA(1);
+
+                         
+                        int index81_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 11;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index81_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 81, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA100_eotS =
+        "\20\uffff";
+    static final String DFA100_eofS =
+        "\20\uffff";
+    static final String DFA100_minS =
+        "\2\151\14\uffff\1\0\1\uffff";
+    static final String DFA100_maxS =
+        "\1\155\1\u008e\14\uffff\1\0\1\uffff";
+    static final String DFA100_acceptS =
+        "\2\uffff\1\3\1\2\13\uffff\1\1";
+    static final String DFA100_specialS =
+        "\16\uffff\1\0\1\uffff}>";
+    static final String[] DFA100_transitionS = {
+            "\1\1\3\uffff\1\2",
+            "\2\3\2\uffff\1\16\3\uffff\1\3\15\uffff\6\3\2\uffff\1\3\6\uffff"+
+            "\1\3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA100_eot = DFA.unpackEncodedString(DFA100_eotS);
+    static final short[] DFA100_eof = DFA.unpackEncodedString(DFA100_eofS);
+    static final char[] DFA100_min = DFA.unpackEncodedStringToUnsignedChars(DFA100_minS);
+    static final char[] DFA100_max = DFA.unpackEncodedStringToUnsignedChars(DFA100_maxS);
+    static final short[] DFA100_accept = DFA.unpackEncodedString(DFA100_acceptS);
+    static final short[] DFA100_special = DFA.unpackEncodedString(DFA100_specialS);
+    static final short[][] DFA100_transition;
+
+    static {
+        int numStates = DFA100_transitionS.length;
+        DFA100_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA100_transition[i] = DFA.unpackEncodedString(DFA100_transitionS[i]);
+        }
+    }
+
+    class DFA100 extends DFA {
+
+        public DFA100(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 100;
+            this.eot = DFA100_eot;
+            this.eof = DFA100_eof;
+            this.min = DFA100_min;
+            this.max = DFA100_max;
+            this.accept = DFA100_accept;
+            this.special = DFA100_special;
+            this.transition = DFA100_transition;
+        }
+        public String getDescription() {
+            return "1383:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA100_14 = input.LA(1);
+
+                         
+                        int index100_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 15;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index100_14);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 100, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA110_eotS =
+        "\66\uffff";
+    static final String DFA110_eofS =
+        "\66\uffff";
+    static final String DFA110_minS =
+        "\2\151\11\uffff\1\151\1\4\16\uffff\1\0\20\uffff\2\0\1\uffff\5\0"+
+        "\2\uffff";
+    static final String DFA110_maxS =
+        "\2\u008e\11\uffff\1\u008d\1\u0097\16\uffff\1\0\20\uffff\2\0\1\uffff"+
+        "\5\0\2\uffff";
+    static final String DFA110_acceptS =
+        "\2\uffff\1\2\5\uffff\1\3\1\4\1\3\2\uffff\1\3\16\uffff\12\3\10\uffff"+
+        "\1\3\6\uffff\1\1";
+    static final String DFA110_specialS =
+        "\1\0\1\1\11\uffff\1\2\1\3\16\uffff\1\4\20\uffff\1\5\1\6\1\uffff"+
+        "\1\7\1\10\1\11\1\12\1\13\2\uffff}>";
+    static final String[] DFA110_transitionS = {
+            "\1\1\3\uffff\1\11\21\uffff\6\2\11\uffff\1\10",
+            "\1\13\2\uffff\1\15\1\14\3\15\3\uffff\4\15\4\uffff\2\15\7\uffff"+
+            "\3\15\5\uffff\1\15\1\12",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\45\1\35\1\uffff\1\45\1\33\1\41\1\42\1\45\3\uffff\2\45\1"+
+            "\37\1\36\4\uffff\1\43\1\44\7\uffff\2\45\1\34\5\uffff\1\40",
+            "\145\56\1\54\2\56\1\57\1\55\6\56\1\62\1\60\17\56\1\61\1\63"+
+            "\21\56",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA110_eot = DFA.unpackEncodedString(DFA110_eotS);
+    static final short[] DFA110_eof = DFA.unpackEncodedString(DFA110_eofS);
+    static final char[] DFA110_min = DFA.unpackEncodedStringToUnsignedChars(DFA110_minS);
+    static final char[] DFA110_max = DFA.unpackEncodedStringToUnsignedChars(DFA110_maxS);
+    static final short[] DFA110_accept = DFA.unpackEncodedString(DFA110_acceptS);
+    static final short[] DFA110_special = DFA.unpackEncodedString(DFA110_specialS);
+    static final short[][] DFA110_transition;
+
+    static {
+        int numStates = DFA110_transitionS.length;
+        DFA110_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA110_transition[i] = DFA.unpackEncodedString(DFA110_transitionS[i]);
+        }
+    }
+
+    class DFA110 extends DFA {
+
+        public DFA110(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 110;
+            this.eot = DFA110_eot;
+            this.eof = DFA110_eof;
+            this.min = DFA110_min;
+            this.max = DFA110_max;
+            this.accept = DFA110_accept;
+            this.special = DFA110_special;
+            this.transition = DFA110_transition;
+        }
+        public String getDescription() {
+            return "1453:1: constraint_expression options {k=3; } : ( compound_operator | op= simple_operator ( constr_param_set )? val= expression_value -> ^( simple_operator ( constr_param_set )? expression_value ) | custom_operator ( constr_param_set )? ( expression_value )? -> ^( custom_operator ( constr_param_set )? ( expression_value )? ) | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA110_0 = input.LA(1);
+
+                         
+                        int index110_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA110_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
+
+                        else if ( ((LA110_0>=EQUAL && LA110_0<=NOT_EQUAL)) ) {s = 2;}
+
+                        else if ( (LA110_0==APPROX) ) {s = 8;}
+
+                        else if ( (LA110_0==LEFT_PAREN) ) {s = 9;}
+
+                         
+                        input.seek(index110_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA110_1 = input.LA(1);
+
+                         
+                        int index110_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA110_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 10;}
+
+                        else if ( (LA110_1==ID) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 11;}
+
+                        else if ( (LA110_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 12;}
+
+                        else if ( (LA110_1==STRING||(LA110_1>=COMMA && LA110_1<=AT)||(LA110_1>=BOOL && LA110_1<=DOUBLE_AMPER)||(LA110_1>=SINGLE_PIPE && LA110_1<=SINGLE_AMPER)||(LA110_1>=FLOAT && LA110_1<=LEFT_SQUARE)||LA110_1==CUT) && (((isPluggableEvaluator(false))))) {s = 13;}
+
+                         
+                        input.seek(index110_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA110_11 = input.LA(1);
+
+                         
+                        int index110_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA110_11==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 27;}
+
+                        else if ( (LA110_11==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 28;}
+
+                        else if ( (LA110_11==DOT) && (((isPluggableEvaluator(false))))) {s = 29;}
+
+                        else if ( (LA110_11==DOUBLE_AMPER) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 30;}
+
+                        else if ( (LA110_11==DOUBLE_PIPE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 31;}
+
+                        else if ( (LA110_11==CUT) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 32;}
+
+                        else if ( (LA110_11==COMMA) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 33;}
+
+                        else if ( (LA110_11==RIGHT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 34;}
+
+                        else if ( (LA110_11==SINGLE_PIPE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 35;}
+
+                        else if ( (LA110_11==SINGLE_AMPER) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 36;}
+
+                        else if ( (LA110_11==ID||LA110_11==STRING||LA110_11==AT||(LA110_11>=BOOL && LA110_11<=INT)||(LA110_11>=FLOAT && LA110_11<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 37;}
+
+                         
+                        input.seek(index110_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA110_12 = input.LA(1);
+
+                         
+                        int index110_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA110_12==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 44;}
+
+                        else if ( (LA110_12==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 45;}
+
+                        else if ( ((LA110_12>=VT_COMPILATION_UNIT && LA110_12<=SEMICOLON)||(LA110_12>=DOT && LA110_12<=DOT_STAR)||(LA110_12>=COMMA && LA110_12<=WHEN)||(LA110_12>=DOUBLE_PIPE && LA110_12<=NOT_EQUAL)||(LA110_12>=LEFT_SQUARE && LA110_12<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 46;}
+
+                        else if ( (LA110_12==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 47;}
+
+                        else if ( (LA110_12==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 48;}
+
+                        else if ( (LA110_12==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 49;}
+
+                        else if ( (LA110_12==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 50;}
+
+                        else if ( (LA110_12==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 51;}
+
+                         
+                        input.seek(index110_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA110_27 = input.LA(1);
+
+                         
+                        int index110_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 53;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA110_44 = input.LA(1);
+
+                         
+                        int index110_44 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_44);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA110_45 = input.LA(1);
+
+                         
+                        int index110_45 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_45);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA110_47 = input.LA(1);
+
+                         
+                        int index110_47 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_47);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA110_48 = input.LA(1);
+
+                         
+                        int index110_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_48);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA110_49 = input.LA(1);
+
+                         
+                        int index110_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA110_50 = input.LA(1);
+
+                         
+                        int index110_50 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_50);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA110_51 = input.LA(1);
+
+                         
+                        int index110_51 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 53;}
+
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 46;}
+
+                         
+                        input.seek(index110_51);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 110, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit513 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit518 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit523 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement578 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement582 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement584 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id611 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_DOT_in_package_id617 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id621 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement666 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement678 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement684 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement700 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement710 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement732 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement734 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement737 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement775 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement777 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement779 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement782 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name816 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_DOT_in_import_name822 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name826 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name833 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global873 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_global875 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_global_id_in_global877 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global879 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id908 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function940 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_function942 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_function_id_in_function945 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_parameters_in_function947 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_curly_chunk_in_function949 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id979 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query1011 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_query_id_in_query1013 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_parameters_in_query1021 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query1030 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_end_key_in_query1037 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query1039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id1074 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id1090 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1109 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1118 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters1121 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1125 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1134 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1160 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1174 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1180 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1203 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1206 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1210 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1215 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_end_key_in_type_declaration1220 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1271 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1279 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1286 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1311 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1317 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1323 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1329 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1333 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1361 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1367 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1404 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_template_id_in_template1406 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1413 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
+    public static final BitSet FOLLOW_template_slot_in_template1421 = new BitSet(new long[]{0x0000000000000000L,0x0000230000000000L});
+    public static final BitSet FOLLOW_end_key_in_template1428 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1432 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1465 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1481 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1501 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1503 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1505 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1534 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1571 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1573 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_extend_key_in_rule1582 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1584 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1588 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1591 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_when_part_in_rule1594 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1597 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1641 = new BitSet(new long[]{0x0000000000000000L,0x0002220000000000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1647 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1657 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1678 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1694 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1715 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1717 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1727 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1731 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1738 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1777 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1788 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1795 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1802 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1808 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1814 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1826 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1838 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_in_rule_attribute1849 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1854 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_in_rule_attribute1859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1873 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1892 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1912 = new BitSet(new long[]{0x0000000000000000L,0x0010200000000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1925 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1956 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
+    public static final BitSet FOLLOW_INT_in_salience1965 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1989 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1994 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2009 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus2014 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group2031 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group2036 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2050 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group2055 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2069 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group2074 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration2088 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
+    public static final BitSet FOLLOW_INT_in_duration2101 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_duration2112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect2132 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_dialect2137 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2155 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active2160 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_prior2177 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_prior2182 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2199 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_entail_mode2204 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_key_in_filter2226 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_filter2231 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2251 = new BitSet(new long[]{0x0000000000000002L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2272 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2299 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2309 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_or2315 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2326 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2376 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_lhs_or2389 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_or2397 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2410 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2418 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2430 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2475 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_xor_key_in_lhs_or2488 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_or2496 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2509 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2517 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2562 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2588 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_or2590 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2603 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2614 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_hedge_in_lhs_or2643 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_or2645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_very_key_in_hedge2687 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2723 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2733 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_and2738 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2747 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2753 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2787 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2817 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_lhs_and2819 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2832 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2846 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2886 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2894 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2900 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2906 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2912 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary2918 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2924 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2935 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2941 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2949 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2963 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2979 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3006 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3013 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3021 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3028 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3043 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3089 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not3114 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3136 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3143 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3152 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval3207 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3216 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall3243 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3248 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3256 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3262 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forany_key_in_lhs_forany3293 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3300 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3311 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_subject_key_in_lhs_forany3330 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3334 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_weight_key_in_lhs_forany3345 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3349 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3365 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3426 = new BitSet(new long[]{0x0000000000000002L,0x0300000000000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source3430 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source3440 = new BitSet(new long[]{0x0000000000000000L,0x0C00020000000000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3460 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source3476 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3493 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source3509 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause3541 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3546 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause3553 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3558 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3573 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements3580 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3589 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements3596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3622 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3631 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3639 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3644 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3654 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3660 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3668 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3714 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3724 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3729 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3740 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3744 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3749 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3761 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3765 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3770 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3786 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3850 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3874 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3886 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3902 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3913 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3929 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3935 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3957 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3966 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3973 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3978 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4005 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4013 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id4039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id4056 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source4076 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source4091 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source4098 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain4131 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain4138 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4154 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain4168 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain4179 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4215 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_cut_key_in_lhs_pattern4217 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern4233 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_cut_key_in_lhs_pattern4235 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding4263 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding4269 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4276 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4284 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4333 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4345 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4351 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4356 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact4396 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4403 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_constraints_in_fact4414 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4420 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_fact4434 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_constr_param_set4480 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_param_set4485 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_constr_attr_in_constr_param_set4492 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_param_set4497 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_id_in_constr_attr4530 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_type_in_constr_attr4542 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_args_in_constr_attr4550 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_cut_in_constr_attr4558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_prior_in_constr_attr4566 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_id_key_in_c_param_id4588 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_id4594 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_id4602 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_key_in_c_param_type4631 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_type4637 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_type4645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_kut_key_in_c_param_cut4676 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_cut4682 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_cut4690 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_args_key_in_c_param_args4720 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_args4726 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_args4734 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_c_param_prior4765 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_prior4771 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_prior4779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints4811 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints4815 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_constraint_in_constraints4822 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint4836 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_constr_config_in_or_constr4864 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4886 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr4922 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4978 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4989 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_or_constr_config5038 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config5065 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config5135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_config_in_and_constr5175 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr5199 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr5238 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5316 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5327 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_and_constr_config5376 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5407 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr5542 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5545 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr5550 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5556 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr5566 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5571 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint5591 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5593 = new BitSet(new long[]{0x0000000000000002L,0xC000220000000000L,0x000000000000601FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5600 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint5606 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5610 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_cut_key_in_field_constraint5618 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5676 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000401FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5678 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_cut_key_in_field_constraint5680 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_cut_key_in_cut5712 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label5736 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_label5743 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5764 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5770 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000401FL});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5780 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5801 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5807 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000401FL});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5814 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5842 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5849 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_constr_param_set_in_constraint_expression5851 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5856 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5875 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_constr_param_set_in_constraint_expression5877 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5880 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5901 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000401FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5910 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator5958 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator6017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator6056 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator6091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator6126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator6161 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_custom_operator6227 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_approx_symb_in_custom_operator6238 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_operator_key_in_custom_operator6241 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_custom_operator6252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6311 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator6316 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6318 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator6329 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6337 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator6341 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6346 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6354 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key6392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key6437 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value6474 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value6479 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value6485 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint6504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint6511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6518 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint6525 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint6532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6547 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type6553 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6557 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6572 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_ID_in_data_type6600 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_DOT_in_data_type6606 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type6610 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type6615 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6651 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6665 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path6669 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6673 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element6697 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element6703 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6732 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6751 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6760 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6766 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6771 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6813 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data6825 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6841 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6873 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data6897 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data6909 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data6925 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data6936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk6962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data6985 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data6997 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data7012 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data7023 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7051 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7055 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7059 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7063 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7095 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key7099 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7103 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7136 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key7140 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7144 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key7180 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7184 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key7220 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7224 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7256 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key7260 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7296 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key7300 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7304 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7340 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7344 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key7380 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7384 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key7413 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key7440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key7467 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key7494 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_prior_key7522 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entail_mode_key7555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_filter_key7588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key7621 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key7648 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key7675 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key7702 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key7729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key7756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key7783 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key7810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key7837 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key7864 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key7891 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key7918 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key7945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key7972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key7999 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_equiv_key8029 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_xor_key8065 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key8101 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key8128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forany_key8157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key8190 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key8217 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key8244 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_end_key8271 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key8318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_subject_key8349 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_weight_key8387 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_very_key8426 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CUT_in_cut_key8460 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_id_key8492 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_kut_key8540 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_key8577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_args_key8614 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_APPROX_in_approx_symb8664 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2287 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2289 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred1_DRL2291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2362 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2364 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred2_DRL2366 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2461 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2463 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred3_DRL2465 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred4_DRL2575 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred4_DRL2577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred5_DRL2711 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_and_key_in_synpred5_DRL2713 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred5_DRL2715 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2800 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_param_set_in_synpred6_DRL2802 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2806 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred7_DRL2959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL2996 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred8_DRL2999 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred8_DRL3001 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3124 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3127 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL4085 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_synpred11_DRL4965 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred11_DRL4967 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_synpred12_DRL5303 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred12_DRL5305 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_folog-to-fologeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_folog-to-fologeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_folog-to-fologeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			Behind-the-scenes XML Schema for the transition from folog to fologeq
+			File: _folog-to-fologeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-11
+		</xs:documentation>
+	</xs:annotation>
+
+	<xs:redefine schemaLocation="folog.xsd">
+
+		<!--
+			Remove @in, to be re-added (slightly changed) in fologeq
+			
+			This would be more intuitive if done by restricting Expr.attlist,
+			but this type of attribute restriction apparently isn't recognized by XSV.
+		-->
+		<xs:attributeGroup name="in.attrib"/>
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hohornlog-to-hohornlogeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hohornlog-to-hohornlogeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hohornlog-to-hohornlogeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			Behind-the-scenes XML Schema for the transition from hohornlog to hohornlogeq
+			File: _hohornlog-to-hohornlogeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-10
+		</xs:documentation>
+	</xs:annotation>
+
+	<xs:redefine schemaLocation="hohornlog.xsd">
+
+		<!--
+			Remove @in, to be re-added (slightly changed) in hohornlogeq
+			
+			This would be more intuitive if done by restricting Expr.attlist,
+			but this type of attribute restriction apparently isn't recognized by XSV.
+		-->
+		<xs:attributeGroup name="in.attrib"/>
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hornlog-to-hornlogeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hornlog-to-hornlogeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_hornlog-to-hornlogeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			Behind-the-scenes XML Schema for the transition from hornlog to hornlogeq
+			File: _hornlog-to-hornlogeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-10
+		</xs:documentation>
+	</xs:annotation>
+
+	<xs:redefine schemaLocation="hornlog.xsd">
+
+		<!--
+			Remove @in, to be re-added (slightly changed) in hornlogeq
+			
+			This would be more intuitive if done by restricting Expr.attlist,
+			but this type of attribute restriction apparently isn't recognized by XSV.
+		-->
+		<xs:attributeGroup name="in.attrib"/>
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_naffolog-to-naffologeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_naffolog-to-naffologeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_naffolog-to-naffologeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			Behind-the-scenes XML Schema for the transition from naffolog to naffologeq
+			File: _naffolog-to-naffologeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-11
+		</xs:documentation>
+	</xs:annotation>
+
+	<xs:redefine schemaLocation="naffolog.xsd">
+
+		<!--
+			Remove @in, to be re-added (slightly changed) in naffologeq
+			
+			This would be more intuitive if done by restricting Expr.attlist,
+			but this type of attribute restriction apparently isn't recognized by XSV.
+		-->
+		<xs:attributeGroup name="in.attrib"/>
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_nafhornlog-to-hohornlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_nafhornlog-to-hohornlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/_nafhornlog-to-hohornlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			Behind-the-scenes XML Schema for the transition from nafhornlog to hohornlog
+			File: _nafhornlog-to-hohornlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+
+	<!-- hohornlog redefines the 'neg' module, removing Atom -->
+	<xs:redefine schemaLocation="modules/neg_module.xsd">
+
+		<!-- remove Atom from strong by restriction -->
+		<xs:group name="strong.content">
+			<xs:choice/>
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from Neg so that its content model is:
+			( oid?, (strong) )
+		-->	
+
+	</xs:redefine>
+	
+	<!-- note the removal of Atoms (thus also op and Rel), Cterms (thus also op and Ctor) and Ind -->
+	<xs:redefine schemaLocation="nafhornlog.xsd">
+
+		<!-- remove Atom from weak by restriction -->
+		<xs:group name="weak.content">
+			<xs:choice/>
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from Naf so that its content model is:
+			( oid?, (weak) )
+		-->
+
+		<!-- remove Ind, Data, Expr and Plex from arg by restriction -->
+		<xs:group name="arg.content">
+			<xs:choice>
+				<xs:element ref="Var"/>
+				<xs:element ref="Skolem"/>
+				<xs:element ref="Reify"/>
+			</xs:choice>
+		</xs:group>
+		<!-- note that the above indirectly removes these from slot fillers as well -->
+
+		<!-- remove Ind, Data, Expr and Plex from slot names by restriction -->
+		<xs:group name="slot-name.extend">
+			<xs:choice/>
+		</xs:group>
+		
+		<!--
+			remove Ind, Data, Expr and Plex from oid by restriction:
+			(Var | Skolem | Reify)
+		-->		
+		<xs:group name="oid.content">
+			<xs:choice>
+				<xs:element ref="Var"/>
+				<xs:element ref="Skolem"/>
+				<xs:element ref="Reify"/>
+			</xs:choice>
+		</xs:group>			
+
+		<!-- remove Atom from body by restriction -->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Naf"/>			
+			</xs:choice>
+		</xs:group>
+		
+		<!-- remove Atom from head by restriction -->
+		<xs:group name="head.content">
+			<xs:choice/>
+		</xs:group>	
+		<!--
+			note that the above indirectly removes Atom from Implies so that its content model is:
+			( oid?, ( head, body) | ( body, head) | ( (And | Or | Naf), () ) )	
+		-->
+
+		<!-- remove Atom from torso by restriction -->
+		<xs:group name="torso.content">
+			<xs:choice/>		
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from Equivalent so that its content model is:
+			( oid?, ( ( torso, torso) | ( (), () ) ) )	
+		-->
+
+		<!-- remove Atom from formula-assert by restriction -->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:element ref="Rulebase"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>	
+				<xs:element ref="Entails"/>				
+				<xs:element ref="Forall"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly removes Atom from Assert so that its content model is:
+			( oid?, (formula | Rulebase | Implies | Equivalent | Entails | Forall)* )
+		-->	
+		
+		<!-- remove Atom from formula-rulebase by restriction -->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>	
+				<xs:element ref="Forall"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly removes Atom from Rulebase so that its content model is:
+			( oid?, (formula | Implies | Equivalent | Forall)* )
+		-->	
+		
+		<!-- remove Atom from formula-and-or by restriction -->		
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from And/Or so that their content model is:
+			( oid?, (formula | And | Or | Naf)* )
+		-->	
+		
+		<!-- remove Atom from formula-query by restriction -->		
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:element ref="Rulebase"/>
+				<xs:element name="And" type="And-query.type"/>
+				<xs:element name="Or" type="Or-query.type"/>	
+				<xs:element ref="Entails"/>
+				<xs:element ref="Exists"/>
+				<xs:element ref="Naf"/>			
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly removes Atom from Query so that its content model is:
+			( oid?, (formula | Rulebase | And | Or | Entails | Exists | Naf)* )
+		-->
+
+		<!-- remove Atom from formula-forall by restriction -->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:element ref="Implies"/>			
+				<xs:element ref="Equivalent"/>			
+				<xs:element ref="Forall"/>				
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from Forall so that its content model is:
+			( oid?, (declare | Var)+, (formula | Implies | Equivalent | Forall) )
+		-->	
+
+		<!-- remove Atom from formula-exists by restriction -->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>		
+				<xs:element ref="Exists"/>	
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly removes Atom from Exists so that its content model is:
+			( oid?, (declare | Var)+, (formula | And | Or | Exists) )
+		-->			
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundfact.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundfact.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundfact.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Binary Ground-Datalog-Fact RuleML sublanguage
+			File: bindatagroundfact.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<xs:redefine schemaLocation="bindatagroundlog.xsd">
+		<!--
+			remove Implies and Equivalent so that Assert's content model is:
+			( oid?, (formula | Rulebase | Atom | Entails)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:element ref="Rulebase"/>
+				<xs:element ref="Atom"/>
+				<xs:element ref="Entails"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			remove Implies and Equivalent so that Rulebase's content model is:
+			( oid?, (formula | Atom)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:element ref="Atom"/>
+			</xs:choice>
+		</xs:group>	
+
+	</xs:redefine>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatagroundlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Binary Ground-Datalog RuleML sublanguage
+			File: bindatagroundlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<xs:redefine schemaLocation="bindatalog.xsd">
+		<!--
+			remove Var so that arg's content model is: (Ind | Data | Skolem | Reify)
+
+			note that this automatically removes Var from Atom so that its content model is:
+			(
+				(oid)?, (op | Rel), (slot)*,
+				( (arg|Ind|Data|Skolem|Reify), (arg|Ind|Data|Skolem|Reify), (slot)* )?
+			)
+		-->		
+		<xs:group name="arg.content">
+			<xs:choice>
+				<xs:element ref="Ind"/>
+				<xs:element ref="Data"/>
+				<xs:element ref="Skolem"/>
+				<xs:element ref="Reify"/>					
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			remove Forall (since ground) so that Assert's content model is:
+			( oid?, (formula | Rulebase | Atom | Implies | Equivalent | Entails)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:element ref="Rulebase"/>
+				<xs:element name="Atom" type="Atom.type"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Entails"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			remove Forall (since ground) so that Rulebase's content model is:
+			( oid?, (formula | Atom | Implies | Equivalent)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:element name="Atom" type="Atom.type"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>
+			</xs:choice>
+		</xs:group>	
+
+		<!--
+			similarly, remove Exists (since ground) so that Query's content model is:
+			( oid?, (formula | Rulebase | And | Or | Atom | Entails)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:element ref="Rulebase"/>
+				<xs:element name="And" type="And-query.type"/>
+				<xs:element name="Or" type="Or-query.type"/>
+				<xs:element name="Atom" type="Atom.type"/>
+				<xs:element ref="Entails"/>
+			</xs:choice>
+		</xs:group>	
+
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatalog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatalog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/bindatalog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Binary Datalog RuleML sublanguage
+			File: bindatalog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-11
+		</xs:documentation>
+	</xs:annotation>
+	
+	<xs:redefine schemaLocation="datalog.xsd">
+		<!--
+			make atoms binary so that Atom's content model is:
+			(
+				(oid)?, (op | Rel), (slot)*,
+				( (arg|Ind|Data|Skolem|Var|Reify), (arg|Ind|Data|Skolem|Var|Reify), (slot)* )?
+			)	     		
+		-->
+		<xs:group name="Atom-arg.extend">
+			<xs:sequence>
+				<xs:choice minOccurs="2" maxOccurs="2">
+					<xs:element ref="arg"/>					
+					<xs:group ref="arg.content"/>
+				</xs:choice>
+			</xs:sequence>
+		</xs:group>		
+	</xs:redefine>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.doc
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.doc
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.pdf
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.pdf	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/content_models_091.pdf	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,3792 @@
+%PDF-1.4
+%âãÏÓ
+2242 0 obj <</Linearized 1/L 157921/O 2244/E 10198/N 29/T 113032/H [ 836 975]>>
+endobj
+           
+xref
+2242 26
+0000000016 00000 n
+0000002032 00000 n
+0000002312 00000 n
+0000002584 00000 n
+0000002657 00000 n
+0000002811 00000 n
+0000002963 00000 n
+0000003115 00000 n
+0000003267 00000 n
+0000003421 00000 n
+0000003575 00000 n
+0000004105 00000 n
+0000004565 00000 n
+0000004603 00000 n
+0000004847 00000 n
+0000005097 00000 n
+0000005175 00000 n
+0000007089 00000 n
+0000007172 00000 n
+0000007256 00000 n
+0000007326 00000 n
+0000007394 00000 n
+0000007466 00000 n
+0000007527 00000 n
+0000001811 00000 n
+0000000836 00000 n
+trailer
+<</Size 2268/Prev 113019/XRefStm 1811/Root 2243 0 R/Info 422 0 R/ID[<9E175722D260578F70383783D5BBECAB><EF8CDFA6F1655645BA627A9FBE343C35>]>>
+startxref
+0
+%%EOF
+            
+2267 0 obj<</Length 870/C 1198/Filter/FlateDecode/I 1408/L 1182/O 1166/S 813>>stream
+xÚb```b``µd`2´x€—ƒ…c:x*Ùè¹ËÍéÝ”’K©/”$8?1ÔL¸¢éÔ­VÀÀºLÿSôŒ)ËYõd~¨ç³scP¶c¢’K§ŠG¡’s§ŒÅ„GN Þ„F3psðpòæ$ØdZËFd„{„Y8I;š¹ª§Ë¤©I‰‹ikäçå&%úûIJ¸¹fgij˜™êë…ú†ø{;ÄÛÇyÙyÚ*Ç*Å(FëFéDª©*¤Ê§È%»”:—™Z[psìnäm(¯_Û¾¦­¬nCmWͺ­ÖWtTWU.\0kæŒÅ‹V®X¾zÕ²¥Köðp¶ÎmÙÙ¼£éà–í›·mš³qöñ#Ç=4¥or爛‰Ý¦÷OÛ¿kßÔ½óæƒÝ~âdBˆqòDB/7ÇÉ<œP/ˆb$ä
+À
+¤÷0p4Ì«ŸÛ¾«mgÝŽÚƒ5Û·n³±²¶Œð
+÷	óvŠwŒ+²+´MM‹ÉŒÎˆ²ˆ47R7TKõHqO–-•)‘6‘2ÑÖr(°Ï÷ÊóÌUNRJTô×õÓ‘T•PqSp•Ï–ËrÑtÖ24
+Ð/Ö380§bvù‘²Ã]‡:û:z7ô¬ï^7}í´5S«[«Z*›6-Ø2kóÌM36.>¾èØÊ£+¦,Ÿ¼zÒª‰Ë&,í_²ϾÝ{ç³ó³	°
+²13‰
+endstream
+endobj
+2266 0 obj<</Length 67/Filter/FlateDecode/W[1 2 1]/Index[423 1819]/DecodeParms<</Columns 4/Predictor 12>>/Size 2242/Type/XRef>>stream
+xÚìÑ1
+endstream
+endobj
+2243 0 obj<</MarkInfo<</LetterspaceFlags 0/Marked true>>/Outlines 239 0 R/Metadata 421 0 R/PieceInfo<</MarkedPDF<</LastModified(D:20060913110311)>>>>/Pages 417 0 R/PageLayout/OneColumn/StructTreeRoot 423 0 R/Type/Catalog/LastModified(D:20060913110311)/PageLabels 415 0 R>>
+endobj
+2244 0 obj<</CropBox[0 0 612 792]/Annots 2245 0 R/Parent 418 0 R/StructParents 0/Contents 2258 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</ColorSpace<</CS0 2254 0 R>>/Font<</TT0 2252 0 R/TT1 2253 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+2245 0 obj[2246 0 R 2247 0 R 2248 0 R 2249 0 R 2250 0 R 2251 0 R]
+endobj
+2246 0 obj<</Rect[360.18 644.222 388.195 665.577]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2264 0 R/H/I/StructParent 1/Border[0 0 0]/Type/Annot>>
+endobj
+2247 0 obj<</Rect[93.66 506.676 290.01 522.444]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2263 0 R/H/I/StructParent 2/Border[0 0 0]/Type/Annot>>
+endobj
+2248 0 obj<</Rect[36.0 492.876 119.713 508.644]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2262 0 R/H/I/StructParent 3/Border[0 0 0]/Type/Annot>>
+endobj
+2249 0 obj<</Rect[97.32 423.876 281.33 439.644]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2261 0 R/H/I/StructParent 4/Border[0 0 0]/Type/Annot>>
+endobj
+2250 0 obj<</Rect[401.88 354.936 515.994 370.704]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2260 0 R/H/I/StructParent 5/Border[0 0 0]/Type/Annot>>
+endobj
+2251 0 obj<</Rect[124.62 341.136 202.971 356.904]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 2259 0 R/H/I/StructParent 6/Border[0 0 0]/Type/Annot>>
+endobj
+2252 0 obj<</Subtype/TrueType/FontDescriptor 2255 0 R/LastChar 148/Widths[250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 0 0 0 0 444 921 722 667 667 722 611 556 722 722 333 0 0 611 889 722 722 556 722 667 556 611 0 722 0 722 0 0 0 0 0 0 0 0 444 500 444 500 444 333 500 500 278 0 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444]/BaseFont/TimesNewRomanPSMT/FirstChar 32/Encoding/WinAnsiEncoding/Type/Font>>
+endobj
+2253 0 obj<</Subtype/TrueType/FontDescriptor 2256 0 R/LastChar 121/Widths[250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 0 500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 930 722 0 722 722 667 611 778 778 389 0 0 667 944 722 778 611 778 722 556 667 722 722 0 0 0 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500]/BaseFont/TimesNewRomanPS-BoldMT/FirstChar 32/Encoding/WinAnsiEncoding/Type/Font>>
+endobj
+2254 0 obj[/ICCBased 2265 0 R]
+endobj
+2255 0 obj<</StemV 82/FontName/TimesNewRomanPSMT/FontStretch/Normal/FontWeight 400/Flags 34/Descent -216/FontBBox[-568 -307 2000 1007]/Ascent 891/FontFamily(Times New Roman)/CapHeight 656/XHeight -546/Type/FontDescriptor/ItalicAngle 0>>
+endobj
+2256 0 obj<</StemV 136/FontName/TimesNewRomanPS-BoldMT/FontStretch/Normal/FontWeight 700/Flags 34/Descent -216/FontBBox[-558 -307 2000 1026]/Ascent 891/FontFamily(Times New Roman)/CapHeight 656/XHeight -546/Type/FontDescriptor/ItalicAngle 0>>
+endobj
+2257 0 obj<</OPM 1/OP false/op false/Type/ExtGState/SA false/SM 0.02>>
+endobj
+2258 0 obj<</Length 1842/Filter/FlateDecode>>stream
+H‰¬WÛnã6}÷WðQbZ$u-‹v“m»ER
+$}`dÚV+Kª.‰³_ßRÖÅ–í.Ð[vâ™3Ã9g?”u²–qM>|øøñÓÝ-™9d3c$!³ÅOð\Í>-g‹åÒ!Œ,×ð×eLàå
+^Ȳ"ÌÁ÷¯øUI‡wß„ODHŸ,w3‹ØË¿f®K=2w¨ãxd¹šY¿ü¼œ}~€œ‹ß ÿâáöËü¼ÅaÒ2“VÿÐq1¹yô©cRš'&<*HÀ#éÄ·yV«¬&ùJ¥Yç%ù½IÕÃ=9“œM&ïkf¡)0$ÂñIà1JœÈ/TÃtØöi›E.ÆõCŸ
+~YmU™dr§vò†ÜÉ×dE~NÊ:Uç2‹k¥ø‡Þ™',È÷8¤Kõ¸ÓQLJ#øTÎ
+\88ߍ(‘NôdqÇñç¶k9¾2qC^UY%¶gåöœY±ÿ\þÒCy,dÖ¡ñh·0ªqe²RÅÙTÃÅùâ}‡Bã52Óq‡F£	íþÃÙj§
+zUªÙzØŸXtJæty“—øÂ§.¿Øô`²éS±¸KCE£…ÿ9T°+Ñ¢+Á€‹í`ë'ˆëEœº¦Ë_²ºÌWM\'yv–“GŠ0êçPp¼
+¸ãüëÎäkøß5ÛÙ¡¥í†$TQCŠuY±¿ Œ2ßÑ_Aªz«LàVfChR¨rgGVR×jEÞ’z›d}4låAmC]¼×E“¤ÖGܤú	á’ZnnÂÍmß*‰LÓAÄŸ‘¼¹à4àd0ÍRhÕ‚@#*¨Ûˆ´
+²K<žžß¦é¢-?ôxÓô¼¼“Œˆf&wйÏ2Þšvö¹ž+Faîõ/-ýÿú`6eި€«KÚŸ4>bM‚†^_Ó“UªTbƒŸ­?îŸm¢R…9á(!h¶ZÀV’u]&/G æ‡Gh=òºÅÓÔª‚XE©Öɾ=7òêú=¼¸Ï6%ËÃAg­qD0býdô3Ed©È&yUaødÖ¯¶°~œ§ÉߊÜ-ï§yR9ìÝÀ”nUïY-÷”<ª£55Rq&®Ê¸s,+ΘT‘ >ð
+Ø+Z^mëºøn±x{{£ecžÚsnQ¡Ób_­¦lø{5Ú2m8'Db‘O9ŒõOÔž¹çå¾5)#¿Òæ!¨!!Öö9
+n¬‘)al5t‰ÜÒ|¨íy`m½ŠôàqŒôO/ìJv}Y¡=ôàDÀ\h‰×Ân)»I‘ðU%Ë÷ýß.õ]
+|lã…­Ùµq0»;bát]Ô±0tUÈtzÔ¢ˆàüšqN;ò‘»
+ž_ÇB8Ží‡42±“,VϪ5h-w	(”T5/©Ì6M¯ÞñÒñP][Žoî½bìM‘—µ„mRç$Ëk=“ðaÛÓûD2åm4KõËUáÈV5 ÉðþF¦pF( @w(‘¯²LpŒãX¯ž
+U[ËöÓ@x7*·’¯²õ
+#J(Û°\ú’Ô¾He’á’­/ÉvôM‚§d; pWpyÐÑ÷¢lëÝ
+Çh:2Vì6’‡zÀ@j¢iÅæÎƒ>PhFy8
+­Y!5Åa_†~´\ÞºG°è¾\×ë,n¥PpèGïÍMšTèÆ
+Ö–c8Ú
+Ö?MÛ~«Òbݤæ®p^ãyð?™FÆ]D,\¸ÈÛ
+÷Æ{›Ãµ±©ón	"ÓQc»ßr‘ ¤bº­áeeú¢^äŽ6¼‡¢¦ÊW¥oŸ¯@u	K'Ʊ³ò_
+endstream
+endobj
+2259 0 obj<</URI(http://www.ruleml.org/papers/tutorial-ruleml.html)/S/URI>>
+endobj
+2260 0 obj<</URI(http://mail.ruleml.org/mailman/listinfo/ruleml-all)/S/URI>>
+endobj
+2261 0 obj<</URI(http://www.ruleml.org/modularization)/S/URI>>
+endobj
+2262 0 obj<</URI(http://www.ruleml.org/0.9/glossary)/S/URI>>
+endobj
+2263 0 obj<</URI(http://www.ruleml.org/0.91/xsd/modules)/S/URI>>
+endobj
+2264 0 obj<</URI(http://www.ruleml.org/0.91/)/S/URI>>
+endobj
+2265 0 obj<</Length 2575/Filter/FlateDecode/N 3/Alternate/DeviceRGB>>stream
+H‰œ–yTSwÇoÉž•°Ãc
+[€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó
+ 
+
+V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚ó
+Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAüom?çW=
+€x¯Íú·¶Ò-
+߁Þô-•’2ð5ßáÞüÜÏ	ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð
+¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ށSàx	¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r9‹\A&‘GÈ”ˆrQ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H	‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèҏӿ¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél
+»—½‡}Ž}ŸCâ¸qâ9
+N'çÎ)Î].ÂuæJ¸rî
+î÷wšGä	xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó	·‘ÛtÛ´¹iÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9	œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4	ö
+n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=G</zÁ^Á^j¯­^—¼	Þ¡ÞZïQïBº0FX'Ü+œòáû¤útøŒû<öuñ-ôÝà{Ö÷µ__•ߘß-G”,ê}çïé/÷ñ¿ÀHh8ðm W 2p[àŸƒ¸AiA«‚Ný#8$X¼?øAˆKHIÈ{!7Ä<q†¸Wüy(!46´-ôãÐaÁa†°ƒa†W†ï	¿¿@°@¹`lÁݧYÄŽˆÉH,²$òýÈÉ(Ç(YÔhÔ7ÑÎÑŠèÑ÷b<b*böÅ<Žõ‹ÕÇ~ûL&Y&9‡Ä%ÆuÇMÄsâsã‡ã¿NpJP%ìM˜IJlN<žDHJIڐtCj'•KwKg’C’—%ŸN¡§d§§|“ꙪO=–§%§mL»½Ðu¡váx:H—¦oL¿“!È¨ÉøC&13#s$ó/Y¢¬–¬³ÙÜìâì=ÙOsbsúrnåºçsOæ1óŠòvç=ˏËïÏŸ\ä»hÙ¢óÖê‚#…¤Â¼Â…³‹ãoZ<]TÔUt}‰`IÃ’sK­—V-ý¤˜Y,+>TB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßYÕ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø
+Ú†žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMÅ›Î
+nßLÝlÜ<9”úO
+¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿
+æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ
+
+endstream
+endobj
+1 0 obj<</CropBox[0 0 612 792]/Annots 2 0 R/Parent 418 0 R/StructParents 7/Contents 3 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+2 0 obj[83 0 R 84 0 R 90 0 R 91 0 R 77 0 R 78 0 R 143 0 R 144 0 R 106 0 R 107 0 R 61 0 R 62 0 R 115 0 R 116 0 R 134 0 R 135 0 R 146 0 R 147 0 R 148 0 R 149 0 R 79 0 R 80 0 R 59 0 R 60 0 R 63 0 R 64 0 R 65 0 R 66 0 R 108 0 R 109 0 R 75 0 R 76 0 R 92 0 R 93 0 R 141 0 R 142 0 R 139 0 R 140 0 R 150 0 R 151 0 R 102 0 R 103 0 R 123 0 R 124 0 R 125 0 R 96 0 R 97 0 R]
+endobj
+3 0 obj<</Length 1410/Filter/FlateDecode>>stream
+H‰Ü—_o›HÅß-íwà?xÂü¤ªJ›¸mVŠÕ~Ëî±IÊ
+CŠq¶ÝO¿Ã†)¬ö¡ã(Š-g˜?Ÿ{wE™<F›Ò{óæíÛ÷×WÞ,ðžfÐK¼ÙÅÇ•|¿Ÿ½_Ï.ÖëÀƒÞúQþw½ñ䟿åo½÷`P½þS}TxÉ× zÁÌÃpæ­w3ß›¯ÿš¨·@Po½ù¨úp¹ž-oeÍ‹;YÿâöêæZ^^߇.ë²òº
+%"<F9 Dw¢Ä4_PWâ¿
+à½ÐœÕ*Tõ¤D…
+áµ/³2JÒ}ÃÇÑî±³¡“FÅèé½üvH^¢4ÎʆqibacνÊz
+º¡¶^¿Ì‹}~]Å­t,q˜öé´và/‡4~ˆöí
+ï³ÁL;´b#÷î‘!ni–Œ 4ša†¹¼«ë¤¨Î¢y֏„Æ€ŽÌ¦ñ„ÚŸ%šmeNýS.FC;slV|úîŒCztçZ:Wi¾?qˆº1í5XÙÇfÃIXÇæËM
+¥9O8
+”x¹ëHʪ&s„>åA‚:7çÏUu—¨Õ#8`[Pf}‰ ¦­ØÿpÈ\?kâ3MnQíÆwiüýÜ{䠐Q(t@ö/“s‘²âÁƁe2_9¯ @ˆ
+hØà	ƒ
+OÊˈã/'ÛŽ’\RC˪$:¬$ÜWå
+HCçåÄ{Ó,Ï3Ö›g@ŽóìCíâv˜9‡çȇMfÄœ³OUÄmÑ÷þ*.e„~*Ó2³j7ê7áÆM¶/£l3'~<_@ÿó£*QûŽ3Ý5
+Ðp†~+@×zuxؤÑ~/Ñ´ŽìLFE†É,†´Ã֐WÉS•‡¢õâ0Ž9)k8´' @‡ÒfÎãìeç3œ”
+xBXåUš—wE¾íœ»œB4
+ã¯rŒs„fó)Oó§NÊqÆlN–j@|Ê·¤fÑ“#µA*ãbç2®#ªS-ý+À
+endstream
+endobj
+4 0 obj<</CropBox[0 0 612 792]/Annots 5 0 R/Parent 418 0 R/StructParents 55/Contents 6 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+5 0 obj[218 0 R 161 0 R 162 0 R 163 0 R 171 0 R 172 0 R 164 0 R 165 0 R 166 0 R 224 0 R 225 0 R 201 0 R 202 0 R 203 0 R 207 0 R 208 0 R 204 0 R 205 0 R 206 0 R 199 0 R 200 0 R 189 0 R 190 0 R 191 0 R 197 0 R 198 0 R 158 0 R 159 0 R 160 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 173 0 R 174 0 R 175 0 R 155 0 R 156 0 R 157 0 R 229 0 R]
+endobj
+6 0 obj<</Length 1151/Filter/FlateDecode>>stream
+H‰ä—Mo£FÆï–ö;p„ƒÇóÆH«•³IºÚUSuÚKÚ²Ç^º¶‰
+3‚¨‡냉œ	L~~žgžÿâ*É¢M¸Ê¬÷ï?|øxsmÍ µ!+²f‹Oòçtö1˜-‚
+6ò·ÁÊ’oÏòÍ
+RÁüúOþQb!,¯0¿fpfû™m9Á_3JkÍ!€Ðµ‚õÌ&ù‡·ÁìöN>sñðäwןo䪭œ=¹¹9õ,.oçw´¯²Ø™»öÞ™cÄmð½þx÷Æ?tl!ß*´·œ?ƒ/
+
+¨—Bzù—p΃ €JÚé.Îr¶Å7…$tXð~ãÓy½‹ÜÓãÀmშq at J*ñSþ|³(ã@z9NC]@Ü’Èu|hÉ„›¨“!x¨ÒF˜vð0ϯBëÑ^îyóèpíP;t¬‹§¼¨9¶ÂÈU3Â]FÜ=EoÉ(|égdŒ¦†0bçŒPÛf>“‘Ð>û%ܘî³byÉÈ/5")÷~d\Ly	¸Ôõê°>Gf$±—NRžú„ï‰&"C‡å‘.=‹ðû‰Ø<DCøøjË]ê'·†€U–ÛéXÖCýÝYé9Ȫ,Ÿ³š—¶UªÕ®ONµ:Kâöe:ã
+ƒ{=Wàá˹ܘ–UàW‘lâd:Ì΢¿EÓ\sÄTBc×_¿~s™Û„øýq'î~>)Š˜¥¨š•VMêòÝg6UåÛ¾JS‘d-³#¡Ó²!xÔ½»gts	¯³ú^dI¸jø³àbÃÔlH—
+¦uN=Šäu1µttÕº;²¹VÕúÑ–!í̹½w<û¸›˜&¦µÈAœ<õqæuŽ3ê3@«ãìë1<dÑFε‘3G¶HÚƒ­Q *NtÌ¡æ+Íw9ëJuQ×¹ýSœ„»ÝÜGuªÂý%[…‡yunß¾Di–N¦bw+uÝ:º×bµaø±¦gƒG7¥h²Áíj9upãnpc^·¬Fi«7Å¥Y]b#jÚ‘:±ñ›Ì«f¥“ºg£®çˆï×yˆ´9̐yi]¬ˆ©ÝF:n#åû°‹³ㆴÓò’c¸þ®0áP\0KÏ™‰¬æ¥Õ”§äw¹`% å*LÖ­ŽdœªÑéoØçL(.ÿ峈¶ß29Š@þ?
+¢O{ž+FVÌ]ÌŸßÃä‡PºCÃn
+endstream
+endobj
+7 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 97/Contents 8 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+8 0 obj<</Length 1363/Filter/FlateDecode>>stream
+H‰¬WÛnÛF} @aµözo\’NÆ±&1Ñ—ª´´’ÙR¤BR‰Sèã;KRWïR"À0W\ræÌìá™™Ëë¢J¦ñ¸‚7oÞ¾}{
+³ƒ—¿?ຼ—QDA4ÅÝhøïþƒ¨FÍõ?s«
+qZæP=iø§ùæùd™êÑÐ…Á³cxéÞÇãñªÃب°älïTUÿà<NDPۍ«ªH—•.w4QÂ9H|—ˆ–MÛh|«ÓWžÚuuïÆi^.íJQpjŠŸa…
+Œ÷§4l¡ÁèlØ‚s¹`½£gŠ0iüÛ¢Gy2
+;‡‰žZão-`Ÿu:š_ešW£á/çnPüú(Ô'4`ž
+þÅÅlõ1›¬n1Ù«‡óTÏWÆÅê³N¦ßGÃ_w
+Å	•ÜEëŸlëÉqÒžŸðÈèÕ!±±Ë_¯·j4õ$Zs»Š9hÚŠº›÷-uQÂ-Ù-©gE¾Ì&¦^ÇÙdÿ¦iÝ„çvÉêJ#ê¨äât©ævêŠõQ(é’êöº%|ožs»b½
+•Žôo8x}„ö;Û
+âÑ«n-çvYì8,„„K¹9¬Xïè»æ)aÇ»YßOë6MÄŽ‘q¯iW‘êOy‘†ÿ˦L?õ¢‚iÏõSÞnê/£á•ˆ]ݺҧ8¡Ê;]×yï¦Lz7Õ¡®ÿ8®g3檠Ò¼TrCÓ‘[ú½º{^«ûT?×Êúµœ·¿;.ì
+y¬þJTß PþÉÚ.ì²ç`9ŠpÀýî!¯cÊãŽ)O„ŠÔÒrÖTl§m»Zq¬ÂÕ,s©ð9Qq¨ív
+N;ãw§)”ËÇ4ÎfËx¦Ë+<~sÚîPt6lØÊ„Aw:•3¦u´§SpÒ´•ù˜Å×Ä·¯Þú„ßT@˜jûžqžUú¹‚RgeR%_õk\jLc™Cõ¤áC^Nw_–qšTßë
+m¾˜ç“eªË޼ž<9
+Ï´d
+õ'$ŒE?‘2ówe3:ž}Kª'äÉu•Ï	!./²ç¸Ž
+î‘§ËÆ:¬ jF=çH»x\ÔÑxºsílÓ{#há‘Ò|yÑäÐóÃ"ζÎÓ[W&iH|Ü®ÇUU$ËJ—»>šÇ|쉱I
+Þ-‹Ä™È>ͧHe÷ÑôÔXȈPßÙ²[y÷ÓýÍíut]sÏQ³äЮàX€b¨Ž­_Ãúr›±ÿ
+endstream
+endobj
+9 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 98/Contents 10 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+10 0 obj<</Length 1738/Filter/FlateDecode>>stream
+H‰´—KsÛ6ÇïšÑwÀ©cµ6L¼L&c§­;“¦ÓèVö@[”£ŽŽ$'mG¾’ H	àCqt(ŠÚþ»ûÛÅåÕz;›&÷[ôòå«Won®Ñ B‚fhpùó¸ÞÞŒ—ãq„Oá×ñ=‚·/ð†ÆD"ûùŸ½µF„Âgd?˜DLc%Ñx18C£ñßα@Ž"Æ“Á™°7ߎo߁Ïˏɖpùîúö,KÉ=“Â3ü5RÖ=1ØèÜSvÎS˜ñÌÛõj¹Lï·³ÏiÕCöÃT"#°Ðˆ`CÑ:L|¿oŸ[ˆµTqj{ú½4JëFin”ÀŽ
+Á²+»DjUj2ÅÂÚˆl‘¬\dv¥(’†cI3«·‹Çù,ÝXÛðgVÙÃDÙÅØÐ ph¸w'Ö=áÖŒrÞ³i$U„¥ŽHæ?Ùn׳»§m¾ç"{Lj,(âðoÌŠÀìw-¼nœ	Ywö½¾Ÿ¯6Oëô½žÌÖ6)VK¸^$Ût=Kæ(>C?د7îW”,'ٝëüŸh¶Dñpºš¯Ðwèé1…#ýÊxE±Ñb°eq‰šSGõRH
+Š…´…²ü	f/˜!Qù	Û™$Û$ßÎdõ%ßðÇÕz	·^ Ñ_ã_}«Ð]ô/÷ÅE@áÕlò㹕úcšLÎÑÝjò/¨¸³wìõyvß݉Ϯ¶«\ÿñ4Oï’M
+—W°Âx¸Cï×ñèe¿ÃãáH˜þ‘`sNXc$HÔ7÷ãT`¦IŽBЙ>!xN–'d偷ßÒ+’ÝB„.&¨pcãPü1{ Ð¯ú
+mštˆ¼ÍºH[)-²Î¼ $•¤ñÃ1 ¦0ÓˆŠRÌdºÏgøRfreãaMÛªœÉÔÉ9þ~pÖž{„uM>MhHÍhsÚõFn¡ ÐHª+JÕ3ï”ijeX϶½H¥~N-—j
+jù¹ÞTªð¦yK¿%·jäRš)§Y‘M駯¨Ô«x¸ìí§§d^«¸SŠÖ(W ø“°#%oÊöv¡ˆÄ2â¡N*¼\¨_ çL§–{æ0·šJ±s
+0¶¾؃3ʱI1åR¸>ÑeýiºNi-0¡†Eý@§z™;{0bk©çølT4ÆæþHŒlM:8pªò1ú±'ÉÐq–å·BÂû±ºßùñ¦™À‘T¼:ïºßÜKœÈ\p*᥊|µÝå){»Ül“å}ú~ºûðtw?O6{9{X&[ôw¶–\)ÙJ*)$†M¹Ð4Ü%€@F4¦ûZ‹ÿ¬4¬¥„­	#ÖšUFºÌm<j‰ócòÈæjªeY­†ýèò£„t•Ô¦%,
+XŸ‘“`%7²Y•GNpÚ§Êt•*^ü`k 	„riÄ1BC	sâÈ€<+ã:;ÂyÍÐNý0;p>Á¹€xÂyQDĵܐQ?BF‹ÔDÅ4è=êd×íâq>K7ù`:ûœÌÓå¾ü´Z'ó¹½ûÏl³Ý .2?mBë"pnd‘z¶uçÞ…JûuA*EŠ k÷¦¨1˜ÂÚŒö™˜ ¨8D54ÿЉ‰êLNºÚÀçIW߁êã§
+J0³`Ã(ë\åüÄ	‰®´¢ò™ªœûaSw®¨õM`ªcXjœo÷
+×;ï‘roÈJ0Z³./#:Y<l/ÞKX'
+•qíU'*•ê-%cz¯^¸ZE'®”–wBñ6®ˆ>“ã$mD€ðC¥¡Û \9B†ÛØP‚
+endstream
+endobj
+11 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 99/Contents 12 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+12 0 obj<</Length 1545/Filter/FlateDecode>>stream
+H‰¼W]oÛ6}7àÿÀ§!ņߤТëGÒ­²«ßæ=(±ìjp¬T’×uèß¥,˲CR¦Í0¬/ë^žsÉÃs¯^—u¾HïkôâÅË—o®ß¢AËE9]ýøΫћéèj:%ˆ¢éžNïü|4­%öø½U"ÊàHì+Ä
+Ö
+MFèÙôÏ‘X¢K‚	‘h:]({óf:º¹…œW¿Bþ«Û·ï¯áõvÛ´´MïQaskœ˜&KsB‰AZ$˜6‰fϐ'*uFå8¡0اQa°„¡!± |Ã~<ñ™3þaT®lP4'pIÔ.¨'$?ÉzD$vÈ”ï¢oÏ4—ÐçwÅü«
+oò^ånjdàË+œPN¦›¼0„¶ÎÍ”Zi
+kñذ¡rõþœ¯Ñ<­ÓU±Dß¡yñeÒõ}*Ê5Üš y^uçÛíås4»x]èz
+÷¿ÍÆèCé/¾tO©§ÃãP&€GÙ¹»+»'ªŠž¨J&X“¶ð€}-[øÇ€
+PÇ• XÚôwˆ}ÉJº£E™.öE†O
+[ÈéÂBþcú³k„It!9Ã’QÄMã$§‹Í8Ššð*<šºµ+„š
+,£aÔnÉDM$æ‚I/ê¶¼Ùg7â›Ï›tBËcÑÊDaf˜	£u«ÚZi4¦Š‰
+ãOª¶O¾Ó»E™>dGŒµ3dGÜûuU§ëûìƒÅùqsw¿J«j{‘/×i½)gã̳†à·Ù{Ð%Å”Ã½]Qu²ŠvT’&Œ«0UçI©)5Š'ÞÙ¶(”äýÃã*ϪíÉÿJWÙº†‹wE™®Vöîßy5×
+­Àh•• ²†ä„Å;	
+«…Øï—ébí<ð0wL´<xÆ-»dWÞdYœì64€ä*&;ËÔpàÓ×SçÁlÜàoÅ$ÄC´ d©dxÓeq‚ly ÆÀ…9ža*&ÄlÜ[§W‡7ZuÞØQ9­þq0M-¿	ÖÌÉ$¼á1ío¨§}ŒbÑìuŸ²tîhüéÜŠìxõ<±iØÿ÷IÏ0é9Ì	:hžºÍ@Y£et
+t	ü<sÉu‚yÛ#ºÍeç,·®Úé4ÛÂ#ô<Zá¸&˜³6‚Ÿg,¹¢˜©@á²
+Cn’G‹—32Ð1ðóÜ$Sèܝ%²2‚íö8˜˜ö€Ç¹½.6“°ºã
+óV«Ëm×8…5Ðð8»ÖèQ8!œþÖ¶GE`âÑrÅ@Bà"H…8O®H¡6\{Ë>Ï«#%nvé@­E´:1ÐLÍðÅÛ/¢§T¯‹):Ñ=ߏÛ¡E´„ŠbED¸Eñþ,(–¢õ·ÿ»Ñ:Ç@n…‘aï%â»ZúÉÕž‡Ó|è
+°LU‚“®ç±U›»Uº^nÒeVY¦Q‘ϘÀÉ]1ÿ
+´ý¶Yewi•ÍžÙ›ÖÁÜBdÏ
+†Þ?}‰©Ûû·T›&!K0í
+Ø~vŽÙº1wuúoíçœÃÕCÛªíËÓùÑ8)ZŽ„ƒc@°¦ž´ÌF‹ÑÕÇÇt½‡Ñé*wN/2´¶L´cLëºÌï6uVŒaŸæ(øÏ6}B·Be“ê0Ûsôê~UT›2³Sé{ôê!}¼ÎËì¾Îè)ìåÛö¹m%ìõm
+[yK³·lfãGÿJ••õ¬ÔD`©ªôè`€e#`ã'ÔÝ>5è6¨.Ž6ényÙo]”U1Ù
+ç¸çkYòQ÷`¥_âj?ÿ`
+endstream
+endobj
+13 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 100/Contents 14 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+14 0 obj<</Length 1918/Filter/FlateDecode>>stream
+H‰¼—YoÛFÇßè;ìS ¥özo.ƒ Ía·MÔE­·ª´L;*dÉ%©&(ôá;»<tpwI6FC<,ïÌÎìüæ?ï²byŸ,
+ôúõ›7ï/? A#Š–htñã
+Üç£÷³ÑÅlFE³{øílàã| YŽ(1×Ì«QWb.\!®q¤Ðìq4AÓÙŸ#!°Dç"Ñìn4‰ÌË«Ùèêؼøì_|úðñþ¼ò£4K+³ðwTÛ޵µbo(Ñ(1¦ÖÐr>o>o²õjóð
+Í'h³¼ûþÌÜÀO±ÉòÍYy™OÑμû©H³Ç³ò‚àeùãñŒº=ó9.Â÷p¬È†ï•¸%ªµÝô¯£
+Ï'ŽíÎ'åFwèê¯m²šOÍ7áÕ||øÒüDŠ£8f$FAeX+8fUî³ä1=
+…Ç”tšr kB¥50÷z®z.§b#Au´?–žu£ër‰ã8VHi‰•f¶
+ßúœb¦x‰Ñ@Ä<qâ£Z™1ÌWA4Q70|lj2A9¦‚Çîš4ÀÚ
+ ‰õBSãÀR¢žË-¯Wn>9B¬ŒtÝþºÁsz¤¢²ãIàÖÁ6@©4+¬TÕö½ëÕ+õâ€2(g݈–Õ*èEÀSáÒT%ÈʁÉ!U	Ü“"Jé~°!Ì‘€BÑ>ý @€Ð*°íÞ0²‹	,XX/ÝS—›
+‰(ÂLT\¬×‹3u}	¥1՝Xà^‘ÓêæVas$$Ì—¬ƒ
+ü„6lO³Ïèžzñò.‚®Îb\ÆÀ‚Yþ’8Ä0…ïÁíݨ]« ]„™SàXH_pá­‚u¬J׈éÓÖ5{gnš&²Jl{	zõàû€¶»¤HŒÀyî6_ÖVçlŸ ÚÑÝ2¯†43­šH”G{¹dâñAGnÓ$Ò¶e'%½Û,?ØüŠ–5]·‘z”Eºó
+1:VHUqÚ©gî
+=A‰lû
+ÅXHp¸uÇÄ/µö1iæšLà'†–ºIl}jcðyÓ…ò…á²½)‡©êe nÚX8fëôwÿ)1‰„ЉM³ÕЬÝä?I«¶;𔟓zÎì<(ÂÍNÏAš´+.‡+zÀ çÐüi¸pŸ%éÉ–ª“_oìã:/’õ"½¾‡‡›ííb•äyù°|X'Å6›Ó¦yá!z‹?³}&L#ÃÛ(ûÌö)Ru$ÏÔ7¸/ÏÇý…º„P¢ )w´9¡Š_m €™æ¬ë`Lù5pÅÄdwí »*»}(vevW_çc†]wI¸Ù	ݘš9BÂ4H
+ãNÕ}AÑþÞ/<½ŸÁh
+«\ú·í*½MòÔ!ÇÁˆg¦g)ƒ#7“â6“HéŹÍMÜÞŸq‚èÚ¥%ž§çÑ$|9ŽîÍS²n¼nýœŒÄ‰IQdKcév[¤ù‘±£`mâ
+øÂ¨À°Ó·<Ý[òá瘦
+GÌ}*ª
+•½*ή&_®ÌCOãJÈöˆÞ(ºIÜÞœUÍgý›.d¿žR!«Ùãv•:—ÏJóéËäÓX©¢‚4–]43ªc$eÓkK³¦AO«àøöäÕ£N“deÿ[Bö:É$f>öoC;·aÂg¦W~"
+Ò¦î–ÍŒäZÛ#S{%I±FA„ô³g[Êd·-É›þß#;ȝ—ZÇ5Ìa½Œ£Ü(¥EˆFg„Ó¢ºäl(-\6ºÀ›–Õ£¼*Õe”™þÏÎßž¥²ˆæãN¾)7—CÙ¢„›EúJ
+§U	áQF}7ËZsîJ}{¼éÊozšvÀÖŒ—Á‘֝ÕÌ6³’y?cíæãýŒµ«'¬tgGÐ9ÅpÔÑìr49©7¬ƒ)
+H¬`µvA´µ4S	 ™$æ"a)sèšÎ|‰‹Ü`mç˜*µˆÃ9ë9çTÃÞKèc'9øW€
+endstream
+endobj
+15 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 101/Contents 16 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 145 0 R/TT3 2253 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+16 0 obj<</Length 1747/Filter/FlateDecode>>stream
+H‰¬—ßoÛ6Çß
+øàS‘´
+Ãߢ‚¢K›¤[dY¿Í{PlÙÕ`Ë©$/Ë ?~GI¶åX¤dubQ–u¼ûòøáÝù§$‹fÁ$C>|üøùú
+
+š(ŠÐàü秃ϣÁùhDE£<M|<Ã¥ˆsý×|• ÊàJÌ…+Ä5ö-'ètô×@,ÑÁ„H4šN´ùòf4¸¹ƒ9χùÏï®n¯áõʏrZZNëa_¶‹X÷„éÎzƒ!ÚhÈ8@…	‚bæif"i0?„ûœ óÅè”Â'³Õb5¿Wwoªk̪èôÏѯM±f‡= ”"’RÀñ	ZEÓŸÞ#ÌVÉr½òOÙj™Чù}’ÿÎóÛåÓ"
+Óüæû:ú;X„q–Y%Áb‘ßü¥Yñ`<h|úþmªñŽò3Š}FürlÆD£1Ž}
+)Kph–2,‹Ù,,¼ÆÊ׊ܡ¼X:V©VŒÌ›„áJ­b½6/ÓZÚr,}n2ujÏy”˨àƒÍF¿IÝoß¼\æÒé™wrp±fÚwˆïÒ˜”iÌ7•#!å1L5)·¤È¾Ž¤L~ͽF)ž‚x;¹×²‡^å-ÑH	™¨æ²,‰×Y˜Ö§(¦0\¼9JÂÁ¬³î„TªýÉÐs”}ƒmúu&/h/^.Ðåd±J×Ih6Î;t¹ž®£$œdÑ*~_Ü^UσxZÜßÙx&ì0Uliô¦è¦@0Š)/	¶~²o#ß¶×’^ÁV§Œxnš5sѱ&C8R°Q‰*‚ˆ¦A”1MWÏ Á·U›{ÿ4J«ÛT#N”#ƒsá×9ºOÜ(¡»¼…}Tnr—¶JˆðU-âp^ɱ/:¸
+>€´-
+TšµEÝÓÖ¨¥p×¢fÇGÌÚ¢næ¦3jOb¯
+u›¨-{Ò~0ÙÙñ`“€a.¸›ñ¬'Ø$P“i±[ë–˜ɤk{¡‡6'{ðp̘póõä›ð¦JxÑÛsÝÿ6åa£;–ÿ¸qç©–˜njDd-šYOä	*!ùFˆY,Ã=5l6³Ë6
+Õײ¥1)$Îoã4âIx?Ë֏“E¦fÍã ƒªk×¾Œ‡ó’/ïÂfA¢K@­Ï¤û¨a–µê¨ÕJmš¢h´ŠÍ»ô·;Û
+·
+l²´MdS(¼uHÜL:? C€#
+KåytØ[а69 T½—À†Öyš	e³؃=Âë
+ÿ@—Œ(rØ¥q3ÓsÀ'¯
+&‡Ä=ë1®<Ì”æ¯ÓØ)s3l3HѪ£Ì]ò8¿·'¢Uja©ÕšU>¦B»I,^1ˆ—)ßX+GZù
+vI	ûÄX†7Y-0ŠÔ¾0œ¾žùá)ˆw“[Š%{ºÀñ/7!Y–Dë,Lë3”?âÐÔAEæ(	³½›ój.8Âks¡ç(û‰ùu&/h/^.Ðåd±Jáœ6<|‡.—ÁÓu”„“,ZÅï‹Û«êy
+GЛBž3¨M G<£˜¥Œjë'GJuî&!¥˜ðÌb)wô,ª×p¶³o«¢š®žA…ªº*˜Fi·fc<ÜVžîRGtî*̇“’¶ì†žübŒÀ	´Ó!ç•G4VPc·Ä{|;É(…³«%jÙ³d„ÁÑEeÚÇGÝÚNÊãK.êsÌ5u—\²gÉEµ€“ÕK®Æåîùv՝E§lƤ㴦ž„󔉖ãZöl*)49°øµ¦²¥¥<Œ¾K+#;snç´2Tp÷Â÷„̘h^/Rºí¸tïµcÐÆÝˆ—=ÑF›¾âþn­kA7‡]t·‡p«GùnóóxÈQ ¯OZV]ÕYRà¦Â-©²©URধš¤ö
+d•t»œQÖ9œ„zLºutýVÚ‚*%·çÆ,	–áž¶ù:Un›Y€ŠH]Uüª–5!l~§YOÂûYþ°~œ,‚45ÃhTp»Î`<œç]Ð¥ŽG0U
+EÝ‚÷DPQh%öZØ}•ÿ`
+endstream
+endobj
+17 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 102/Contents 18 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+18 0 obj<</Length 1339/Filter/FlateDecode>>stream
+H‰´—]oÛ6†ï
+ä?ðjHІæ·Ä è–6é–iTwu/[N´ÙR*)M7èÇïÐ’-Ï!))ÛÄ–c›<ïË£çœ3=/ªtÏ+ôæÍÛ·ï.Þ£	AwŠR4™þü	®ËÉ»h2"‚(Š–ði4GðôO(*%æõ/ó¯Q¯Ä¼p…xˆ…¢õäD¿O„ÀLˆDÑbr¬Í?/£Éå5ì9ý
+öŸ^¿¿º€Ÿ·q4ÛÒv[øfï
+iôL>—Xk­P@•ù†qÖ©[Ž÷–p*·ÞnŒM¾º­U­UZà@Ðð?JTóA¼‚<…„u›¼È\J¬BF{Ì
+G›«…cò0q}þê¡þª
+hZ'Íâðc¾§’c!©©
+·Ç‰ö³ãyžUÉ÷
+•IV¦Uú-ñœ.¶³
+Ã
+{µÇ%r<Lˆ4•GøDö&èì?Ò1ÈÀ8(Z~ä°qÈ1ËÉd«Øö–4e×*ô²­zn‘ƒ¹¥ÙP „Õӏ£S·8 ‡|¿#öa§KYGvö87'˜3ÞÂǹæÀF¦]SRÌ”à[A÷ù¾ž_ª¤p€ÆÑÿæL`˜¡¼çÅÇѦ[œsL…ÐÏäµ)鸟™Ž€Æ°F0I(™_â8Öt©Ä„Én(âur¨sÓ•nÄÖWYYÅÙ<¹YÖŸo竸,Íez—ÅÕc‘4½ëì¨é^{m9U
+iOÏÏGOT@§‰¢ÿ«:F>>Õã©Ä”¡PþÆ™¿J„*8w¬º‡$FûìÈ¥Zž3ç@M¥¶âÝg>®oêäéäïF½œú.ãaâu„)ìŒóéÈJôÈ/d€B!懧ïp`ä@êŒv0
+-Tÿ8*FszžfŒM
+•å¾Ó>Ï޵VÐüiÝ3Ô‰Àí§4kŸ’fžžY'Æ8ܨÛÖ¸yœœ†Œ£— pLi;‰ÙÓb&Q8€ïüK;ÈÄ{í¤xèÐk§$n;GzRÈÁvéy‘É܈²ægÈžü”£¡³¹ŸEh1t™Oqa©ÛxþG{¹uù6]lCõrEz¸b
+endstream
+endobj
+19 0 obj<</CropBox[0 0 612 792]/Parent 418 0 R/StructParents 103/Contents 20 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 145 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+20 0 obj<</Length 332/Filter/FlateDecode>>stream
+H‰¬KKÃ@…÷ó+î²]8™›y%PJíqQœ]ë"´©DÒIª"þx螺ZLÁÍÜ;¯ó{‚ë¢Ê6ɪ‚Á`8O'À<2„XpsO}ÉÆŽÎ	@pºu+ å…p% ðõÍ€!Uá‹4 #n
+¸-ëAß=1¥àJp!4¸5ë¡ðg3ÇfsBw„æ“Û)ýnlœ¨ØP飈<%£¥îlV…<kÒh›&ù¾<©×'ð‹mÃQÇÞéºñÔÂÇK¾<óQy
+û‰¯$S#ßzüb¨²ý.É`Ùƒã.{N‹2ÉáÒ׬¬Ò]•ÑnÙíðzn²Ð¤[w°—ç€[ôdw˜²#Lc#®NÓŒVIÒëIRý9I£×ê_’ÔÝI^r¥¦QbFi®0¶?æiZU;¥áÒ|—û`
+endstream
+endobj
+21 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 104/Contents 22 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+22 0 obj<</Length 1508/Filter/FlateDecode>>stream
+H‰¬W]oÛ6}7ÿ@`Ào	ÃOQêŠvi’­P X„½Ô{P%õæX®%¯éà¿CI–í”W¶·±HÉÖ¹äý8÷ðì|^ï²›Š=þâÅ«Ë6ì~ Ù˜
+Î~¾Æ¼¼Jgi*˜dé¾Mo.ŸqaiɤðãßþÑœI…QøAGLÇÜE,}³aúÇÀv*¸–¥·ƒc)ý³«tpõ&ÏÞÁüÙÛ‹7—x»]FcU6V%Þl±ëàqÜÄküëz–M;8¹
+§Z¸„'qWÏ<œjÖzõ8›oÂÕ_Iž(f4×xßOçùàî‰!µ—!—xŒ•-Fø@} x’(çÝò†Ô\¶¨ø#€Mp‘>*²ÆÕÝjë™S,Š5Wñ–gð¢ÞȻ·ÿ¶76¸§Ú´ñ0neºžH³ÈÂY¦6UÕ|üaQå妁æGŽË˜!×m\Öû‚FŸ˜²Ñ¦©gìÇêË,§<èÂÛî
+	독gMŸ¤C4L‚ [tToAKGR­¢¸ÖjÇ•Ã‹Y€kis³°«Ûâ½)¦UþX±2Ÿ–ãjüWþ¦9Ë&eÁª9;¯Š‡öºðÜ’!c¯>-²É¸úŠÛÅ$/{<æ”0a2‹Rú¹R…¥o¯©,ã–'ÙçqõdéËê2¹&ÒX˜Aˆõd±T-'’aö@HŸTOqG‚Ñ •E´J;\“y'‘wJ*n*¾¤äNÙÝ-^…+¾70àûdG‹7_ÎP-^íÅèñkShñ‹ù˜ô`l£‚	ZF¼3a	Ñ@øÅÃ
+Ë]›¯ï{ª)º¹›M&¬\|˜dÓûEvŸ—>Ù7ï..ÏÓs߆¿§¿—Óã´OjqÛ”ŽoAüØ^âx´õé‚úUaÚ*o .º–u˜8¨ÂóGh~­ÂK&H‚°Ö†[A¸%¨†u½ÏOêÖË9'«Ã¤BS¸QYn̲ÒaÉ@ÆÈŽ
+Ê'ÿM™ê½ÄDg\ ‘î–¦z/êˆkîtÈÖ˜«¯¤i'F){A:qÂ妥PÃŒ²ª &@üJ€®´çÊséuç²QKhÎe­8—U>Xú¼kÕf£,·÷;:êäw½JÁN%—pizé•ÖK¶¬-5¯†e;ˆj¹º!w6DàU„fÙªÈ÷¾Ižj-âãBÔ{y:|0O²[NB¡ô£ÓĦ¿˜Ãhf½j‹µ^×âf5nלd÷e® S<÷!
+³™S¤û*EÅ5šË—PíhïæPÙ³Ç$j{ÀŠòýæjš'L…«o´ew±¼!4Y଄›¸¥ÃÿNðfFkì
+EhשĚŸáêÎ#/ù1xjÃàí³øŒŽÈ…'«>—C²ë¨å[÷@ñã·)®ëãc¸Ž7½±»œZ`獨…Ú2“X®jÔb=ór]Z	uÖžbIЩÌãp»hq»r)'=åbE¼ÊkyÓ¿ð¥‡à°)½•K9ÏeuPÊÉ®ŒÓg§ve/=Ô!âŒE²Ÿí^òg™€m…ì?4Ø}ˆBGMWu¾……
+ñ
+endstream
+endobj
+23 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 105/Contents 24 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+24 0 obj<</Length 301/Filter/FlateDecode>>stream
+H‰”MK1†ïùsÜÌÎäcÒ•R´ˆ‡‚`nÖÃÒve¥¶Ò®ˆâ7ÙmÁânÑËÌË„<O&éõ®*‹|QÁ`0Ž&cO‚ ‘Þ܇¼#/Rï|NýByücÿŒ£
+cÓº/ƒ	ôü³0.P"ZðK‘Š³©ÓYP¦wAŸÎÆ·“pûðŒÆJk¸H6ªIˬßXêä8£d¦jÓU¹0‚Õ°‰`wäց0 ©cä>l_«r»É׏0O–«"[W—°ÙÂ|¬öó^—Tµnc¤bÒ¿¥ÚÊ,Ë8³R‡Ô|^[·/Ô²‹Ñ‘k€’ŽŽÜ¬iÅvYKfTg‰ö/Dt‘¨€­‘ŒÈg‰ü/¢±ÒlÙú[€
+endstream
+endobj
+25 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 106/Contents 26 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 145 0 R/TT2 2253 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+26 0 obj<</Length 485/Filter/FlateDecode>>stream
+H‰”RKo›@¾#å?Ì©²¥tÙ7PE‘ÛjsˆŨ'.×­
+¦Š[õÇwvÁ`Ë&j.»ãó½fýÏu³.Ò¬»»ûû‡ù<
++Á<ÿËë½÷{~S`83Àãˆ÷À¨½ÿØV
+ŒãMí%4ˆâ­7iüÓ>RB©‚8÷&LØÞ"öOHé?#½ÿ4{œãםŒ–•µ¬‰Bí
+dD„Ð{¤å.-{0vÆ;¨‚JëƒEGܶ²À<$<tÀs³ÏN±ÝT4‡ÖÀHÄ¡6^q*ŸŸ3Š“Ðòvù¸ÊÂ1Eä5 µÀ´C½Wt¨ˆj“¯Ö¹Å‚tJFÉäuõ–Ìåu¾FCКÍ׺„<mÒMµ‚W¯å-”fÕµ°N‹ã8-sûs˜~‚dØýó4¹iR,¾¥5žËŸÕÆl±x1ëâw2S®®*Ç­”—Ò…"Q„;ÔŠcTT´+×ïE
+¢(ÕÇ`¾WuÙók‡^Í!3»»]ÿL“%Ó³.CHnº°µ8ììäyc0žJ0þ¯h#Þ|Žáû£àŠˆñ!ŠÓ0œåYU–û·Þ†¿6¦Þ¾a5ú_«ýê™&‚3ui÷Ÿ
+endstream
+endobj
+27 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 107/Contents 28 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 145 0 R/TT2 2253 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+28 0 obj<</Length 1312/Filter/FlateDecode>>stream
+H‰¬—]OG†ïý+æÒ–`˜s滊R5¥©)*VoJ/¬`-؉¡JRåÇ÷Ý]¯m`fv@Â;6ø=3ç9gŽ~Yß]-fŸîÄ«W¯_¿y{,FJ\ŒH\‰ÑÑ»S¬oGo¦££éT	Óþ:ý$ðò/bz+HUÏÿªÖ‚OU=´:HïÄôf4“éß#cÄ¡’JY1=ÉTŸLG'`òè#Ì}8~ÿßÞ¸ÑX¥Æ*á›ízyo¼ô¼Óßj~ž-·rt_Ž7AÀeªH(ÊázU	sãõÉ—g×Wwß÷Åë?“Œ,¼–:ˆz¹žÌrÚlÊ"©X)µVE&/ú¾¢Îç…´¤²–Ij±Œ‘}íbBU‘\å¬ÒÍ	Ûl¶©ÖÕÛÐë¶Ïy¤ÐìòSvI—ëE:ã³3¡ÚgªÔÿ„ÓõÏäc4HÍ_ÓßÏêsà[ÏêáÃýo¯–ârµ^^¯.æ_²Ñû¤”‡òˆf“гìV…¤&²§ "Ì©s”!(¿	ýl¼º:?›ü| &:’‚½óùÅz>ÇGM"–cÒ²*U8#mº'‡S×—·b}y{6?²ÖH
+JØRmü}S‘¾_žÃÎÛÙÝÓV×ó,þ˜­ñúûüjñÏ“oŸ«·¯çßÄÙä ï
+òJ±Dljoûó—²gŒxˆG6jéÅ{A='ž†LN<i7.ˆ¦i£U·UöVZî
+ëœ4(2È(Í›,/¶ž[/ÒÜBc±j1Ã	XÎíÛ¬Ù4Bй¦´Ñ¶œ«4Fr’:JèIEÉ:3¤•d6ÔÁ=Nó |Ý™œ1Ï
+
+,ò8—Ï¢‚éM0ÈyÚ‚us·êS–?Ä»ù]C†LÞ{N0Є˧ٿP
+ó!ë @0Ød-ùþ€0ƒ
+ÂL]Ÿ£@³!ŒãÁíÍfy†ý®G¢ŽÈö¹h[íÁ@êœìCbñ”›BæŒÛ4Kt"~úÖEÌôÞ(·+ê\àiLS‹©Þµë/«&µ3D½œ-Ú·Y‹ý¨€ßjÔgÚ6˜—»Ù48:“Š®mÕ&ðBJ‡Þ>ð‹–mÌ&Ô~#¼í”J[a¼&û"3ŸËÌ$…¤¡£—‡"z\zò(¦W5ÊM9?½Psi\Õ§ ¥HÚŽ`u’³	¤zŒ@¥þ`
+endstream
+endobj
+29 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 108/Contents 30 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+30 0 obj<</Length 578/Filter/FlateDecode>>stream
+H‰œ”]OÛ0†ïó+Îe{ëØqBmŘ„„F´à"¢dK–f ~üŽ“t´`‡B/lǵßóžÇGgò¹nò,½nàààððh6…€ÂMÀ ‡`r|ŽëUp”“$¡À Éðßäpø‹$+`ÔΏv«Æq¦v
+„&‘‚dŒ`œüÂö(¡TB²FLÚ½yÌO1ääÃON§'3¼ÝÛ袲>*^¤‘
+͉u¥]E¢“˜·‘êÛx„Ù¶0ï„ñfÌ;aŒÑÛoW˜AÄ´
+ѦÐÊZ,´§£µ‹vÁ¨Þ<œ—p[ÕeQݘ_>;Üig[VHt£c‚TXñ¤¹'bFÿÏ—#8)ð³´Iq:ÿYf‰‹ïiã7“g8ÏïïìçYaîárã«ä«Ë—púBÔ_õUâÏ)ÑŠöÏmž´C§üW3¢)×d³ªãšbÎeš­?}åœÛ0š“(d]}©ÛúQ	¢4“k¢ñèý<UHg•úf­ê]JI$j¯N«ÒïKcêå
+endstream
+endobj
+31 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 109/Contents 32 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+32 0 obj<</Length 887/Filter/FlateDecode>>stream
+H‰ÄWMOÛ@½[â?ì‘PºÙoïVˆª|”r at EÕ“/ip -ÄÔqUµÊïìB³¶Ã¥Qd¯œÉ›Ù÷fgÆÃU=›Ž'5988<<:9&	#×	'3’ÏF°^$GY2Ì2F8ɦðk6!pù
+’-gþþ×?ªpgþ&
+‘–¦†dwÉ.dߥÈ[FÓ$»Jv¹ñÏN³äô\G÷ã9D0¼8>?€‡HǼqþ̸wÏu¶ñVà,•)•*xûXïŠuôð³¤Âm¨Q„S'HU$Óg~9ê—að@kNÉÆv.W˜bS4˜öò@UXù…¢ºJ¢áq¹Š,¬RAŒSÔˆ€5*jæòÁœJ©½XWqG
+YPçDÈx½I5Ö«ã7€½\\yûô1°àÌnšÏædê%»)oÊj~[^?ß‘|¾Çåœ,ÉèGy[ÜÁâ븂ë—b6ý÷OuQù§gE퍊:ßÉ{$Ķ¥Ñm±ØŽkUÃàÉâsTHDÉ(ot9Ÿ/êñ|R|žnÊ¢Q4•¥¯ˆÊ·hÝ•(šEC{é@»Ø`Íñ	rÐ{Ù¨½­—AéeÐy	*/Acw¿Í0ßY7mIO†ÍP¥R”k)3,mM
+Ž—®2’Z[jF¿¾MnÇ‹E,+l×Éå|û¼ÐRQ×3)žl·ÉŽA^h Â3õ?R‚ã6ˆg#â)gV¥vv=׿ªÕާ¢K»W”]•B²=Å[3Ž•Ürvµ÷ò*jwñÍùÎûýÅmYïµ°ªãݼ‰£UIªšÙáìyk
+6ÕZuj^A(´w-úúdÜJ躬ʫ¶ÜÃz¬9)¶ªQDÍfa]¦–º†õǐêeŸ:„—×Vê¥Ö~Տú5ãøøÐ#…׿‡|§ÎoZ4l+¤RÃ!^®10˜_¡uÀáu¶9j2¦àÔ¬úZøÄà#õ12‘KƨPóFóYÑ{xÉØxVQ+º€t ”滀ðÁÙ PŽÖ—öˆºj7SøyÆââ¢_®/·ŽZéÚá$>ø`pÆP«mþ*†ÁA§°¾¹¶Â‰Þp‚Áfm\äMì%Œ¸V»4¼ï#G΁3ºJ¼Ý¢s'eö%Ö?
+endstream
+endobj
+33 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 110/Contents 34 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 145 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+34 0 obj<</Length 1465/Filter/FlateDecode>>stream
+H‰¤W]oÛ6}7ÿ@`@aw	ÃoIYÑ5M‚nÃ
+³°=T{Pc9ñf[®,/éà¿KJ–e‡W¶±"XÛ¼_<÷ðÜË뢜ŒÓû’¼yóöíûÛÒcä¡ÇÉ„ô.?a½ì½{—qÌ'ñ¾ï	<žàAâ%á̾ÿµ„x3û’†È†Ä³^Ÿâ¿zJ‘FÓ$õú<°ŸÝŽ»àòò¸¿üxóó-ì®Ã¨¼òÊ+hV¶Ý
+Ì2 Rmí7¶†‹tÞ˜ã^s6Îm&>Ã\QYþS>ÍÚÆÝ×ŒŠhN!MN#AЬ7Þs+ün}ÃÀj9%He$š
+Sΰl»U ˆ	…
+Ð¥RfÅÌZ†­¢Ž ¡”öôF¸gµëYVÛÁt$炨OÞ­ £CƒËÇ™u%wq›0Ý‚³°ýãÉœ<æy1‡Â“WÛuöõ
+‹N{£ƒ0kóÉçOAå“Ux	š·ñZf˜QFCÃÜ~“2â¬y'ý|2J?ž[wùb}“Ï×·i™®‡çÓl¶þ=-Ö¿e“ñ·µ;(’Γþrš—ÉàµÝSd˩ݞœ‘ÁŸñ/¾h¬ð寻ä4d,ªC7ƒ:hÄEè/Hs´E‚Š‹3W÷º6I?-Õ$|n±È¡É`½YC©Ð€#oÀžà eLÈu
+X²­}Sz$œëƒ)jß4E—I~
+ðt¤©ûÀKÄó«G&¡CC55ïB·Ž‹t–Ó¦\žÜ§:¨R–cºû”û	
+«—	©å^½Ü¡o{ôp‹"šœáhä~ªò„¨#*Eu»µCLðÖä~²òÙ†ûËÈ
+Š'2DiwmÊî¢"œtð®l¼({_6z‚<MÊGàÛêÊþ1üµ^.W_¦éüa•>dKJ)?ù } ¤½+iÐ÷Ò¼Õ1“Q­gÈš
+X
+L:aw‚~
+Â:ÉÕ5f']wÖ=uõ”ËîPOÉ=’xOA$*„$
+º‡î·Ø‘ Œ¨–ÍÒbÖŠ¬––§0œÃ_…îF›ï´|éèÛ{££NÈœhg:Ý`ÎÂÏ:€ˆu‚ùÂä¨Ö›ÑHì bRP†ŒŸBÆé|DîžE eGiPM‡Ñ²
+„e8Íþ+Xp’¾ûts{_wÁEùµ`‚W¢ñerð¼á>Ʋ“¸åˆå*¢¦*Ú»Ùd~“#Ô¼òj‹
+à‘b\hZßNØU‡˜eÏ0‡7-Ûv7?“T+¾ê¨Ùˆ¤íðsÿjpôɶbØIû‡5/‚-Ôà{nà<duZ¯W0Vp Õ!Û›¡ÈAãéEø!€$KSã-}î›f8œ5"hµ¢JÄ›>Ü4ØƉR¸Þ0 iÓ¿äÉ­' I_‰þ`
+endstream
+endobj
+35 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 111/Contents 36 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+36 0 obj<</Length 248/Filter/FlateDecode>>stream
+H‰lAkÂ@…ïû+$9¸™I¢Ùb"¥AèÜjEQSZS¢¥Ð_ßÙ(´ÒÀ23Ìì~ïíDE{ª·/ë&“étV•0„aÔ0ÑÝ£ÖG3‰²Õ©¬¡áKä&Ÿ¿}«ǚɧdŒÄÙly7By5iŠ!Y¢dcv¾73_¨d´TùhQÞWúúbã¬ÊgÕÌæ®Cw…³4·üïq/È;àÔÿá™Å: X¹z#¥Ä£Ÿ”=Lr¦ >`ßì›öðÖì0ÀçÇ-Vn–eUHU„ÏòÐç"¾vÿY"«Òe_]•ùãìÈýÿ֏
+endstream
+endobj
+37 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 112/Contents 38 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+38 0 obj<</Length 971/Filter/FlateDecode>>stream
+H‰œW]o›H}Gê¸O+[»Ï7LTu7_ݶRÒ•Ê[Ó㔍)&›jŏïÀÇ3¸NdÁ„ÁçÎ9wî¹ãÙIYe‹ä¦‚ׯ߼9=?ƒ€ÂmÀ ƒ`ö÷'¯‚Ó8˜Å1ñgãÀË^ ^£öþ¿}Tãx§ö&4ˆˆ„âû`Óøß@J8¢„Rñ<˜0cŸ]ÄÁÅ%†œýƒág—gïÏñÛÝ2¶¢öÀ!~¤$¦C†-˜OI¾AbÛH¬[?.2K‚b¢¶á’C.ˆ’
+òU²BÛI|M"-FhŒe,žåî ®x:´@ƒà‘Dø‰(ÜÈJ¥Í	›¢ã¤
+'l­ÖúÙù¢Igú´oåXk‰$¬ž[ð
+×øþºOγ2½©²"‡$Ÿ7OΖÅê±L!Ë!O‹bYÜÂoðøp=õ©9—;€ašv¸[M¥"BSáRµ‡5Ija…&‚Òf·}Æý|$£›{ËgžT	2:¶
+ÙüÏ?ìà)Mî †“ª¸G––è—øƒkIŒº×ä^	—ÔŒVc³daãc,óôvQ¼]¥·°‡/?„/5„q¦ÆùŠƒùRœDÒ^¾ßŠoE™Ûmê ú®JË}I•T†#]$™m\!%Th6
+ÁÑ`pñ;…Ë6FdÛÝ/[†Š‰!&ƒêÜMqm\ŸäóúcYc–ë÷÷Ë,]Õß³ÿ’ešWõÛ¢L–ËúúÕŏlU­ÖÁ“5·½yK\¡£bT!'ßÔ98ôR„ƒÒV(¦à“+|™\Z¬Ï
+¶xÞyâS:=Š&ÉôˆñÉÝ”M¼5ÁÝF7Ú)¥1D;åXn/ïsãO~a¹Ç3ýQbÕ2cÂQu¹Çì|Ö´ÆÆ¢dò
+endstream
+endobj
+39 0 obj<</CropBox[0 0 612 792]/Parent 419 0 R/StructParents 113/Contents 40 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+40 0 obj<</Length 1002/Filter/FlateDecode>>stream
+H‰œW]oÛ6}ÿpŸ†[i~KŠnm’®Ðm@õ6ïA‹eWƒ-%²¼
+…ü.)[–R¶“‰’©{yν<‡™¼«›bž=4ðæÍÛ·ïïn!¢°ˆM~þ‚ãuô>&iJA:Ç_ÓÀË¿xt
+ŒÚû7ûªÆñNíMh	‰5¤«è^¥GRÂkJ(UÎ¢kNí»û4ºÿŒ)'_³W0ù|ûéìVÒ&fmb÷1•6=3Ä$m&7Âd±ˆ‰.Û¯ù¢Ûý(Ç	"€áΣùQRæMJ}é´Á8½„0€ò{’Cò6$C;šÜÈ®K¢FC‰0%L¹5Šnns\¦$š÷)Á/EÑZÙÂ͉¥%‰ÑÆÅxŽFǔ脲ý—ZÂ#,WéxÊ
+cÃèYÓÔÅ_›&_÷S¸i:!ŠƒÄ¯±Xm½¨´7íQ2e†Én ¬Ê¦×ð=ü´ÊïŠ:hŠª„¬œ¹7·Ëj½©s(J˜WËjßÁæqú*Ämìÿ·Ð¶õ‚Â’q:ÞuÉE”v¡'JÓØ†þc¿†ÑÊ|1˚̢²pËl~xscI©ŠÙ?à`ÝÔU¹€-¼kª‚·øÿLñ-Õ\L€Dí;+€ŸÑ— $‘’‰ _«¯U]Ñ~lòú\Æ.ÆË	Óã€ý:s0ÓDpfNΟ\#àÆûýÓ&[žÀ/.ÆOcnΟãghRœ%DâE¬"¥÷ã¥+ƒA$>´ÓºÇ°N߬ë'B4Á`	iÕmõݦp–)ïv°·r¶ý­ÆjòöÓêqYäkØÞO¯ž6Å?Ù2/›-|¨êl¹ÜÞÿW¬›õŽÓ@íê¡TcŒ•Â$ã-åÈ`Ku±qFBu°¥;ØN}²ò§›aÇØÒ:’QÂ1vŒûÁ¨Ç*Îâ`ñ<%C)7íF:.N[›Cile`W×ØÇ…]e®†mà2 È#4¢ÌzªDÆ`±%⁁ü`g»Æ]ü*Êq…<¿¢xⓝñÛÈ£›¨?ý‡q;(L4?_^wDKc,'NqÊk›Z¯êÐOZO~¾xîW0´ôq³ä¡óÝ	p1·>|†Yö½c`£X/V5©…uoQŒBâ‹)Ð÷¿ pý"7J¢KÛAOþñº7
+endstream
+endobj
+41 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 114/Contents 42 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+42 0 obj<</Length 1454/Filter/FlateDecode>>stream
+H‰ÔWÛrÛ6}׌þO%“ÀXÜf2iØmÓ©7Ö[ÕÚ¦TvhÊ&©ô2üø.HêV„̦iꔩ½œƒ=Ø=9ÍËdÝ”äåËW¯^Ÿ½!#F# 	|s…ûbôz::™N2ã§7?~Ã2-0»þi¿Ê	p\™]„&ÂÐ@“éÝhBžLIIž3ʘ"ÓÛÑ„ƒýî|::¿@—'—èþäâÍÛ3üuFã¯
+MmºÞ ñ@†¶Æ7†®î£lcömñ6‚i›„k³ÍÎÚå†rS¾Œóù2¿‹ÊäC¼ë£~KR´¾4ä$Gó¿yçnï.Ç€Ù ¥ç¤á„0§úzgCEò>[Ò`MÚ°aŠM˜õ.àDEUÃêûU_|ße\9å4yPÛ>Yk š7!×fm$ íÛûü3»/'‰Ò”«ë4Ê«h/ÈlB–Éí—ÏpsZq^’Šü¸Šó?p½Ì—e|SΞ<%³']	hgì0¡0©ÃW¡a¢óÀ‡y³
+m¹à炊†Õ6«=G€¥ËCA%Qa@¹$A"!ÅãÞÐm †ì”û~ŠÔ„:Ü”¹ƒ(†´=Zö¯»
+ÓëB¹Ê(].Èä:ÉÖ6ÅÕ=)—d¾Äç½â±¸J#¬[ï×Q“j6&§åò¿#oïîÓ$.p[,yJüÙhrþ°J>DiœÙÒ;ÏÊ(Ií{_/s¬ÖþÚ·Ìy±Ô‚‚îÃRÄRI
+ÔËÁE¾\e·Çà¶FmÚùÃl|ˆ’·´zÁ‘Š2	ÆN‡îyÁ±2h88Á±
+ÆÑèì‚0î!8Z ×pM†þÌÀü! †móÿe™gx&â‡A§¢=³±«vÚb›>ýd‹,ÚÓsÁX0±kן§ß9Sìåžì$j¥6öæîŽ»•םD	Ä‹m‹\‹¹oQ’-t?Ä‹#Êj‹ÛäâÃ]Ø0¡=uÆ
+ºD“R„hsÒºðš;Äz¯æhF>܆‰·D}\zq(Þýp-7¸Íóè.ޯˡ[n»ÜpìM˜j® Ù¤acâ†•jÍIU3RY¨”ª¥¤ÚÒQµdT
+ö?ÑlœVo³¢Œ²›øÝ¼ºZ]ߤQQØm²öµÈ¢ÛUn±÷RÅl'¨ÁGU‡Bû¨¨¡ÖrCÕrݤdѼíPº\ºÕ»Ë6G!ÓÁ.Y[ŽjR6Df·Õ»ü’f㚦ߓ¢ô\äüñ:,P\Œì—a1P†*K`±{ü°üºNšÓüñ«·¯naîÅ
+ÅEë ìÎ-É]&±43¼ß¤pÎ{õŒØx3ž`M“ò>.sl:f<^÷ö=3ž‡Ck"À_Ê&€ÃñŽ{Å08fÂnuìñöÌwOymvSžp+×á”·çí£zÂ-k>ÑäDZ™ôˆ¦Ørm¯OüKƒžkΓâŸÎy­€]Pn“•ºo“íÆRTB.pcܣ̧›óä°þ“sÔ‡ÍÀþ“Cˆ—3èO6çIw;Ù3çqT²A¿ØË}$g€70çŸnÎkŠ
+…‹mØÀ';Dº'M@Ù87ýºEØ‹! j-às›øä0e¥©’«F•P중ŸïÀ'§âØP¨„–>ØÔ@Ž}Sž÷”[v»¼€í¤”øÌ{Ê-ú>¦ŒÄîRsQBí#*P¸j5`ÚSn
+ïðƒ
+R(µù†=õx
+FY1&€C	þK€
+endstream
+endobj
+43 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 115/Contents 44 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R/TT2 2253 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+44 0 obj<</Length 1808/Filter/FlateDecode>>stream
+H‰¼WÛnÛF} ا@JãõÞ¹4‚4;m
+¤nk½…} %Ja!SI5mÁï,o¦dî’rŠúAZÉâÌΙ™3gÎߤy¼—9zùòÕ«·—ïЄ Í„¢Mθs6y»˜œ/Q´XÃK/_á-2D‰yÿÇ|•"Êà˜7®רShq7™¡ù⏉èŒ`B$Z¬&3ÆÌwW‹ÉÕGpyþ¸?ÿøîÃ%<]_£òJk¯ð Ƶ‡}]:)”hä	ÓÒOœ õn»ÛD_P˜¬P®ëå
+:£˜r¸ÀådÌvñêûÁl½KïöÛ°x“ïîŠßöÛè6Ì¢âM²*®ÓâçhS|¸»ßÆQV\}ÙdžÛ(É‹«$ãmV¼ß¥Á4Ün‹«¿â,/n³`þsd	öh‰8’Œ=Ù¡EVY,Á&¾±Kyc¸:yy„6Ùùu¥Óð,ï܆aQ“וÝ5·dKûªò—¨k¢<AY(ÏÚU™¿Ë7÷aÒ§•¥]Ûaž§ñí>²®ƒêG+…<‹9J£Éº‘ìuzäJú]Wèõr»Ëöi„‚ú½¾ï/ã4Zæñ.)+Ñ|ó®þIS¤èÚßÛËD-®Lž9RÊô\¥âÚ]Æ6äLúØ#uB
+…b0QaÔ	µÛ NDb.X‹Smê’ÀŽ@ϽåsLO*ÊzïdIMqØp‘¾ÂL3ݐ™Íº%‘ÚÃT1Ñ"®Ç#®ÿd,$캶§1%ÌsWK?Ïc¢|LDIrŸjLN/˜ùWÄŸY1jšÿ¾ø©j¬1P¦ì‡h$ŒwÆÝ㝑6y€Š)c¼œôBMfó<G4—-l@Îs9KqdÂìKB©ó`ZrVé€O3ð\Ïa\£ØºÐ
+Gs0J)˜Ó
+Qs¾ÐG3úC¨@»„qí†ô‰œ.Ã>NGºÇÜXJNo¢t—;™¾¥Q}D·ˆ|"}K"°Âk ù¼ü
+?æQz×6e-³ËÚ¦Ô>lÇźìÑ=
+¦;É# ªmÇPåeƒXÓwDÆFs~èC¡åÀš2Dù¦JÁè#{ðB0¿b1d”ôœû”ÌÖix j#fåh+w
+àN®T¥ÛLõì“‹d™²âC’åa²Œ®×ÅÍþv¹
+³ÌãMæ°<Z7!ƒ°OšÍ²^(Íþ	ŒPÔtÙ4€3{ï*NÐwT{n}Ç,\<Xù ï(óZS.?V/ýÌl±ÍA€ØÄsƒÐQ2Ža6¨Ö]T<tPÑòqQµK1fêóÑtüpkÐu„h7Üü‰|́h|¡á.[Ââ§Ÿ'mÖaÉÔZþMpïƒiî5âÀ	»…‡]È
+oШÖ׎š³Ð‡åžžㄸg•´(Kü\b߇B=U„²ZEÏÏJ	ݼ(5›t·OV
+
+ցEw©5`Xd¸´ˆÇ­…1EÝ--;ß"’a©©‡È:\æHšØkö±?ž~š
+Œ¹£<Mº´¶¹ÀB1a
+þpOu'ÿpÍt‚`Ye0H	ÓnN£´Ö6U˜N Ô0” ”ËÝ 
+®èGSb{Câa¦¹pG#6¶}¢Œ{ÃÁ×50.ü1E0š›«jSåA
+Ñ"ŒJ&_m>`4Ák8
+endstream
+endobj
+45 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 116/Contents 46 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+46 0 obj<</Length 1596/Filter/FlateDecode>>stream
+H‰´—ÛnÛF†ïøöR¢õžA §u4m£»¸ŒE9,h)¡¤¤-ôð%)Y²g—¤“ÞP”ÌÎþÿÌ·³g/ªu1Ï®ÖäéÓgÏ^¾~EFŒ\8)Èèì§÷𾽜ŽÎ¦SF8™ÎáßéÇ7xéŠp>ÿ
+?U„ødáC"µ†LoFcr:ýk¤™0ʘ&ÓÙh,døí|::Kò°$·Ô«õоxÊ©òÑ|töäwööÕÅkg“oSƒè\…ü,õ®Î¤~áÌA\OyÌ嘼X/oÈ–¼XÌàù®‚ǯù5</n>—E¾‚·ó/›âkVæ‹5|y³¬²²¿þ]¬Ö+ryJ“?ȍïr;Îë~JRSï}Ø.$­˜¼•	‰*ð¨©ÝJ¯¬Q¿Xù²\^ç_H;^dóöëñ€ûà\Âõ
+UãCè{"=gcBÈ·bý	¬þ}“WÿPJÉéŸÓ_°e-º,$ΡmãË:Mã$¶%7hK–‡ØŽk¨\o	ö2ËÖTêcò±Xìß?-«¼Ôµ<+Ví×'Ñýú>ÆAc©6ܵ•úǦÌ?f«<뽚=_¬³¢\íë2Aö0¹µ£š	ž–›GxÓ¥7°P)¡îéÝÊ|]-7‹ÙNã£ÃI—šã¤B´ìI!ø
+úú•×DæÇqéq>ÅDØ——¨Õjaªj˜¢ÌIy+B6ˆÍ˜ÃضA{M™¦K…at*h ¦7ÒïÎaá¸Ȳ˜=/óeu³)3Øíq} ú\žDz´;ëÓb”
+“Ù,~
+qœš³=묁ã/©pØ)µŸ]ZÀ‡qÕ«Uæ!÷‹(hFއˆò@.,sœ­º€èÖ)ߥËð™Nµ­Ðâ°£ö‡(3X“ºl.OE Êvzt4™†Û½0€|c´îf8o5€Ü0ínæ@´d~^çU‡>0bÞ6ÖÕ*EÒ†5ZÞ%Îpk
+¥zÔlɘM×î€àÒØ.ù†¤£’Y¹¿HUÙM~¤al­¾c§²–
+eM;
+í-‰–8Qï×…cŠ(ã(wÖï®_÷±sûb±Zg‹«ü]ððýæãU™­VÍ—âz‘­7U¾¯	`F)uÚÓG£ñqq4µQW	¥Û]D5
+®Á¤ÙW´e³³‡Rp.yk“8þ’E€òÊó}-k8EWÀˆÄj8áv7–¶pbQ{]`CT¨kün6o+fêe»c¼߾«¶a@¹¸ù\ùjæ_³2_¬·m9lß,«¬,·»c&N¢©‚Ù’1A™–y•6GJÊ0	8K’=Ûº<ÃÑ‚„ hßϱ¾‘€-™üñŽm;<ð®I`’²Ì$]Sî¶µ®µœù£6ˆŽ®Ñ÷º*6NÒ^¶)HTÀð\ÿ¶õ˜oUdÐJ'áb+¹O‡s&iœ€K¨ân»%ŽWu¬Ye––	o¡Æ¾aâ`3Í$ü<˜q³ÉxöütÂíøq"ˆ‚m€… €¹æjõaoÞéÄŽ¿×À¶ë¶—'G&Fæ%[Dhà¥àܦ
+ì‹2”äÍ}$¬/Ãp‘y!“Ñt¯Ù'D"2)ÒˆÑ}‡
+7RoEºîu_˜¸!z.Óºé¾p+tZêt´¾…€Kšõ2=龓°‚Z \:~ì#Ñ`Ú1V¥{÷
+`¸J·‚Æ[D®y«ã1A}‡§x/`ѸçT‡ù=ÏàÝ€Æs.,½[ƒ÷Žpoxz¿ï4ž¶ÔžîWƒ÷O¸ÿt¤‡7N*à;àdð¶@ãÁg˜è°o4ÑŽý⭁Æcú¤*¦s8ã´LóÓôïëàðUi7lÿæ0jY!µ÷Ÿ
+endstream
+endobj
+47 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 117/Contents 48 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 145 0 R/TT2 2253 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+48 0 obj<</Length 1561/Filter/FlateDecode>>stream
+H‰ÄWÛnÛF}àاÂnâõîì…d¤Mb§MÔ-Lô%ê-Q*™rH*)
+~|gIŠºí®¨¤iý Q49—33gÏ\½,ªl–L*òüù‹¯®_“#ó']ýp‡×åèU<ºŠcF8‰gøßxBðã~¸$œ™ï¿Í­‚pÀof¾„&"¤&ñÃèœ\Äޤ$—Œ2¦H<ƒ4÷nâÑÍ;tyõº¿z÷úí5¾Ý…Ñzå­WÑ(lm7Wh>áÆ~oëî1É{s|×tI`&	±æ’ê6ð_WIŽðdi±í¡y†Q’_£"ÍöƒÝ±Í'‡§ÄŒØµ(:d0—õæÊÇ8
+ÁkKƒEô!6W`ª²±úfY$‹…1½©P“™ÓŸ²ÆÎhé¨ñw˜…–¡	‡·y˜?w•µÃ<¾.ù`MsÁ9ßµžTU‘ݯª´ÜvÑ>¦h(‰Ä·©èʼÉ*°ºÝs¦¢]gÏH¾ÌS2>'OÈ÷ÉãuV¤“*[æ$ɧ͝׋e¹*R’åd¶\,çä²z_¸°
+íÉæ-´‰B“I&½io"†,0¦ß£íKqÖcB÷Y>Mª³zJº‹&=R-’,Ÿ,VÓ,Ÿc¶,‹Üü× 2ÍÊîç3rñ{ü“-`ΆTƒ5•Àîl>h+‚¥XfÓïžb
+`ö¾¿ƒôc•;(ÏöpÐŽæô…®5•8çþv´Sãq\T@%p€‹iÈ¡Èì3>Ûo öir`ä’S.ðð»Æ>õBfçÛ£
+…rµ`q7Ôi¼»N0
+ ù¸Y‘<¤;è9ÂI´©
+o€ƒm=’‘RÊÏâ`çÖ£Õ—ÈV¨žNZÙ`NÎ<™5?Üõ·ó£ËòV¨•‹Îk™¿Ähjr[àÇÏé|·ì%¹ù++«rk>¥0óù~= —À™ÚRe
+ŸG¡À%-…¿
+¶õÁQ	e'BK%PÞ“úëVbÀX(Ç:t3$•šùgBu¸4å`®€kIu[åË (g¾O=ÞíD‰""ÂõΑ–d4ØÒ÷¾#fó,6ˆÙÌÊÕý"Éç«dž–Í!ƒ¥ó!î$Q{hÂ\C\Y·ÁÌPû‡I顯Whÿ0
+endstream
+endobj
+49 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 118/Contents 50 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 145 0 R/TT3 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+50 0 obj<</Length 1162/Filter/FlateDecode>>stream
+H‰ÄWMoÛF½Ð˜S!õj?Éepl·uÔÂ[Õ#Q6ŠŒI*
+þøÎòK_\JrÕA\RÐ̼7³og7y¯ÂE	ïßøðñî
+OƒœÙ/Ÿq]8g+ü5X
+ù5.Ÿã~Îò0I!põWðÛPby)×gDSêÂQo‚ãjN<ÉøœöŠp¾Äé2,Ã${úÚü
+Ö_“8*puÿ²‰¿…I”–xÓ´À>OÞÅ
+p%q9Ó£
+Ðok€RDalkZ£—wÈ7œ¼y&`°ï_Lt‰¢\ŽRÀèÛ8‘’{#ôÓ4ŸþZFùYÍ·@gm©k"´`ãØ-*u
+;ó‰àBžÆÞLÀYè»	cÁ"c•R±Uã,XÄ­gO*jΉW[ʧ€\ÕL¬òpíqaEfQÂ㜽º(Ÿ&¥hÕ¥ÞeUÍtõe˜.¢ÇUõyóe‘„Ea–ñS–›<ªÚ>TÛ.TMªùd»-d
+Kà@¶•jA¨–îx,gÅmpOÜâÍ9ƒÌ¯²NÏÓpUßìjÐ
+>¯à1ǯߣ'ëHÎ';Cù=.ÊbŒ‘aÅ¡a挲¦B}ö]Å;ûa‹nQ½“¼ FûT©=^¢—=fšÝYS=æ’22÷óIMFÕoT‹÷±Hê¨ÔZªÃŠ¡E7ª„9rP°<ÂÁ'Hl9«½¤½D|žž™¸ñô‘1j}QÓû#_ÔÕÄñx1A|‚Þê¨n­Ç:&¦&n»SŽxÀæ‚bæÜÁ0Kbq1M`Ÿ¸Ý´üwu\<Žø¨9–ð<Su‡Ê—Öò‡Š¦DÉ]	Üßä'7/ÞñÍk`0"ugÖ­Á-Zi{#aÍf¨ì’Úu›­:F{†•âÃj{
+¶D%ngê­°/s•=lTrAmý¡“‚ÎLáƒ{¶uì‹qq at eëÝ­oc—YÇ>¶r	ÓLہ¶¶B=Ã+‰aÇx²ÃÒCqål¼Ãâ”o´9¦žÇ”ËUKÁ“°zÁÇ’£ÖÐÆ­o_Åz_Úû%¼Ù:&sÓy¦Á›ìöÁ”Å[k°D
+öå	Ó.,^qDÛ%ʤ֍aÿL’¸Ä6‚DyÕü„m;F¨¬ž+O{¢¨˜O^b*LÑ®aدàΙVƒÎú_
+endstream
+endobj
+51 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 119/Contents 52 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+52 0 obj<</Length 395/Filter/FlateDecode>>stream
+H‰œ“KO1…÷ýwe`açö1íÔyĸ 1Ò¸bCƒ@f0ã÷¶ ‚Ì a3½éãœïž›I®óõl2­¡Ñh6[60„)0–Üô©.X˳Ä{~B§~ôy£ø†õ#lå $­e at eÜð/¬uÿÌ´†Käˆ)øGV“&ìu=ëöÈ2鯆"HzíÛ	lI6ÆbkLoQwá¸Ë6F±"/«,W:šÝ‹õ¾v<U\åVƒàNB>f“_®¢ÜµÌЪ ´ç	ÍÜí4塦Üh
+jeT¬¡Ô<=)¥Jñb¢h"¤ÚAÆÊJ0Ns#£l>^-ƒ2=UûqGsÁ8’*g]Ú„äÎI5ŽÛ1¹ÉPl:ŠÂTÄñÙoÎX̯Ïð´Ìóå.àuuƒ<sø„»ùøõ*䔏-UJìŽ( xðô͉ÜmUîJr½½˜—Æž¦Ånψ3®ÍCÿ¹|väYuä%x©£0;NûK€
+endstream
+endobj
+53 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 120/Contents 54 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+54 0 obj<</Length 1138/Filter/FlateDecode>>stream
+H‰¬WÛnÛF}˜§BBåÕÞ—4‚Ô‰m¤."¨‰¾X~`$Jf+‘ªDÇjáïì’².Þ¥¬¢‚Í;çÌœž|\Vù$Uðþý‡Ÿ®.¡CaÚaCgðùWOIg$$¼›Œ
+0¾Ë,8‹IÕ80DH‡u;+«]Óî® ýO‰9,³Îä
+׏Q"AâËD4Ź"z–ÒûXçp1J—ã>\<eùô¡Â|Àp1Ï‹K¼i1Æ“tíNò&Ëtž=”岘•Óì¯pªâS%@KA=’*FOÌ•µÍ@I¤|IþžòêúX•ó>dÕˆÄd^Lü~*Ø+LüN5WDDÌW;fýŸ}(”-OLÁ™pÖ1„oy1N«óчæ
+45¨¬Vk¬”a÷ä®vØëÛâÙ^ÀÝíŸå,›ãÁïé·¿eùäoÀš	—
+HJ*ާ,n¯›€t#[E1a’ó²§Ëò±[¦í²wÑ.’çA7üRGÿ"¾Cw€Þ
+±ý£Oàßð]Ð;¿\µ’‚놟 ]¿4'Å;¦\mÈoª¹®îa7[²E/rä¾ãa/L¾_“Bà(“‘ä‘—üºØ×ú3\¯öôë,[×܇kŸ´ÍДÖI
+5ÓD‚µ·~ý:N?ЦáMïâèß&`g
+‹÷+\ESkav¿,äîç*[ΡїÝKÿE`¸_ðZIFÁÕGÖ%~Z+´
+UIù"æ‡l°˜¹_Ð05RFÒ)ɝ‡ÜgøœU'PÜ<ÿo»÷ágÜPƒÝ'¿x=´Y-ÌKT_ÉÛ;^­#DmZ‰MG°Óœ¹$´4< g-y–†A•n%Ð4+"©9áRÅ'‘ð+NF	¢fTøÿkè'ü·~2¢”%j‡Œ¸mí½•HžÏ*f&Ž1NÔz‚$šöùŠ{,7±6cçë	Kà×§j]·í±p­1ß±3o; ]áò
+0
+endstream
+endobj
+55 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 121/Contents 56 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R/TT3 145 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+56 0 obj<</Length 1231/Filter/FlateDecode>>stream
+H‰´W]OÛH}Ä¸R¥U"Á0ßö ÄBuY©*Öj%ƒ!&õ68©ã´aµ?¾w˜c¤}±'Ž}?Î=sîý“²ÊïÓ»
+Ž>žBÂ¸Ç ‡Þþ§+\Ï{“Þ~’P`Üã¿Éàå'^ ™£öþ¯}Tãx§ö&4ˆ˜D’‡^É?=)aJ$£^ŸÇöÙyÒ;ÿŒ.÷¯fiì>½8CM$+ǬqŒßRi½3CL¼rT¯ÐW$""dí,ÉʇMÛõ¿‚p
+2"0b8”Yïþ…Sævêò´³á¶R¹\›äÛ&ùÊ$ÃD˜ê•K¢‚¦„ÆêÅ:ÄzqÐFÍk«i9?ÜÒfm»†;z2]/AG”蘲•ñª*óÛE•Í7]Ô¯é˜(¿&¢Áü9%åtû™ÒÛÎà8/FÙÒ‡“vçâLÃòI`a¢áJF ŠjʼnÒ4²V¯Ñìž0Œ®ïy·˜FZ¥“éxšü‹TSø:-ü}
+¼]}›N²\ü•–xý2ÜÉòûÇá
+Ó•0i!‰”LÔ¶Ÿ!—ÓE1²ù§˜ëÖC«K7_êäwlúî8uŠ„¡B9ËÆ1kT¼†Ù;`šÎÌM¡W…ö³å]6«ðió|²ên8ð#PÓ`¸³BŸ/g–—“l@Å-K!Th„òÉy*â}¨(N¹zFå—õ:ûna8ŽmÐdÿG…ÊÈÛ£s¡ÈbC˜ä&¸˜[ÈÚÓŽñ•Xð§´ïËô!ëœ/Þ?eU k·"ª­Poæq[µ#KÒž–¤$#‘lÔ)mMã§b³×¢úh;LŒˆ»ecxTyÝb‹ÈSJþVÈ:KÛ†a#TL-}»eêu'|v…mpQæ»p\=Î2ïøáQ)wÕ‘–XhÜÒèƒÒÛ¼µ·¦“	Ì·“´/Òq6¯›Þ‡ËÓ³“䝍{ÄÆS~‡71—~6s›¥BuXÕÃ
+³ƒÌ~wnÍ2X
+E¸Ü pˆ•/¿äëé¬Ê§¾öX#–U#ø™W_áï«3¸]ä“jo¸“óoFož¼02cæÃ5aÌDáºøUÆ$œuF“UµQ/£µj‘þ‰þ­[5†wט
+Ë~‘¨Û±OcÄ[5fÃÕAX^Dy«C[äEt–¡$‰åÿ /" /¯£ŠD1
++Œð+Œ0>&㼨šä®¾
+ëã 0Ðý‡:ì´„騅ÖâºÃ
+·$ÖJlá‘€
+%R{¹í>½æö–·6v¿ùèd!Š…=í…ϐ¢Û¾·f#‰ÓPàù^vK·øš'ÇͯàIO2'¿¬æW+¬êQv[¢9á‘i¡±tE˜Æx|[ï|zÓðár~G¿ƒì–ÝÆ†c’hEد Ô7q3mÈê`d»ì|†Áã”j´©¿n`Ž[¸{݆*Õ=c8…øæ6F•…löq^Œ²¥×¼G¸ÄŒPÝ¿.³ï‹¼ÌF70›Îó*ÿ‘]•×™G <è`»p~	0
+endstream
+endobj
+57 0 obj<</CropBox[0 0 612 792]/Parent 420 0 R/StructParents 122/Contents 58 0 R/Rotate 0/MediaBox[0 0 612 792]/Resources<</Font<</TT0 2252 0 R/TT1 2253 0 R/TT2 237 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS0 2257 0 R>>>>/Type/Page>>
+endobj
+58 0 obj<</Length 292/Filter/FlateDecode>>stream
+H‰|MOÃ0†ïù>Ž©dI+MìCh‡Iˆe'Ä¡ÚVTÝÔ!øõ$î˜VT¸ÄV¢<Ïk'·uSù¦Ñh<žÌ¦ žA	"¹[…þ(&^$Þ#ø"¼ú
+„ã#à@ëW¼ªT¨‹¶ Sé,ø71€+ÿ"Œk”ˆCð[1PY¼›{1_e²:äUH,§‹Y
+ÛÖuyÉæG-••ÊÔÉLA½Å/+õZ±ÏgM](¡3Ìý™©ºLÕ2)LrZw1¡2rø/J÷Ç‹;±œQŸ3rçØÌH«˜zó^—‘MoÈH&Þ¶ûsCæw(mŠÄèÇý¡)÷Uþúyõ¹~Xt<ß
+endstream
+endobj
+59 0 obj<</Rect[48.0 391.716 578.52 407.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 121 0 R/H/I/StructParent 30/Border[0 0 0]/Type/Annot>>
+endobj
+60 0 obj<</Rect[48.0 377.916 578.52 393.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 122 0 R/H/I/StructParent 31/Border[0 0 0]/Type/Annot>>
+endobj
+61 0 obj<</Rect[48.0 557.316 578.52 573.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 73 0 R/H/I/StructParent 18/Border[0 0 0]/Type/Annot>>
+endobj
+62 0 obj<</Rect[48.0 543.516 578.52 559.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 74 0 R/H/I/StructParent 19/Border[0 0 0]/Type/Annot>>
+endobj
+63 0 obj<</Rect[36.0 363.996 578.52 379.992]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 88 0 R/H/I/StructParent 32/Border[0 0 0]/Type/Annot>>
+endobj
+64 0 obj<</Rect[48.0 350.316 578.52 366.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 89 0 R/H/I/StructParent 33/Border[0 0 0]/Type/Annot>>
+endobj
+65 0 obj<</Rect[48.0 336.516 578.52 352.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 153 0 R/H/I/StructParent 34/Border[0 0 0]/Type/Annot>>
+endobj
+66 0 obj<</Rect[48.0 322.716 578.52 338.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 154 0 R/H/I/StructParent 35/Border[0 0 0]/Type/Annot>>
+endobj
+67 0 obj<</D[9 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+68 0 obj<</D[9 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+69 0 obj<</D[11 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+70 0 obj<</D[13 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+71 0 obj<</D[15 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+72 0 obj<</D[15 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+73 0 obj<</D[11 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+74 0 obj<</D[11 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+75 0 obj<</Rect[36.0 281.196 578.52 297.192]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 138 0 R/H/I/StructParent 38/Border[0 0 0]/Type/Annot>>
+endobj
+76 0 obj<</Rect[48.0 267.516 578.52 283.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 86 0 R/H/I/StructParent 39/Border[0 0 0]/Type/Annot>>
+endobj
+77 0 obj<</Rect[48.0 640.056 578.52 655.824]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 119 0 R/H/I/StructParent 12/Border[0 0 0]/Type/Annot>>
+endobj
+78 0 obj<</Rect[48.0 626.256 578.52 642.024]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 104 0 R/H/I/StructParent 13/Border[0 0 0]/Type/Annot>>
+endobj
+79 0 obj<</Rect[48.0 419.316 578.52 435.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 101 0 R/H/I/StructParent 28/Border[0 0 0]/Type/Annot>>
+endobj
+80 0 obj<</Rect[48.0 405.516 578.52 421.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 120 0 R/H/I/StructParent 29/Border[0 0 0]/Type/Annot>>
+endobj
+81 0 obj<</D[11 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+82 0 obj<</D[13 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+83 0 obj<</Rect[36.0 695.136 578.52 711.132]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 85 0 R/H/I/StructParent 8/Border[0 0 0]/Type/Annot>>
+endobj
+84 0 obj<</Rect[36.0 681.336 578.52 697.332]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 152 0 R/H/I/StructParent 9/Border[0 0 0]/Type/Annot>>
+endobj
+85 0 obj<</D[2244 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+86 0 obj<</D[25 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+87 0 obj<</D[27 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+88 0 obj<</D[21 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+89 0 obj<</D[21 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+90 0 obj<</Rect[36.0 667.536 578.52 683.532]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 117 0 R/H/I/StructParent 10/Border[0 0 0]/Type/Annot>>
+endobj
+91 0 obj<</Rect[48.0 653.856 578.52 669.624]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 118 0 R/H/I/StructParent 11/Border[0 0 0]/Type/Annot>>
+endobj
+92 0 obj<</Rect[36.0 253.596 578.52 269.592]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 87 0 R/H/I/StructParent 40/Border[0 0 0]/Type/Annot>>
+endobj
+93 0 obj<</Rect[48.0 239.916 578.52 255.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 126 0 R/H/I/StructParent 41/Border[0 0 0]/Type/Annot>>
+endobj
+94 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+95 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+96 0 obj<</Rect[36.0 74.1959 578.52 90.192]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 94 0 R/H/I/StructParent 53/Border[0 0 0]/Type/Annot>>
+endobj
+97 0 obj<</Rect[48.0 60.5159 578.52 76.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 95 0 R/H/I/StructParent 54/Border[0 0 0]/Type/Annot>>
+endobj
+98 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+99 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+100 0 obj<</D[17 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+101 0 obj<</D[17 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+102 0 obj<</Rect[48.0 143.316 578.52 159.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 131 0 R/H/I/StructParent 48/Border[0 0 0]/Type/Annot>>
+endobj
+103 0 obj<</Rect[48.0 129.516 578.52 145.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 132 0 R/H/I/StructParent 49/Border[0 0 0]/Type/Annot>>
+endobj
+104 0 obj<</D[7 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+105 0 obj<</D[7 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+106 0 obj<</Rect[48.0 584.916 578.52 600.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 68 0 R/H/I/StructParent 16/Border[0 0 0]/Type/Annot>>
+endobj
+107 0 obj<</Rect[48.0 571.116 578.52 586.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 69 0 R/H/I/StructParent 17/Border[0 0 0]/Type/Annot>>
+endobj
+108 0 obj<</Rect[48.0 308.916 578.52 324.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 136 0 R/H/I/StructParent 36/Border[0 0 0]/Type/Annot>>
+endobj
+109 0 obj<</Rect[48.0 295.116 578.52 310.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 137 0 R/H/I/StructParent 37/Border[0 0 0]/Type/Annot>>
+endobj
+110 0 obj<</D[17 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+111 0 obj<</D[17 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+112 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+113 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+114 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+115 0 obj<</Rect[48.0 529.716 578.52 545.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 81 0 R/H/I/StructParent 20/Border[0 0 0]/Type/Annot>>
+endobj
+116 0 obj<</Rect[48.0 515.916 578.52 531.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 82 0 R/H/I/StructParent 21/Border[0 0 0]/Type/Annot>>
+endobj
+117 0 obj<</D[7 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+118 0 obj<</D[7 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+119 0 obj<</D[7 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+120 0 obj<</D[17 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+121 0 obj<</D[19 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+122 0 obj<</D[19 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+123 0 obj<</Rect[48.0 115.716 578.52 131.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 112 0 R/H/I/StructParent 50/Border[0 0 0]/Type/Annot>>
+endobj
+124 0 obj<</Rect[48.0 101.916 578.52 117.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 113 0 R/H/I/StructParent 51/Border[0 0 0]/Type/Annot>>
+endobj
+125 0 obj<</Rect[48.0 88.1159 578.52 103.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 114 0 R/H/I/StructParent 52/Border[0 0 0]/Type/Annot>>
+endobj
+126 0 obj<</D[27 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+127 0 obj<</D[27 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+128 0 obj<</D[29 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+129 0 obj<</D[29 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+130 0 obj<</D[29 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+131 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+132 0 obj<</D[31 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+133 0 obj<</StemV 100/FontName/CourierNewPS-BoldMT/FontStretch/Normal/FontWeight 700/Flags 34/Descent -300/FontBBox[-46 -710 702 1221]/Ascent 832/FontFamily(Courier New)/CapHeight 593/XHeight -562/Type/FontDescriptor/ItalicAngle 0>>
+endobj
+134 0 obj<</Rect[48.0 502.116 578.52 517.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 70 0 R/H/I/StructParent 22/Border[0 0 0]/Type/Annot>>
+endobj
+135 0 obj<</Rect[48.0 488.316 578.52 504.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 71 0 R/H/I/StructParent 23/Border[0 0 0]/Type/Annot>>
+endobj
+136 0 obj<</D[21 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+137 0 obj<</D[23 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+138 0 obj<</D[25 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+139 0 obj<</Rect[48.0 198.516 578.52 214.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 129 0 R/H/I/StructParent 44/Border[0 0 0]/Type/Annot>>
+endobj
+140 0 obj<</Rect[48.0 184.716 578.52 200.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 130 0 R/H/I/StructParent 45/Border[0 0 0]/Type/Annot>>
+endobj
+141 0 obj<</Rect[48.0 226.116 578.52 241.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 127 0 R/H/I/StructParent 42/Border[0 0 0]/Type/Annot>>
+endobj
+142 0 obj<</Rect[48.0 212.316 578.52 228.084]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 128 0 R/H/I/StructParent 43/Border[0 0 0]/Type/Annot>>
+endobj
+143 0 obj<</Rect[48.0 612.516 578.52 628.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 105 0 R/H/I/StructParent 14/Border[0 0 0]/Type/Annot>>
+endobj
+144 0 obj<</Rect[36.0 598.596 578.52 614.592]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 67 0 R/H/I/StructParent 15/Border[0 0 0]/Type/Annot>>
+endobj
+145 0 obj<</Subtype/TrueType/FontDescriptor 133 0 R/LastChar 32/Widths[600]/BaseFont/CourierNewPS-BoldMT/FirstChar 32/Encoding/WinAnsiEncoding/Type/Font>>
+endobj
+146 0 obj<</Rect[48.0 474.516 578.52 490.284]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 72 0 R/H/I/StructParent 24/Border[0 0 0]/Type/Annot>>
+endobj
+147 0 obj<</Rect[48.0 460.716 578.52 476.484]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 110 0 R/H/I/StructParent 25/Border[0 0 0]/Type/Annot>>
+endobj
+148 0 obj<</Rect[48.0 446.916 578.52 462.684]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 111 0 R/H/I/StructParent 26/Border[0 0 0]/Type/Annot>>
+endobj
+149 0 obj<</Rect[48.0 433.116 578.52 448.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 100 0 R/H/I/StructParent 27/Border[0 0 0]/Type/Annot>>
+endobj
+150 0 obj<</Rect[36.0 170.796 578.52 186.792]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 98 0 R/H/I/StructParent 46/Border[0 0 0]/Type/Annot>>
+endobj
+151 0 obj<</Rect[48.0 157.116 578.52 172.884]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 99 0 R/H/I/StructParent 47/Border[0 0 0]/Type/Annot>>
+endobj
+152 0 obj<</D[1 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+153 0 obj<</D[21 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+154 0 obj<</D[21 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+155 0 obj<</Rect[48.0 230.736 578.52 246.504]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 232 0 R/H/I/StructParent 93/Border[0 0 0]/Type/Annot>>
+endobj
+156 0 obj<</Rect[48.0 216.936 578.52 232.704]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 233 0 R/H/I/StructParent 94/Border[0 0 0]/Type/Annot>>
+endobj
+157 0 obj<</Rect[36.0 203.016 578.52 219.012]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 192 0 R/H/I/StructParent 95/Border[0 0 0]/Type/Annot>>
+endobj
+158 0 obj<</Rect[36.0 382.416 578.52 398.412]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 168 0 R/H/I/StructParent 82/Border[0 0 0]/Type/Annot>>
+endobj
+159 0 obj<</Rect[48.0 368.736 578.52 384.504]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 169 0 R/H/I/StructParent 83/Border[0 0 0]/Type/Annot>>
+endobj
+160 0 obj<</Rect[48.0 354.936 578.52 370.704]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 170 0 R/H/I/StructParent 84/Border[0 0 0]/Type/Annot>>
+endobj
+161 0 obj<</Rect[48.0 727.476 578.52 743.244]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 220 0 R/H/I/StructParent 57/Border[0 0 0]/Type/Annot>>
+endobj
+162 0 obj<</Rect[48.0 713.676 578.52 729.444]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 230 0 R/H/I/StructParent 58/Border[0 0 0]/Type/Annot>>
+endobj
+163 0 obj<</Rect[48.0 699.876 578.52 715.644]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 221 0 R/H/I/StructParent 59/Border[0 0 0]/Type/Annot>>
+endobj
+164 0 obj<</Rect[36.0 658.356 578.52 674.352]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 194 0 R/H/I/StructParent 62/Border[0 0 0]/Type/Annot>>
+endobj
+165 0 obj<</Rect[48.0 644.676 578.52 660.444]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 195 0 R/H/I/StructParent 63/Border[0 0 0]/Type/Annot>>
+endobj
+166 0 obj<</Rect[48.0 630.876 578.52 646.644]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 196 0 R/H/I/StructParent 64/Border[0 0 0]/Type/Annot>>
+endobj
+167 0 obj<</D[51 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+168 0 obj<</D[53 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+169 0 obj<</D[53 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+170 0 obj<</D[53 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+171 0 obj<</Rect[48.0 686.076 578.52 701.844]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 222 0 R/H/I/StructParent 60/Border[0 0 0]/Type/Annot>>
+endobj
+172 0 obj<</Rect[48.0 672.276 578.52 688.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 223 0 R/H/I/StructParent 61/Border[0 0 0]/Type/Annot>>
+endobj
+173 0 obj<</Rect[48.0 272.136 578.52 287.904]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 178 0 R/H/I/StructParent 90/Border[0 0 0]/Type/Annot>>
+endobj
+174 0 obj<</Rect[48.0 258.336 578.52 274.104]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 179 0 R/H/I/StructParent 91/Border[0 0 0]/Type/Annot>>
+endobj
+175 0 obj<</Rect[48.0 244.536 578.52 260.304]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 231 0 R/H/I/StructParent 92/Border[0 0 0]/Type/Annot>>
+endobj
+176 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+177 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+178 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+179 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+180 0 obj<</D[41 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+181 0 obj<</D[41 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+182 0 obj<</D[41 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+183 0 obj<</D[41 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+184 0 obj<</D[43 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+185 0 obj<</D[43 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+186 0 obj<</D[53 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+187 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+188 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+189 0 obj<</Rect[48.0 451.476 578.52 467.244]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 214 0 R/H/I/StructParent 77/Border[0 0 0]/Type/Annot>>
+endobj
+190 0 obj<</Rect[48.0 437.676 578.52 453.444]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 215 0 R/H/I/StructParent 78/Border[0 0 0]/Type/Annot>>
+endobj
+191 0 obj<</Rect[36.0 423.756 578.52 439.752]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 216 0 R/H/I/StructParent 79/Border[0 0 0]/Type/Annot>>
+endobj
+192 0 obj<</D[57 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+193 0 obj<</D[57 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+194 0 obj<</D[37 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+195 0 obj<</D[37 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+196 0 obj<</D[37 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+197 0 obj<</Rect[48.0 410.076 578.52 425.844]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 217 0 R/H/I/StructParent 80/Border[0 0 0]/Type/Annot>>
+endobj
+198 0 obj<</Rect[48.0 396.276 578.52 412.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 167 0 R/H/I/StructParent 81/Border[0 0 0]/Type/Annot>>
+endobj
+199 0 obj<</Rect[48.0 479.076 578.52 494.844]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 235 0 R/H/I/StructParent 75/Border[0 0 0]/Type/Annot>>
+endobj
+200 0 obj<</Rect[48.0 465.276 578.52 481.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 236 0 R/H/I/StructParent 76/Border[0 0 0]/Type/Annot>>
+endobj
+201 0 obj<</Rect[48.0 589.476 578.52 605.244]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 228 0 R/H/I/StructParent 67/Border[0 0 0]/Type/Annot>>
+endobj
+202 0 obj<</Rect[36.0 575.556 578.52 591.552]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 180 0 R/H/I/StructParent 68/Border[0 0 0]/Type/Annot>>
+endobj
+203 0 obj<</Rect[48.0 561.876 578.52 577.644]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 181 0 R/H/I/StructParent 69/Border[0 0 0]/Type/Annot>>
+endobj
+204 0 obj<</Rect[48.0 520.476 578.52 536.244]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 184 0 R/H/I/StructParent 72/Border[0 0 0]/Type/Annot>>
+endobj
+205 0 obj<</Rect[48.0 506.676 578.52 522.444]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 185 0 R/H/I/StructParent 73/Border[0 0 0]/Type/Annot>>
+endobj
+206 0 obj<</Rect[36.0 492.756 578.52 508.752]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 234 0 R/H/I/StructParent 74/Border[0 0 0]/Type/Annot>>
+endobj
+207 0 obj<</Rect[48.0 548.076 578.52 563.844]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 182 0 R/H/I/StructParent 70/Border[0 0 0]/Type/Annot>>
+endobj
+208 0 obj<</Rect[48.0 534.276 578.52 550.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 183 0 R/H/I/StructParent 71/Border[0 0 0]/Type/Annot>>
+endobj
+209 0 obj<</Rect[48.0 341.136 578.52 356.904]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 186 0 R/H/I/StructParent 85/Border[0 0 0]/Type/Annot>>
+endobj
+210 0 obj<</Rect[36.0 327.216 578.52 343.212]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 187 0 R/H/I/StructParent 86/Border[0 0 0]/Type/Annot>>
+endobj
+211 0 obj<</Rect[48.0 313.536 578.52 329.304]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 188 0 R/H/I/StructParent 87/Border[0 0 0]/Type/Annot>>
+endobj
+212 0 obj<</Rect[48.0 299.736 578.52 315.504]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 176 0 R/H/I/StructParent 88/Border[0 0 0]/Type/Annot>>
+endobj
+213 0 obj<</Rect[48.0 285.936 578.52 301.704]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 177 0 R/H/I/StructParent 89/Border[0 0 0]/Type/Annot>>
+endobj
+214 0 obj<</D[47 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+215 0 obj<</D[49 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+216 0 obj<</D[51 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+217 0 obj<</D[51 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+218 0 obj<</Rect[48.0 741.276 578.52 757.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 219 0 R/H/I/StructParent 56/Border[0 0 0]/Type/Annot>>
+endobj
+219 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+220 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+221 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+222 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+223 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+224 0 obj<</Rect[36.0 616.956 578.52 632.952]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 226 0 R/H/I/StructParent 65/Border[0 0 0]/Type/Annot>>
+endobj
+225 0 obj<</Rect[48.0 603.276 578.52 619.044]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 227 0 R/H/I/StructParent 66/Border[0 0 0]/Type/Annot>>
+endobj
+226 0 obj<</D[39 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+227 0 obj<</D[39 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+228 0 obj<</D[39 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+229 0 obj<</Rect[48.0 189.336 578.52 205.104]/Subtype/Link/BS<</S/S/W 0/Type/Border>>/A 193 0 R/H/I/StructParent 96/Border[0 0 0]/Type/Annot>>
+endobj
+230 0 obj<</D[33 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+231 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+232 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+233 0 obj<</D[55 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+234 0 obj<</D[47 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+235 0 obj<</D[47 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+236 0 obj<</D[47 0 R/XYZ 0 792 null]/S/GoTo>>
+endobj
+237 0 obj<</Subtype/TrueType/FontDescriptor 238 0 R/LastChar 133/Widths[600 0 0 600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 600 600 600 0 600 600 600 600 0 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 0 0 0 0 0 0 0 0 600]/BaseFont/CourierNewPSMT/FirstChar 32/Encoding/WinAnsiEncoding/Type/Font>>
+endobj
+238 0 obj<</StemV 42/FontName/CourierNewPSMT/FontStretch/Normal/FontWeight 400/Flags 34/Descent -300/FontBBox[-21 -680 638 1021]/Ascent 832/FontFamily(Courier New)/CapHeight 578/XHeight -578/Type/FontDescriptor/ItalicAngle 0>>
+endobj
+239 0 obj<</First 240 0 R/Count 78/Last 241 0 R/Type/Outlines>>
+endobj
+240 0 obj<</Parent 239 0 R/A 395 0 R/Next 257 0 R/Title(þÿ
+endobj
+241 0 obj<</First 242 0 R/Parent 239 0 R/A 243 0 R/Count 46/Last 244 0 R/Prev 245 0 R/Title(þÿ
+endobj
+242 0 obj<</Parent 241 0 R/A 394 0 R/Next 392 0 R/Title(þÿ
+endobj
+243 0 obj<</D[25 0 R/XYZ 0 756 null]/S/GoTo>>
+endobj
+244 0 obj<</Parent 241 0 R/A 305 0 R/Prev 306 0 R/Title(þÿ
+endobj
+245 0 obj<</First 246 0 R/Parent 239 0 R/A 247 0 R/Next 241 0 R/Count 6/Last 248 0 R/Prev 249 0 R/Title(þÿ
+endobj
+246 0 obj<</Parent 245 0 R/A 304 0 R/Next 302 0 R/Title(þÿ
+endobj
+247 0 obj<</D[21 0 R/XYZ 0 745 null]/S/GoTo>>
+endobj
+248 0 obj<</Parent 245 0 R/A 295 0 R/Prev 296 0 R/Title(þÿ
+endobj
+249 0 obj<</First 250 0 R/Parent 239 0 R/A 251 0 R/Next 245 0 R/Count 16/Last 252 0 R/Prev 253 0 R/Title(þÿ
+endobj
+250 0 obj<</Parent 249 0 R/A 294 0 R/Next 292 0 R/Title(þÿ
+endobj
+251 0 obj<</D[9 0 R/XYZ 0 756 null]/S/GoTo>>
+endobj
+252 0 obj<</Parent 249 0 R/A 265 0 R/Prev 266 0 R/Title(þÿ
+endobj
+253 0 obj<</First 254 0 R/Parent 239 0 R/A 255 0 R/Next 249 0 R/Count 4/Last 256 0 R/Prev 257 0 R/Title(þÿ
+endobj
+254 0 obj<</Parent 253 0 R/A 264 0 R/Next 262 0 R/Title(þÿ
+endobj
+255 0 obj<</D[4 0 R/XYZ 0 190 null]/S/GoTo>>
+endobj
+256 0 obj<</Parent 253 0 R/A 259 0 R/Prev 260 0 R/Title(þÿ
+endobj
+257 0 obj<</Parent 239 0 R/A 258 0 R/Next 253 0 R/Prev 240 0 R/Title(þÿ
+endobj
+258 0 obj<</D[1 0 R/XYZ 0 756 null]/S/GoTo>>
+endobj
+259 0 obj<</D[7 0 R/XYZ 0 256 null]/S/GoTo>>
+endobj
+260 0 obj<</Parent 253 0 R/A 261 0 R/Next 256 0 R/Prev 262 0 R/Title(þÿ
+endobj
+261 0 obj<</D[7 0 R/XYZ 0 354 null]/S/GoTo>>
+endobj
+262 0 obj<</Parent 253 0 R/A 263 0 R/Next 260 0 R/Prev 254 0 R/Title(þÿ
+endobj
+263 0 obj<</D[7 0 R/XYZ 0 419 null]/S/GoTo>>
+endobj
+264 0 obj<</D[7 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+265 0 obj<</D[19 0 R/XYZ 0 701 null]/S/GoTo>>
+endobj
+266 0 obj<</Parent 249 0 R/A 267 0 R/Next 252 0 R/Prev 268 0 R/Title(þÿ
+endobj
+267 0 obj<</D[19 0 R/XYZ 0 765 null]/S/GoTo>>
+endobj
+268 0 obj<</Parent 249 0 R/A 269 0 R/Next 266 0 R/Prev 270 0 R/Title(þÿ
+endobj
+269 0 obj<</D[17 0 R/XYZ 0 126 null]/S/GoTo>>
+endobj
+270 0 obj<</Parent 249 0 R/A 271 0 R/Next 268 0 R/Prev 272 0 R/Title(þÿ
+endobj
+271 0 obj<</D[17 0 R/XYZ 0 191 null]/S/GoTo>>
+endobj
+272 0 obj<</Parent 249 0 R/A 273 0 R/Next 270 0 R/Prev 274 0 R/Title(þÿ
+endobj
+273 0 obj<</D[17 0 R/XYZ 0 253 null]/S/GoTo>>
+endobj
+274 0 obj<</Parent 249 0 R/A 275 0 R/Next 272 0 R/Prev 276 0 R/Title(þÿ
+endobj
+275 0 obj<</D[17 0 R/XYZ 0 315 null]/S/GoTo>>
+endobj
+276 0 obj<</Parent 249 0 R/A 277 0 R/Next 274 0 R/Prev 278 0 R/Title(þÿ
+endobj
+277 0 obj<</D[17 0 R/XYZ 0 642 null]/S/GoTo>>
+endobj
+278 0 obj<</Parent 249 0 R/A 279 0 R/Next 276 0 R/Prev 280 0 R/Title(þÿ
+endobj
+279 0 obj<</D[15 0 R/XYZ 0 298 null]/S/GoTo>>
+endobj
+280 0 obj<</Parent 249 0 R/A 281 0 R/Next 278 0 R/Prev 282 0 R/Title(þÿ
+endobj
+281 0 obj<</D[15 0 R/XYZ 0 694 null]/S/GoTo>>
+endobj
+282 0 obj<</Parent 249 0 R/A 283 0 R/Next 280 0 R/Prev 284 0 R/Title(þÿ
+endobj
+283 0 obj<</D[13 0 R/XYZ 0 281 null]/S/GoTo>>
+endobj
+284 0 obj<</Parent 249 0 R/A 285 0 R/Next 282 0 R/Prev 286 0 R/Title(þÿ
+endobj
+285 0 obj<</D[13 0 R/XYZ 0 452 null]/S/GoTo>>
+endobj
+286 0 obj<</Parent 249 0 R/A 287 0 R/Next 284 0 R/Prev 288 0 R/Title(þÿ
+endobj
+287 0 obj<</D[11 0 R/XYZ 0 151 null]/S/GoTo>>
+endobj
+288 0 obj<</Parent 249 0 R/A 289 0 R/Next 286 0 R/Prev 290 0 R/Title(þÿ
+endobj
+289 0 obj<</D[11 0 R/XYZ 0 216 null]/S/GoTo>>
+endobj
+290 0 obj<</Parent 249 0 R/A 291 0 R/Next 288 0 R/Prev 292 0 R/Title(þÿ
+endobj
+291 0 obj<</D[11 0 R/XYZ 0 429 null]/S/GoTo>>
+endobj
+292 0 obj<</Parent 249 0 R/A 293 0 R/Next 290 0 R/Prev 250 0 R/Title(þÿ
+endobj
+293 0 obj<</D[11 0 R/XYZ 0 724 null]/S/GoTo>>
+endobj
+294 0 obj<</D[9 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+295 0 obj<</D[23 0 R/XYZ 0 712 null]/S/GoTo>>
+endobj
+296 0 obj<</Parent 245 0 R/A 297 0 R/Next 248 0 R/Prev 298 0 R/Title(þÿ
+endobj
+297 0 obj<</D[23 0 R/XYZ 0 751 null]/S/GoTo>>
+endobj
+298 0 obj<</Parent 245 0 R/A 299 0 R/Next 296 0 R/Prev 300 0 R/Title(þÿ
+endobj
+299 0 obj<</D[21 0 R/XYZ 0 398 null]/S/GoTo>>
+endobj
+300 0 obj<</Parent 245 0 R/A 301 0 R/Next 298 0 R/Prev 302 0 R/Title(þÿ
+endobj
+301 0 obj<</D[21 0 R/XYZ 0 470 null]/S/GoTo>>
+endobj
+302 0 obj<</Parent 245 0 R/A 303 0 R/Next 300 0 R/Prev 246 0 R/Title(þÿ
+endobj
+303 0 obj<</D[21 0 R/XYZ 0 559 null]/S/GoTo>>
+endobj
+304 0 obj<</D[21 0 R/XYZ 0 705 null]/S/GoTo>>
+endobj
+305 0 obj<</D[57 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+306 0 obj<</Parent 241 0 R/A 307 0 R/Next 244 0 R/Prev 308 0 R/Title(þÿ
+endobj
+307 0 obj<</D[55 0 R/XYZ 0 127 null]/S/GoTo>>
+endobj
+308 0 obj<</Parent 241 0 R/A 309 0 R/Next 306 0 R/Prev 310 0 R/Title(þÿ
+endobj
+309 0 obj<</D[55 0 R/XYZ 0 192 null]/S/GoTo>>
+endobj
+310 0 obj<</Parent 241 0 R/A 311 0 R/Next 308 0 R/Prev 312 0 R/Title(þÿ
+endobj
+311 0 obj<</D[55 0 R/XYZ 0 256 null]/S/GoTo>>
+endobj
+312 0 obj<</Parent 241 0 R/A 313 0 R/Next 310 0 R/Prev 314 0 R/Title(þÿ
+endobj
+313 0 obj<</D[55 0 R/XYZ 0 338 null]/S/GoTo>>
+endobj
+314 0 obj<</Parent 241 0 R/A 315 0 R/Next 312 0 R/Prev 316 0 R/Title(þÿ
+endobj
+315 0 obj<</D[55 0 R/XYZ 0 419 null]/S/GoTo>>
+endobj
+316 0 obj<</Parent 241 0 R/A 317 0 R/Next 314 0 R/Prev 318 0 R/Title(þÿ
+endobj
+317 0 obj<</D[55 0 R/XYZ 0 481 null]/S/GoTo>>
+endobj
+318 0 obj<</Parent 241 0 R/A 319 0 R/Next 316 0 R/Prev 320 0 R/Title(þÿ
+endobj
+319 0 obj<</D[55 0 R/XYZ 0 564 null]/S/GoTo>>
+endobj
+320 0 obj<</Parent 241 0 R/A 321 0 R/Next 318 0 R/Prev 322 0 R/Title(þÿ
+endobj
+321 0 obj<</D[55 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+322 0 obj<</Parent 241 0 R/A 323 0 R/Next 320 0 R/Prev 324 0 R/Title(þÿ
+endobj
+323 0 obj<</D[53 0 R/XYZ 0 348 null]/S/GoTo>>
+endobj
+324 0 obj<</Parent 241 0 R/A 325 0 R/Next 322 0 R/Prev 326 0 R/Title(þÿ
+endobj
+325 0 obj<</D[53 0 R/XYZ 0 407 null]/S/GoTo>>
+endobj
+326 0 obj<</Parent 241 0 R/A 327 0 R/Next 324 0 R/Prev 328 0 R/Title(þÿ
+endobj
+327 0 obj<</D[53 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+328 0 obj<</Parent 241 0 R/A 329 0 R/Next 326 0 R/Prev 330 0 R/Title(þÿ
+endobj
+329 0 obj<</D[51 0 R/XYZ 0 654 null]/S/GoTo>>
+endobj
+330 0 obj<</Parent 241 0 R/A 331 0 R/Next 328 0 R/Prev 332 0 R/Title(þÿ
+endobj
+331 0 obj<</D[51 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+332 0 obj<</Parent 241 0 R/A 333 0 R/Next 330 0 R/Prev 334 0 R/Title(þÿ
+endobj
+333 0 obj<</D[49 0 R/XYZ 0 751 null]/S/GoTo>>
+endobj
+334 0 obj<</Parent 241 0 R/A 335 0 R/Next 332 0 R/Prev 336 0 R/Title(þÿ
+endobj
+335 0 obj<</D[47 0 R/XYZ 0 187 null]/S/GoTo>>
+endobj
+336 0 obj<</Parent 241 0 R/A 337 0 R/Next 334 0 R/Prev 338 0 R/Title(þÿ
+endobj
+337 0 obj<</D[47 0 R/XYZ 0 414 null]/S/GoTo>>
+endobj
+338 0 obj<</Parent 241 0 R/A 339 0 R/Next 336 0 R/Prev 340 0 R/Title(þÿ
+endobj
+339 0 obj<</D[47 0 R/XYZ 0 694 null]/S/GoTo>>
+endobj
+340 0 obj<</Parent 241 0 R/A 341 0 R/Next 338 0 R/Prev 342 0 R/Title(þÿ
+endobj
+341 0 obj<</D[43 0 R/XYZ 0 253 null]/S/GoTo>>
+endobj
+342 0 obj<</Parent 241 0 R/A 343 0 R/Next 340 0 R/Prev 344 0 R/Title(þÿ
+endobj
+343 0 obj<</D[43 0 R/XYZ 0 724 null]/S/GoTo>>
+endobj
+344 0 obj<</Parent 241 0 R/A 345 0 R/Next 342 0 R/Prev 346 0 R/Title(þÿ
+endobj
+345 0 obj<</D[41 0 R/XYZ 0 330 null]/S/GoTo>>
+endobj
+346 0 obj<</Parent 241 0 R/A 347 0 R/Next 344 0 R/Prev 348 0 R/Title(þÿ
+endobj
+347 0 obj<</D[41 0 R/XYZ 0 645 null]/S/GoTo>>
+endobj
+348 0 obj<</Parent 241 0 R/A 349 0 R/Next 346 0 R/Prev 350 0 R/Title(þÿ
+endobj
+349 0 obj<</D[41 0 R/XYZ 0 708 null]/S/GoTo>>
+endobj
+350 0 obj<</Parent 241 0 R/A 351 0 R/Next 348 0 R/Prev 352 0 R/Title(þÿ
+endobj
+351 0 obj<</D[39 0 R/XYZ 0 554 null]/S/GoTo>>
+endobj
+352 0 obj<</Parent 241 0 R/A 353 0 R/Next 350 0 R/Prev 354 0 R/Title(þÿ
+endobj
+353 0 obj<</D[39 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+354 0 obj<</Parent 241 0 R/A 355 0 R/Next 352 0 R/Prev 356 0 R/Title(þÿ
+endobj
+355 0 obj<</D[37 0 R/XYZ 0 546 null]/S/GoTo>>
+endobj
+356 0 obj<</Parent 241 0 R/A 357 0 R/Next 354 0 R/Prev 358 0 R/Title(þÿ
+endobj
+357 0 obj<</D[37 0 R/XYZ 0 714 null]/S/GoTo>>
+endobj
+358 0 obj<</Parent 241 0 R/A 359 0 R/Next 356 0 R/Prev 360 0 R/Title(þÿ
+endobj
+359 0 obj<</D[33 0 R/XYZ 0 101 null]/S/GoTo>>
+endobj
+360 0 obj<</Parent 241 0 R/A 361 0 R/Next 358 0 R/Prev 362 0 R/Title(þÿ
+endobj
+361 0 obj<</D[33 0 R/XYZ 0 172 null]/S/GoTo>>
+endobj
+362 0 obj<</Parent 241 0 R/A 363 0 R/Next 360 0 R/Prev 364 0 R/Title(þÿ
+endobj
+363 0 obj<</D[33 0 R/XYZ 0 252 null]/S/GoTo>>
+endobj
+364 0 obj<</Parent 241 0 R/A 365 0 R/Next 362 0 R/Prev 366 0 R/Title(þÿ
+endobj
+365 0 obj<</D[33 0 R/XYZ 0 332 null]/S/GoTo>>
+endobj
+366 0 obj<</Parent 241 0 R/A 367 0 R/Next 364 0 R/Prev 368 0 R/Title(þÿ
+endobj
+367 0 obj<</D[33 0 R/XYZ 0 415 null]/S/GoTo>>
+endobj
+368 0 obj<</Parent 241 0 R/A 369 0 R/Next 366 0 R/Prev 370 0 R/Title(þÿ
+endobj
+369 0 obj<</D[33 0 R/XYZ 0 506 null]/S/GoTo>>
+endobj
+370 0 obj<</Parent 241 0 R/A 371 0 R/Next 368 0 R/Prev 372 0 R/Title(þÿ
+endobj
+371 0 obj<</D[33 0 R/XYZ 0 705 null]/S/GoTo>>
+endobj
+372 0 obj<</Parent 241 0 R/A 373 0 R/Next 370 0 R/Prev 374 0 R/Title(þÿ
+endobj
+373 0 obj<</D[31 0 R/XYZ 0 401 null]/S/GoTo>>
+endobj
+374 0 obj<</Parent 241 0 R/A 375 0 R/Next 372 0 R/Prev 376 0 R/Title(þÿ
+endobj
+375 0 obj<</D[31 0 R/XYZ 0 465 null]/S/GoTo>>
+endobj
+376 0 obj<</Parent 241 0 R/A 377 0 R/Next 374 0 R/Prev 378 0 R/Title(þÿ
+endobj
+377 0 obj<</D[31 0 R/XYZ 0 518 null]/S/GoTo>>
+endobj
+378 0 obj<</Parent 241 0 R/A 379 0 R/Next 376 0 R/Prev 380 0 R/Title(þÿ
+endobj
+379 0 obj<</D[31 0 R/XYZ 0 581 null]/S/GoTo>>
+endobj
+380 0 obj<</Parent 241 0 R/A 381 0 R/Next 378 0 R/Prev 382 0 R/Title(þÿ
+endobj
+381 0 obj<</D[31 0 R/XYZ 0 652 null]/S/GoTo>>
+endobj
+382 0 obj<</Parent 241 0 R/A 383 0 R/Next 380 0 R/Prev 384 0 R/Title(þÿ
+endobj
+383 0 obj<</D[31 0 R/XYZ 0 716 null]/S/GoTo>>
+endobj
+384 0 obj<</Parent 241 0 R/A 385 0 R/Next 382 0 R/Prev 386 0 R/Title(þÿ
+endobj
+385 0 obj<</D[29 0 R/XYZ 0 554 null]/S/GoTo>>
+endobj
+386 0 obj<</Parent 241 0 R/A 387 0 R/Next 384 0 R/Prev 388 0 R/Title(þÿ
+endobj
+387 0 obj<</D[29 0 R/XYZ 0 619 null]/S/GoTo>>
+endobj
+388 0 obj<</Parent 241 0 R/A 389 0 R/Next 386 0 R/Prev 390 0 R/Title(þÿ
+endobj
+389 0 obj<</D[29 0 R/XYZ 0 751 null]/S/GoTo>>
+endobj
+390 0 obj<</Parent 241 0 R/A 391 0 R/Next 388 0 R/Prev 392 0 R/Title(þÿ
+endobj
+391 0 obj<</D[27 0 R/XYZ 0 240 null]/S/GoTo>>
+endobj
+392 0 obj<</Parent 241 0 R/A 393 0 R/Next 390 0 R/Prev 242 0 R/Title(þÿ
+endobj
+393 0 obj<</D[27 0 R/XYZ 0 694 null]/S/GoTo>>
+endobj
+394 0 obj<</D[25 0 R/XYZ 0 708 null]/S/GoTo>>
+endobj
+395 0 obj<</D[2244 0 R/XYZ 0 611 null]/S/GoTo>>
+endobj
+396 0 obj<</First 989/Length 5167/Filter/FlateDecode/N 100/Type/ObjStm>>stream
+xÚì›[oG’…ÿJû¾·Ê`ðeŒõÚc–û@ð–zdîȤ@S»ö¿ßˆîó%Õ–ºMÊÞ‹5„@UtwUDæÉˆ“U%å%,%•eD;¬ËÝ?Wû‹	m¥¹Ð—Ñ›Ÿ3–RKÉÁ¤ÑªIq‰1ÔÕ¤dR\킜MJÅ¥bRÎ.­&¹±’«I«[Èͤ\ê.
+—ÌFlݤb6b÷·1ªKf#·QÌFŠnÃþbJn£˜”ÝF1©¸b6Òê6JwÉm³‘ªÛXÍFjnc5©»Õm·±š܆}Š9ºÕlää6V³‘³ÛXÍF.ncí.¹ÕläÕmT³‘«Û¨f#7·QÍFîn£ºá6ìûhÓ7$
+͸†ØL2ëjã-ÕlÔØ]2µl’Ùhiô¥4³Ñ²i-¶N_7-Íl´á×6³ÑƒáéË{uÍÍlôæ«j«G¶–ÍlŒ5ûµÝ¥êW˜Ñƒi1çH!ØK&­Á´ô´$s	;¯g“VŸÍ9¥`+Pl¶0†léÕ¤Ýê÷fRË~m_’aêú†KîWÃldûgRti÷ÙÈ´IÙ%›#lŠƒŸg6lâ6f›AÊÍÖ»³‘{ò_ÝF7tÊpÃ\~
+ncØwñ’J°ó\“IÍ%³QÌ÷“§5˜’vçU—wŸ}2ç¯&u—lõVCɼ>Úy1¸dø­Ñmø9kt«yÍ݆û½GI«_á6šYZ£ÛhÕ%·ÑÝFtîktÃm$·1ÜF26››Ñ$ó³>Ø|±‹í°|»ùæâf{uûÝÍv»‹óï¾Úþ|ûÅöœÍ·×/¶½x¹#?ë»_^n7Ono^=ݝúíõõ퇺ê3C£û)¶˜Æ
+{ÁHABä§Â7	!#ÌŸV„ŠÐ$D„Œ­8/ÇhÁhÁh at OÀhર7j$„½‰èë"a~Ó†„BF(+
++
++
++
+[@@sCsCsCsCsCsCsCsCsGsGsGsGsGsGsGsGsGsGó@ó@ó@ó@ó@ó@ó@ó@ó,Á\‹ˆP¸JaéSXBGæÂPC-µ0ÔÂPC-µ0Tg	€À˜WƼ2æuŽgsú
+4³I\4à¢B~€Ð„ ü
+†(eho"”!>¢“!6"“!.¢’!&"’!¢‘!"‘!¢!"!þ¢!ö"!!æ"Ž1yºÐE€.t ‹
+-À
+&¼jÿ 'LJ˜Œ0	aòÊ«üz•_“^å×$óIá“Á_åÏ$òÉã“Æ'‹OŸ>)|2ø$ðÉß“¾'{OòžÜ=©{2÷$îÉÛ“¶'kOÒžœ=){2ö$ìÉד®'©Ižš45ÉirÓ¤¦ÉL“˜&/MZš¬4IirÒ¤¤ÉH“&Mš$49hRÐd I@“&ýLÒ™œ3)g2Î$œI3“e&ÉLŽ™3fÌä—I/“]&¹Ln™
+
+	¨#PÁùæ›Eéã͓͓íSÇ\>û錔1c%ŒÏwg|~õâòjû䇋—ÛÍg—Ï_Ýl7ŸÞ\¿üäâ%¿~uë§lž¼¼¸Ú<yõýOOo._Þòñåöæõ/¾ûú#ûûdóÍÅóí?¥ðÕ«¿ßÞðÓg»ŸžÜÞ\þ}{ýŠ+¶?ß~|ýóæÓËÿÜü°½xvyõÜ.Œ›o^û”ìÓW×7?^¼0á/WÏ®®o·ö…ý÷ÙõõíݧÛ맺öß®žmoÿÁÕüË//w?ü}ÿÃg×/^\ÿ×öÙ¯¾¶±~îƒý|óÙÍŏÛÝྻ¼}±5
+¦è“.n‚ãu
+нŽÎ_^þxyûÓYXr<ß,.¦ùÖÖEÕ¹¸w¯bcÕ]”ø(nò2"m÷.êŽoI¼Ì&òþÌ+ææ8¯žãµîçÓ|v™ì¢×ÚQ¼°«»S!ŒÉ¼
+õ=Þ?y•¯MÆ®bo?Ÿà²
+£¢É…b+“©¥r»”e¹]Å\r»ŠÓävÛÉ튒ۥºÊìòœìU¡]±âu¡z:}1ÌdÍZ
+¯åÙÊkFy.Ë»*Eéô:Eñ¶WŽòéµ£<zõ(Ϭ^?Êó®Wroî5¤Ü×{)Ï^GÊó„W’ò,ⵤ<Çx5)Ï@^OÊó“W”òìå5¥
+~÷jLö¯Çd_ñŠLö¤ì2|craÏr_c?òïÙc¼Âþ÷ºOöL—Ù_Mž÷.sŸ`r`7wÚûÞÁºÔ]­ÆKT¹'XJ[j](n±
+‘òóE
+\êX(qñ’KîêãB™‹­o™÷öK™·÷Å.¶QRîâÅÅÜç·…’/þän,”½xÝ2ï&âBé‹­Å/¶Rþ¢²ßý{†…‹:Š`l3¥ÆÖ™B¯l]y³Pã•Ó+/Ã
+b¼6—WiûàýÛ¦…²/¶­¼\(ñB^ÞyŽe–ǘÎ
+£›Y$ãÕ¯óEô¾X¯X—r÷:z™3¡.³fÆkwgž¥/³rÆë|gÞ-,³&ÆeÖÒÄ´Ìrc¯YQã•Ð3·.³®&Ö]°2w»JaåÚ–YÎÇ2+úvÕÄ3;¹Ì?¯çí¯9îg‰¼]"o×=xvc°¾þþ?¥%÷•¬_ü¯ß~ø¡oÛQ*¶oéÐ7Ï—ÝHîgX]ùC)V&õ-ŠÛIōÏ„•kš×#šûiÍyfP]>ó~·z‹æqRseÌ3¿íšƼß
+ÞÔ¼?ë¸fÆ<Ë \>s>¢9žÔ¼2æY›æšÇÜŽhN§53frPÎØëá˜ûÍù¤æÂ˜I’T×|8æ#^·_óãšs™wIÉØ©ùˆ×í=è¨fn'fBØC°ŽùH¶Ó!H©x$så1˜_³îÉÞ¢ùtRºNÊÑ+é•uœcG4ŸŽÁĘ©|÷LcîÇÆ|:#cŽT¾»æªGÆÜOÇ 5õ䁓Ç`<ÄùoôÓ1Èí"éèä1Ç|$û餢Ÿ¬xò‡c>ƒýd’œO$ç“Ç`8ózLs9­9£yÞQ'•	LÍG|£ŸŒAJ¥
+ÉG~µ
+ózZ3cÖ6˜üéæpÇÆ|2)ÜHndV:Üã±1÷Óš³öÁìO^‡û`<æÏ'c´"ío7Ã)îƒñÈ>8ÂiÍŒYû q_
+‡û`<²Ž“1HD¢ÂÈ4…ƒ}P7oÑœNkfÌ<‘­.øs;²[Ó1È>H±€=H¤°ŽùÈn5NÇ û 5Ùc°Æà1ͧc}Ò‰ì1XyãÈ>8NÇ û Ùcðp\°è8ƒìƒ’ÁÃ}0‰îp$Ï"/a_îÓ[›¬þš¬úƒ»­ÎÏâ|D{Mx³ïª>6`=6`ýÞ,÷¶Ç¬÷°k}÷V,ó‰Ç^¬?/Vü³vg™ÿݯ=k}£Ok¶gõÇ>­ßݧUÞÆ-÷­ÇŽ­ÀŽ-_øßÓ²e×Ïž­¸¶7„7›·ÂŸ¦‹kfÛ¹îÓÎå®ð{ú¹üúÙЕÿІ.S=;ºÂ]²1=¶v=¶vÝ«µËèÿgo—Ì^»¼Òåu~F½Ò èa»½ÞÖí5`’wíúªï3!|cËööÖ0ûÞ0yðÝñXXxzÆÎϺòîx¬y¬½OÍd6qºÉ´wLJv••÷«Ë¬Ž?C×ÙùÙo·ÕÇ6´÷·
+ÍàhÚc?Úc?ÚÑ~´ó3Òª&xw<Ö˜Öß“Fµô>5®ÙB>v®=¤síüŒ$ûÝñZØL‘\þîxß^¶öÜÛv~FÀÝñ×Mnñÿ¨Ù­þÁÍoë;6ÃÅÿÍæ8[‘Ð<é’ûàƒÍG‹Š:6_œ…%îçfmÒ]ÛØ7Ï—½—ï*”>ZT²ùbI»V;j»hK{ãô¢ÓóÁé=mo\“uMùmO^^<Ý~ô·ÛíÍþ9ìºè>zqùüjóäöâævóõæË‹_¼Çîßo.oÍà_¯Ÿm7_Þ|÷ýþ·»¾ÙÎ+?·i_Ý.¹Úç¿\=ÓGÿu§íµŸm{}gÛëƒl‡7MÿaÓ÷²ì|º}z}sq{y}µ+B»ó–i÷ð¬O®_\ßœ™†Eçox“<öˆ“D¯R•;—UÉÊ.»>Ìe×wpÙׯQ-\VtwrP*ñ™L’<¿ÏèæuK½ßd˜{»ßé„^Øéãaƒ‰áaêc| þô@ýùç—ž¿>püõažÛ½]u9‹}n”)ÜÓù*}Áµ½Þ7ø¸†)=ðüü0ÌRy8fKzàB¦ßZÈÿ
+endstream
+endobj
+397 0 obj<</First 877/Length 1093/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÌXÑn[7ý{¯E‰¤$ m}(ÖuÅ’aA¼æ63ÙÅ…´ßÃk;q¶ëøÒh»>´âUHJa#)‡$qŒE‘­H±•JH”°ÖÔ`-äX!+a¥ÀÉÖ¸
+˜’X`4kH™
+Œºæ¶)Rb60˜¹\Àlõ‘f±,PؤVÑf­
+cÀ´ÀÖh#h¡Æ±À@«1ê¬1lk³@#˜5Ù?Y‡b}™a€¹ Ö\¼BEôÀènøKÑèÜ ©šä1Zë"¥ˆ–QkÁˆ †f&6wäOÍ0ÕnŽ f÷<Ã@gëp3P65Fxþ|vŽ37î÷Ù/nö	o>/fwó›Åòö4ÏìÍ-šÍöÏζN²qºJu¸¦ø€ˆ×^¯úæwÿñµ;³=°/÷ø?–7]·Xv‡C[L9bŸœø<
+¿«Yæj–exª†š•‰5»?P­f¸lŽšUg
+šÏÑW3&Í€wå’=B杓8ƒRgPå” œró¹/»ëŸ»·«~¾^¬–—ŸÞw{÷ÛìÕüÓêÃú_¨ŸVw«þ*>C«nþ\ÇTïço»ówë®·½Áçünq»œ]¬çýúìÏ~±†¿®nºÙ«þò¯ãÝ»UßÝ{¾DËõðùby³÷5m¿Kz¿ã‚<î:Xã½H»7jׁWsìU“6þ²çÑ6<x¿óøÃûäÍØ÷±þÛ<¦aÜ.“àµn³ÖaB³G½^Oòl´=Èn¹yÇŠõZs…†YuZqwZù*EÅÛ=Q”x§r$N~uâ‹3žê䟦o‹»»}ñ$òœҴ~k;|vÆÃÎxďúîK*Îxª3ßæãÏÑù8Òä×qÏ)9œòÑyyüeÉìÄ‹3s=%‰âj‚Üß~ Èº(¾ÆÑF>e˜ùöiS¬_~úJ¿|û=k¿s:>ÃÙo1ÍpöÛŒ±±„|30ÍÁÓŽc3ÜxDzBDÅQ=ÿZ-°µžn‡bħŠÁm|Ò<Ý#øñ†9
+žG{å({ñÁ«Þ|ðƒÿ!8„wêJNaÉ©,±O+rjK“ÄÝð©ûY€
+endstream
+endobj
+398 0 obj<</First 875/Length 960/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÌ—MkG†ÿJƒïÙ®ïn0†ßlã('¡ƒ°G kPÀþ÷~kô‘•œ‰§n9,S;ûôÛoWÕôô:KëÍY›\¬MÇÅ©â&ã:kR³ñ
+ô™ú8ûZcdƒCy ó™Õu½|¹ûµ)ÐÛ‡ÝôËî=ÜèòõÝÛÃÍçó«ÝûO@òÖ«Wohð{~náÿÑç^ä©ÈsÍ?K‘×¢Û¤bÝó^ԏ¢þ(ò³ÆK±¾BE}Þ¦/|±¾¢EÞŠ¼ù¨åóiúÿÚŸ_\^zÁ–1q4&7´eÌ)¶Þ3ˍínØŸ×û›«ËëýƒŽ
+·æë)®÷¸®øâõ)Nmy"nq¶e¶Ü«ïfË$û}·-gl[Î>·á]H½ÈS‘ç-üÑ®-µå’õ­èß‹úQô?Š~Šõå^óÏTä‹õe)òZ\o±¾\¬/GQÔv£goµmÛÑr^ÞCxmܐâø5—ÇçÂ[|F¥XC±¢~±†R|F¥¸ˬñZ|F•Šú\ä‹Ï¨jQ¿X_-ÖW‹õÕb}uÖüX¯éÕöãúžÑ¬ø›MYÁÔã ß8èdÿõöõþãáæüöòp}òíËþhçz·ûýüÛáïÛgÔo‡«ÃÍiÿgÉ»ÏÙÿXê8õùÏ9£•óóûçj»Ù¿A¶àÝ|ÊMÎjè¦	Æ|h‚šº×ðØdæñ_ÝØ¦.?;}¯¤¾×ÜÕ쬟¾WüH©þãô½âߊþ½¨Eÿ£¨?kú\¬/SQÿgõý.À
+endstream
+endobj
+399 0 obj<</First 875/Length 936/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ”—Oo#EÄ¿JKÜ×ýþv·´Z)H¬È"ˆƒ!Þ)8È2|{êÅ	°×Áš7ãßT¿êê{†Zëm¨7Ÿ8D[‰C6qÇq4YŠãlêE­¦˜õfΤÙgÚŸapæ-´¸h1ŠË–ZÜh9Š«¡Š[m$jhOçÒf‚smKÀ¹¡pèEz/0PD‘èPz¡hQ¢ØÙD{ÁE™‰Ž¢ì„4±òN¬…•AÀe/Kå(OP—(Så,Wå,[åš‹žd”±„ò,g	åYÖÒjÊ
+”sVåûV”0 S1(¾Ö‰Ç„ò(O(¯,Æ›uà07f6“^ð@ÏfÚ^(0‘cÕj耖ƒaú¦Øl^Ö0ñ€”}åð‚¡³`(§åœC¹ÖÒDœVýÎ^
+«ov(O¸œÊËubŽ0TÁѼkÁ‰"ÍE
+ž(²àÕ\apJGƒSK—§Ô†Á‰¯±4
+òùd¾Aæd¾Aæ›d¾Iæ›d¾Iæ›d¾Iæ›d¾Iæ›d¾Iæ;ÎÈ÷ò×íO»‹ÇÝ¡õW}ó~÷ûñâöæz¿¹<nÇÍ×›·Û?î~;n¾;Üoö×_Þ]í6oï<ÝøéîÃÝa÷םŸï¯vûãýégû«œÝ‹=œñªÿ§Õg;µ'É9¸/üãòþón{+Ÿh×'î‰Ó=ߟþÄ£nñÃ9£M‹ÇÇ,ðúƒ¿…ëÃíÍ~÷üX-9÷ã<÷ê“S_œº°Ñ	©¯¤¾‘¼“|<®’'ã2_%óU2_%óU#õäÉ|•ÌWÉ|•ÌWÏÌ×^|I3ò%íé~LI}#y'y2_#óµAö3IžÌ×Éýëd¾®Üþrrÿºs¿õÿzIûÿû—ßÔ>2½ú‹ojF¾©=ÓùŽNò/…ü§
+endstream
+endobj
+400 0 obj<</First 876/Length 983/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘KoE…ÿJKì¹]¯î.)Š„`‚ÂÊòÂJ®‚%c#ËHäßsÎõ+¾ä¢)”‹ÑÔ}ºº==^j­·¥Þ|á-n£‰;î³I*î«©“ʦ˜õfΤÙgÚ×2ƒ
+8óJ.ZLr£Üg›Ýp_mŸg[üMíÜ¥e‡ŽkKÇßÜšôށpFú
+a(Ox·]Ý‚2×´°M†nA9:$Ó:C·C‡õ[gèÖl&
+À„¡[ÙLºd9È„z0.óÁ'Ö,©Å
+”N%Â灊K¸ë¥Ð¬R¬ÖÇ"åi„¡<¶T(³R¡Ì`'Vâ‰Þyõj÷
+¬@Ãý¼û-²{·üðó—ݏ7·¿_\íÞ|€c|ôúõ1oEÞ‹|ùQäg‘_E>küèÛx{䥨_ÌïØß·û¿î¾Û¿»¹½¸»¼¹~ûñýî×ë÷ûÛ«Ëëýî§Ýoþ¼;¢¾½¹º¹=ë_÷öpÿcê—‘ømñþòúÃWÚå0½|â.{ü0æ»È9†±×ï‡=;r<èy¢“K|‰ûî'üÒ™"¶MñõšG³îÑÙ:¼À`ã%v¾e:î¨÷Ó±¤×}þ7FXdË×毵x‰õ½¨¿1])£¨?‹þ¯"Ÿ5^{Í-æW‹ùU«Å_½èO±?uý)æW‹ùÕb~­ùb~Mk˜ÙØÁxøÅ1Œ[˜m[ØÊÇ	™pžto‰b­˜C+æÐ‹=êR«Y/ö¨÷`/ö¨G‘/îÁ^̯¯¢~ÖâÅ
+©ùZô§˜ß(æ76ä÷ž4ÿŸRŸ&ˆÿ™ uâüÀ§>$èŸÿÜó	~±«Y~þMv"èG¸ö¨|´O~Š3?|Ms›>¹K¿ÉOÓçS3?É·/gn[ÎSˆkxÖpéE^мyÛÂo8%ŸÒ"?Šþ³+«VÜG§äMÕ}ú¨|Š/&Y‹IV+òÅ$kÔ’¦£¨?‹úÅÖbÛ†ü~©Àß
+endstream
+endobj
+401 0 obj<</First 900/Length 1120/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÜX]o[7ý+öK")‰@Q [÷0¬ÛŠ%Â<xÍm ³ÃÖ¿CÙŽí6^Ä ØÃŒKˇŸ‡å«™Bš9TÁCB‚æRµårÿÞBî¿k œƒRÔð;¥ÀdϸV<)L)qj8	%Ûï%”Ò𬡦‚gµNCKÀq­
+X!(ÀC"h¨$
+°äØ¼@3qX`YÈÀ°\,±äÉ´`¹™SeËQ–Õ.GTGK‚P‘JÉ!§Ë… TøB‚9£rZB×*!S×B]©k¡°Üµ‚•eÏ’à½Â²Àª¢¹$¨Ãh.bX®õ'àv*,·h`Xnb`Xnj`X¶jYÜYà–E+qËàFŠ­!(âi¦A¶¡!f|ˆ¬,­AhF70¨U˜ †ªB“Ä
+¥°,–2ŠNÅŠ
+¨¢†ÖS„KÍJ§°Ü›0F˜¶ ¡×"õ5t[lÖ‘'øƒÄà’ÎÔ§@ÒŽ«èSk”ˆîbB½­˜{ƒ¡¶Ìj–|ˆÑÑ•lE‡¥™F‚Zú|4êkð¡|ôN‰©15H
+©k`HJ)Ø¿–v’dùêÕìrú{ýfz¿\Í×wËÅåçOÓì·ÅÍ´º¿[L³_fo矗­¿@}·¼_®®âYÛÏõë×0una`Oÿ:û14¥.½C!¸K³Óüænqû
+öÌ/`kƒGÈŸ—«?ç÷³w·àÉ–¶pÛ~…½††e½ÑØÇüµRÙú Ñä¯töyðH\ð+é'äP¯Ç2Ú9*–šó©tJì
+-¨ž¢ŸœøìÄ“?ÄœpÝáÅi¿8íW§ý6Ö?¼Ãë3º;;IÎN’³“äì$9³/>ÒrqÚ¯NûÎ=œ›˜ø½ø4?XO« g±Ÿôç÷w·‹ÙÅz¾ZïGÀï«»5:ê§åÍ4{»ºüc£øíôa¹š4À¹µXÛH˜}¿¸9øÖm¿S9‹ÝõΞÿ>‹øòI×¹Ð=þ$ÓrØyó6ùày~*˜ƒ°»èôÍÑLï7›Ç¦ ¹â¡¡N¾¡~§-\|ðâƒW¼ùàꃟžú'ðɉÏN<9ñNj““Ûä$79ÙMNzÓ¿g_~|àÿûö¢'§>9§>9§þ‰¤‡H>8ì†HÞÿ¯øbꏝA¹9“Vž¢Ÿ|AùAN¦‰x'ÓTœI3Ýÿ´oµZk1>9ÖzöÊ^DØßHÒk_	8úJÀÉi?ûJÆãzŸ}éûþ
+\†*Ð_—l]ʦÞ2pxH«:ËÖœeÐñ2ìœ\Iܼ²2H-Ã.DI›ÛÔSm÷‚Øÿ½©£zyÅ•¢ìè››®Ð£”¤ÇþS´§g܇“ï>ü8\|•‘ˆþ`
+endstream
+endobj
+402 0 obj<</First 975/Length 961/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚœVËn7ü¹{Ùv“€! ˆobÏ“áƒ`/Š6ÀþûTsW‰-ïczõÎV±Š¬îÙ¡ÊRj¡ÊZÔã+Cã¿RŠw÷wzaå(Fá©ET¢ "#ÀÂE5À"EG€EKÓ	n¥	¶bseñb}DÑ‹KˆË(Þ
+0:һEÁeH¬ÁѼיè¸ô	to;6³÷­ø‚çÞbRÃLÃEZ¸i
+Fƒ]mÁˆ/‡³øØ<VnÐ0™\h˜Çz
+çÉ
+q–gä´¿65mj84lžCÃbÓ›aÛs¡á:Ðð™W‡FŸvhôyÎCס1zœ.
+€ª¡ê“aEˆ'ÃQ¹íƒž§†ð…=h'ÚHÄ‚ö¥`À†¨b»áj@£ÅÁÖ
+«á~@Ã"”ŠÃ¯qöØ–x윰iéqºqÄÒãtÑ˨F´J…ƈFB› “ÑŠF¢2TÑó8˜¢­	û¨¢7!R”£9Q¢Âá ¢¢ýB^%zˆ`\5=ŠÊ''Í'F“
+³É€†S0pLêÑHÄÐè, -õüùæW^ÃH¿Ù¼,¾y
+?:?½Ýü±»ÿëúvóú’ˆ[WW¸à}üqõ±®8Õðn¯?ßÜ}ùÍ}Fƒ(·â¤)YcJ“"mˆåÒ OšêkLœ)®I<%ñœÄŸŠ›Î‘4)Ò’x[cÊ“"}ÈXA’º†DkH¼†´¦$9ñ²tâßm¿>¼Ø~ÚÝ_?ÜìîÞ}û{»y÷y{{s·Ý¼Úü~ým÷ÏÃÔo»ÛÝý‡ú¬–ÃßÇŸç´â7$Ê[ýÉðÙg3^…Ž>NœÉ	8çà²þøà×¼åÌØxS¿ð»{ÂLÏ™¹Õ©æ–§…¹êñŸÜó½#Çw/›Ò¤©¶Æ”åL}бÇÁ«ßôïÐÁÃ;ÿø§´Óp®Ëàztž–çFÂs#qÞs𑃟‰xJâ9‰—$^sí@mþò œÀ{ŸŒ—’ùr2_^–o—^;Ÿ½ï¼lH“ødÀœ˜“s2`N,É€%9À’`‘\‰&HZÒPòñ,Éç³$–‘k M¬É€5°&Öe<ê#>™¯&óÕä
+ù_
+endstream
+endobj
+403 0 obj<</First 977/Length 1125/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÌXÛnGý•úž’s‚
+ÚCnŠ¥ˆL)PS0åÀ¤`"¸S0q,`H(b¬êæJ
+µ¸…FFï¡5unN¡7QÀh®×cíjñC ‰R€eΪÌ<—ªd‰õK¢îO‚%we b8ÁÒTC Ql“ÒŒe%cÀ}­ª¡[kŸ€Ö,¾H'U+øèÆ-9ähi,«)·pÈÉPV3F	9góRa™FA(ëVJ@¶ßQ•¬Œš`eThHª›”d©ªV¡Q’æ¿B£ÝQ…FMª÷¹¾B£%ch™‹j ¹'e ´Ü«2P8ŠYØEÓ@ö,U5*”“rÒ¨°UÚÔÍC”tH1:H(
+σ
+V5F×¾WRǤÊØ³f('Lk†PåÀ¢ÊH;kQ$‚ëÚí4ZµkÐèZ_M"w­¹¶·DíñŒ/$jNÑ+A°×ðòåtœ`¨›~ÂìMo$Ûòrúe¹úkv?½¹E¹õÒ«WÇxÃÓ/N|qÆSGðÂu‹oÎxº/ž}þKrúÏcxÞâ×÷Ïùìænqû
+Úúˆtùqö~~ña=_…ø"Noçÿ¬/îïnÓåz¶ZO¿N¯gŸ–¯§ßWwkxøyy3Ÿ^¯Þþ±!~;ÿ°\ÍwÌ7óÅã‡õ‹›‡¥~kÞÖ)¶ÑÄ•óýüýr5[ß-o?}œOï€YÝß-æ{éǨï–÷ËÕ|†‡¿ëÏ’…c ›y:é3B<‡´dÉA†íøxPÉΐ
+kø1g¯s¶ˆr²ˆO×PN6:Iìæh¾÷^Ƽo»¼úàÍ{þµLMFŒŸi°M%éd6ÎÞ!áϧzë)	}€9Õ`g$öp‚ïï¹>xŸ›Ùx:W=;
+…'”kX=COMl:©B#*û:ó“E8ŠìpíQð¹°v¹º²gH˜¡\¸OrõÁ›Þ}ðøäÄg'žœxvâe¬›v·™âë¾T‡Ûïà6ÓÆDvøîÃçèď¹ç->û’”É3£;ې¶8pï ÝV»sâ@ºö>'¾:sÐþC£äŸ|BcÓ½?ìȉšnû%だ^B<Ãv[®Î-4'Þ9Û}þyp¶ãŸñÏN¼8÷[œøêŒ§9ó鬯8ïÝâaqް8GX؉wÖW†ê»F—Ñúk¼•ǧ_Ê[üò/åÿOWßä¤~¹7¹Ô]orGðç~%8‚ýJp&"~Fâ_
+endstream
+endobj
+404 0 obj<</First 975/Length 884/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚœWMkTAü+þ€é™Á³ Añ$ƒ
+!ÿÿ`u'Q³ú*—Ý~o«ºº»fæ½"Úz"Ölå··mù=Û°‘îFdMÔ3ØMBhoŠ£éšH3$D H—yÕšLªÏ̬³ÍQôÕæ,L´5ŠµÛš)j½EÏÌ(!<é&m÷T7mÛlHÖ{¡q¿[ÁQDß…Çǰ" ø±‹q›qˆ§lä¥ãR5Žš4’‘éM“áа(~ðjÖ¡á«ø˜RhÌU@–$#[[3ÙRÔ&4b&c¼«éÊ®®ñƒôj{NDÕ÷\MF5>1ÿQ#©HuŽK)kÀžc]’>eƒ(“LÆ2D^hØN
+†®ŠÙ‹™“UU£Ã p?«‚ýi€4b[¹ð¡½&QÔØ£éP¹1 at Gd–+©œA*•Zo[šªf˜§zƒ³¦VÜíˆ*߆†K1 áµ74¦s¥µhP—ôŒj¹FFЈ13‚F¤Ú¡±G1 ±g1f³Þ‹±y1¢–]FQ-ŸÑ±þs’:¢œ¤ŽÜ;°Û4§¦»Mw1¼™Y1 aQh¸Å€ÆÌÎ-ØÌÎËÌVv®…Ο??½l†Ùôöæôªùé"«¨«·§×?®¿üvºøŒõ–·^¼x
+YyZ+é¯:YÏ$ë!ýÕ ëÙäÓ¬sϧ¯§gP?
+endstream
+endobj
+405 0 obj<</First 976/Length 1028/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÔXÉn[Gü•r7gz›À0 ,‡ ΂HA‚Œõ¬PHƒ`€øïSݤdÅ’6KzêGVõVÝc—Z“eÿ­¥Us7z¡FnŒBØY¸\«ƒ¹©f*¢f.ZÌp,Ö¢3ÀVLÜ‹Í
+v°´2†ƒ…Êd—9ì>*Ú“îÇ£Qà;¬@ˆ‚1aM€YýµûC[i2½tÏ[#
+î\»?ÍFs1zÄU at zxäÑ1†áÁÞ«Ù<+mF3
+ÕæÑŒaùŒ/¨Õ`(,wÊf)»gCû)¤1ôŸk0&,/ÆK žžKo…Ä‹fMîˆ¡ÞQ%Ò%÷‚†‘ð‚ƒ‹}1FTŽfÓÎEùta ÆŒnà®ä^ ×î^à€{'‡ÁêžÚÉäCÅCž1H]›˜¤ƒ³ˆîŒôt‡NΘâç¹@FôÕ3@©èWp£Çd¢%¨4¸ˆ1|6ãˆÌº[ˆ1=†TĘÝG 2F¸M·–N‹´¦n,+µ¡ŒKƒ1‹ tX­ÂòQ¯ˆ;……3/2bD%ˆ¡3ˆaİĈÕ¤&±‚Q–XäËÕ4’×òòåê–`§^}‡üV?áqx=_ý¾¬¯o77_PÅç7˜qÿüÕ« ÅžYVÚ/›ëeww»Yž¼„à\Æ	^ý#æÛÝë»'L™zMOÁ?DBg’þûix¾Ç$~æðZ“ø–ÄS®?ÊIÿ’ÄkoI|R_Mê«I}-©¯%õ5Jâ9·_–Ô×’úÚ	ú^,í¿^ÞlwëýívsñþÝòèúqõzý~ûçþ#ÔWÛ»íî²¾¨åøsõ_»:·~³œ½Ý/;ÿ,8gw·7›Õù~½Ûpöëîvcöûíõ²z½»øí@üry»Ý-Ìo‘Äf¯ßl®½…³ã{×õI?9_ül¿[N98çà’ƒkn§ÁïO¾žó>N7ü;zÄÏ$¾Õ\ú-©lKJÛ’Ú6IæŸT·Yß³œ¦°ÿgëH˜IÕdJt’ÆoJjLI)¹À”Ô˜,Û ž• +2e÷˜“4·ÜÞð‰?äß½|"Hr™Y“øäYÍ=‰IüÌá%yXËI"Ç&ž½ºý{
+endstream
+endobj
+406 0 obj<</First 975/Length 975/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚœX[o£Eý+#ñNf|™‹´Z	ÁV°<U}¨Øh©TT‰ý÷;	[PC¾ÃCçË9¶ÇÇžºm&Zji&VlÄ»—eñÞñÒÂÀÓ¥aÌ"–ÐUdVkQ
+°¶¢3À*%p0î<+.AW/>ÓKo+ŒQzO?³Œ–àUF0âÌ`¤0=À&eÕ
+FGŒ‘Uéx™ŒŽs#޹$1ÖH†©’Œ«'ci-¨ëÉ€
+ÆXÈàT¬…dÃ`E’!Šx–v †GpCBÒ%ˆÑG2c´`LÄ=j…ÃÈlÁ˜ˆ13ÆDŒ•5˜ˆ±VxF!´ŸuX3½Œ¢(oXVê"ªdM:éØSp šõ[k¬£
+Ô%2…ŒêÙGO{æ·£g]Ð:*2ðŠ#e¬Ñ®UÂBŒê;Igt„WÄXÑ%^c!5X½XžÈуVqTX³XCçÃZ°FÄ@±M"Ó(1F'¼4Ì„F¦ÉÐýáI¢µÃúÞ²A¼!†g¦ý™B
+½¨¼/îÕ‹[«/xλrލ*ÌÅ•zqõâêÞ'çSU*oT2©*ÊÁ9UÅ9ï[TÅ
+Ò^_¡¯ºçd•EÁ•Vå†U9YU)Ô8ïÎyß"ëçÿüè¦a]õÚÊ|¾¨d슪	0
+endstream
+endobj
+407 0 obj<</First 974/Length 1279/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘Mo7†ÿŠ€Þ³’¢$ à¦=M› qЃáƒo\în°ØÍ¿ïKÍÐhíÁ6gýò!ER£™
+qÊi*$Iªý-©‹ýÕ4Éd>mÍŒ–ˆ‹=Q#œãÆ”¸ª”@œqYR™×¢FfM:™kÒbdn©f#sOµYrªÝÈH¡‰‘…RëFF‚FI½YàšÙЦÌÍØ¶–‰.ø5U£€D†/ð'5~˜'`qe€‹…™Ì£´Ïp©<< Ö‘IAŒ:†uÖá²±ñ4[Ý,š"FgóP\öfʉò¨&jBsÎZÍ9«Â9kM4ç¬(ÿœ3~Ñœ3*L¬F®S"™,ƒJ°,µR£d[BEŒ±Ô(•n1Ð/R+]©ˆ¡ÝbTĘWT£6‹Ñ£ì‘$µf1°,ê6¥!F¯£IâL£Xj1
+ËŠc%fÎæÑ1Il¥+Hˆ%[›enb”<<c´¶tİKXˆ¡b1°@Ö1Æ"®6š£e61š€fÄhpƒ…1:Ò€U’d¾šdìEBBÓø¬ÁR‹Ü“Œì
+aÓaÀ±¥L7,ë¹Nœ°/È,l
+¶þ*ŠƒÿUXÖKÅvÁ„ZVSƒU¯Ã²)eì#¶h(6¦Âxô]Óó盓$ÝvôÏ›óæ-’”qùnóÓþðûÅÍæíUêöÉ‹‹¼¸œbrŽÉe…Üöí"/kä’E®1z]#oÝå-Fï«*ãm*9TÈëj¡X2±®‰ÑKLëj©1y¬«¥‡&RshÄ4ÖUíUåPÝ5ÖU-±¥jL^cÉ<ÝÕwŸ.>lO>·‡”ŸåÍéöÏãÉÍõÕnóîxq8nÞl^_|ÞÿqÜür¸>^ï®~Ü_n7¯§¿ÎŽßn?îÛ[ÏW»Ëíî8.¿ß]Þ»°åOÏòˆm.ßm?ìÇëýîôó§íæ=4‡›ëÝö.òCÕËýÍþpfZ~ÎÿiÔýY™¤Íµ¼_Æß¶—(Å7”§ÅaœŠÃãGé9Ôãtœåwy ðõ‹#ùØ
+[vy¬©S¬«ë*źJ±®R¬«ë*źJkºzwâSÑc]¥XW9ÖUŽu•ƒ·ãÀýø6D¬µ\biü„àX¹…nÜë¯ä]bý•XeuÇó½7¼ñÊ8ñªn‡¢”óØzb÷g‰uZb;Yžîôÿó±ïßz‚´¯ËV=AÞ¾`+-ãK”ÙãôÍËWÿÕó:-ëQû.ÇFt|•³솸QÜP7ª͍¾”Ýp29™œLN&'““ÉÉädr2;™ÌNf'³“ÙÉìdv2;™,N'‹“ÅÉâdq²8Yœ,N'''''''''''«“ÕÉêdu²:Y¬NV'«“ÕÉÕÉÕÉÕÉÕÉÕÉÕÉÕÉÕÉÕÉÕÉÍÉÍÉÍÉÍÉÍÉÍÉÍÉÍÉÍÉÍÉÝÉÝÉÝÉÝÉÝÉÝÉÝÉÝÉyÞ®±U¿ðJ_ÛÔ¥ó¶Y'Í_•Þ»«P^ΦÚ©Ï'ÑJ-­×¶µKƒ4¯ÇÖÀÒ4°4
+,­<º´¿
+endstream
+endobj
+408 0 obj<</First 973/Length 1027/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÌXMo7ü+ú]I¤H	$é¡i؈ÝSC’EÚÀ/0\ ù÷r߇[û½P@>æîކœ!wßj‹TJ9©œ˜íK½ÛI…ªšŠŠ=ÕêБª–r¢l`*‰š±‚†‰@g`owpK­:XRÓb&)Í‚ž¤
+FÒL°TY-(I‡¹¦NÆÃ”ºÊÕ/µ4Äx™s6"[››3š‡SáBa[ÐPXñ¢«WeåW5
+¶ŒŠ‰h€˜Šzξ˜}HÙkk8ld˜Š¦V/«VD¬½?Ä5R1#uø
+v¶
+9z—í²Qý*r·M`.V‹fDV†àBÍÎ	µ8‹¢n9”Ñ9W©
+‘³ ¥•VEd²¶VZYƒ¥#;KG޵ƒ9ššÀŽRL%ì¬nŽ
+äŲÁÎ:Ü—ÃYaÊœe°Í›±Œ–¨8¦Š×‚&SõZ°ŒêÊ2‘͵fÌ*™rÍV¶)ÑŒie:°µM¦6ür˜DȡƬ9´9rhwäèÞÆ‚ƒÆÚdÎæ•Bg«ÅÖX`;cÄ,j‰k¶8®ÝÏib2EZ:"¯¥ÜN6aŠ;%fŸ›M¢¢p¶Y{ölyÑ((§·Ëk&Ýœ-kx¹\¿|uvö›ÂXܱqlcñÔ‰c'´•	myB[ŽkëC&°qm½ŸÖƸWvPKë:!M&¤É„´o[綁'¤‘„iiBYPV&ºV&¤å‰®åµAG\šö>KS•	l¼m*ÚZx µMHã	i<!&¤Õ‰¶Õ	meB[‰OdŽK³w‡ –)Zã·>LZãP
+çç8i‹C%Õ8t¢#j@üF`Ž÷*þ;‚—·8”ê⽊?5ì…8š?Þ*ahü•[‰–Âr‹·*þ~Â-Þ«ïU‹ßW-Þ¬o–„ŸrªW¯ßù^
+g×­šºîÕpþñOÛ^ûº«o_¯—ó¿¾=;{ï|Ûó—Ë›Ï7-$o‹_é—Ë/Xxû˜Û÷íŠÚ£~»ùÝQ×TýêêúŸ»Ÿ¯?mn?Ü}ÞÜx{Àr¾¼ùðmó÷ÝÿP/7_6·ïòOP»þ½ÿÑTpÕv±[W}ª’¬»Øû®òWù”«»ÕG]ÝÏÏõˆ«ý{¨§ëj)[W×÷í´Ýßßsu»}zè*tuk<tµìŸ ÔCW;Ýc¨'ìªî\õÑH¼~ù¸ïj9âj=íªuµ–ƒ_rÔÕ÷†c¨§ëªà5W×=gòoGí?O
+endstream
+endobj
+409 0 obj<</First 978/Length 1156/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘MoÜ6†ÿ
+A—œ/À@?EÀFšž‚ÒÖ(ÒÞÂpæßwf(­´±)]rÐ!ò„ûîùp¤wÅRSN¥%¨þ—“°ÿ•T2zà£ê&ài		,ÀœPš%QvB"ò¯#&Ï‹”¸Åˆ%Vò@R-Ńš*Å×5U¯·¤â™)§†>B&Ì>—êsÔ'»äæÈòð^²§'C1K€âS'»`ÌÂëz¶ÙQõ,lö¯U¶1æ’â`êSµÈT¿°‰µDû@Õk°]šÄXKÐg*Ù"õ,R”â:[OPM€^M>æc‹ZD’€ ²T‹$t¶Ô|m†¸úԪՐÀh‹Gh‘ÕðY
+
+.&m³%@+¾¢j5Z‹±š0kDšÐðzdû\(¶ß6º¨¯\KB_‘‰1ÆÐû!"²È!V#µÐIB_¹m1Jô”C‰¦R«QcLŒ5öȶ5öȦ†{Ô¬F‹=jd½{db*ÑIŒ
+F–jQ
+&‚â+7`V¨hΉÐ`[T¼Q#ò–µeY„‰¸„Îjplm¶b]m‘Õ¨9Ƭ†²Èj(D«­«Ö4¶ðì‘ÕhÞ/Z qæÜ›†Ed7FÏRØï•ЉEÞÞjÛÃèý¢val1Ö“zdw³w§foo«Áûիӝߤ`·õ›Ó/§?ÿsÿøéãÃß77öÑ·ýŽö®T¿>üªûE%{ª·÷ÿ=ýpÿûùñÃÓÇóÃ[«³N·§×>Ÿÿ}úBõýùÓùñ]þ&§éßû¯êçwñ„²	÷'”ПQšàö·¿ü.%E¥Ûï~zssóÞ—*’§¥¾6b§»?ùÿ#ñ]ލ".¼tHaOu\ªv³OT¥ýÁ¸¦Z^¦Êm“*Ò˜j»ðº¨^ ª{ªãR¥2Q¥h0cÂU(: ª›T)©_x]TÏ©í©LµÎTR
+ƒ¤¶ÂÚê€jý‚j¹¦*Cª\^2¤ÊyOu\ªŒU¦NUûÏ¢UP•Mª<v+^ÜŠÇnŲ§:0ÕÙ­ºù¤øÉ%Wv<ÀÊÛXÇv%‹]ñØ®öTÇÅ*³]I·«øõ(W~4ÀJ›XeìW²ø•ŒýJtOu\¬uö«Úý*^÷*^aÅVÜÄZdžUêcê´§:0ÖÙ°êdXÔßÀVXó+lc;–.ŽUÇŽ¥yOu\¬:;–NŽ…ýåtuð*0Ùù«Ž-KËÒ±e©ì©Œu¶¬6Yô÷öV½äm¬cËj‹e騲쩎‹µÍ–Õ&Ë*ýHc5¿Œ•Ú&Ö6¶¬¶XVÓ=Õa±úaO`Õ<YVî§=+¬4ª[Xý@i€ÕOŽ&`‹êV?iÚQk±vËÂÖÂVX§×÷çXë6Ö¡eù¡ÚØÐ²ünGu\¬e²,?!¬ÚÏ×Ý:°,Ú|ËòcÈ!Ö‹e-ª°ÊžêÀX'ËòÃÓÀZûñéëÀ²ˆ·±-K`CËR€=Õ×bñ¿
+endstream
+endobj
+410 0 obj<</First 979/Length 1190/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘Án7†_EOЕH‰"À@ÓŠ6€
+7=9¤í"pØ…áÍÛ—¤fg&µ9sÉaÙÐZ)}âê±0`Ê©0ÔÔ›ý¯TÍ T¤˜Ñ€˜Á	¨›!	+¨9Õb#XRËd¤†h¦Öíq¬‰²=Ž-[d$Må#=qe38±gGIRìñš“4{¼êG¶¹°e,ÙÇÔ£ˆÍºj<ðT}šÅ¨êâAô$K`Yjõ1M<fØ4@#‹b‰š˜_Ó„–­©K/–­iŽÎ>fá»['{Í!Õý4€t[—.²=Ɗ㢋å P˦˄j±EQâ€`Q¨©%–ƒ(Au„
+ÆLu1ÐØÖKšƒÀ'¤9ˆ,Š:CGËÑ5;È®9$ÛfuÍ!>E
+â;©‹Áœ=JW‹-Gç„e,U÷1ë>.	Ñ÷“A-C̺­Ë¡û‹U|¬%lNM?|.:q$ßUÖÄEst/8ÝP´PKsØ:DsˆÏE7ÅwUjª-Š4-?/;VûXOº­C7´‚ÏE$UÔòÓ-Ó‚EE¢VIµZYœÚ
+‹ïy}Cߘ*–‰ªž™NµcsEª¸IUOåˆ*¶™×ìõœ*Ö=¯Síª<¨Ö!+ÕNUئJ!ÕZ^R­yÏë¸TGÅ
+Áuª8$wEµTË&ÕúTûÌköz*íy˜ªLT[Ta¼Œ,TK–
+åÊÚ{3°P®¬¸ãu\¬¥]°NrUF·r5¸]ÁæíÊ¢!ÖY¯¯°òž×q±Â¤WÖÆu¬Ö6ü
+k°n^¯¬Wa…Y°¯°ÿ
+endstream
+endobj
+411 0 obj<</First 979/Length 1167/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘ÁnÜ6†_…OÐ%9œ!	ÜôP´l¤é)È!m›À[.м}ÿJ+¡õH—tˆó‹qÈo¸úE¦ž)Đz.šþÏ!%R!!5k©!W-Pd=PÑŠx(©H¡°¨ÈÉZ(H6Q‚}œ8H³	é j¨½«h¡Uké¡‹ŠCïúxÁŸ˜5¨d(©ª;ée/ˆÍÉÚ00ЦƒÈ:Á%U‹Ã
+I¯­çûñV·ă:¼Ïvëv¼Ã®ÀäE`·ã•·u\¬DM*CL¯åÖqõVÙÄŠŸ²‹µ^]£^À*{QÆÚ'¬%Q‡o­±+ocm.ÖB°æb-y/ê¸XÏXe–¾Âš¼—@ÙÄZŠµ_]£^ÀÚö¢Ž‹•Ó„•ó<¾vÖX½—
+«æ½¨ãb­³aÕÉ°ÒØW­±:†•ú&ÖêV]«ú†UÛ^Ôq±¶Ù°ÚdXÓ–s½p>¯RÛÄÚ|Ãj‹a5ß°ZÙ‹:0ÖÙ°Ú0¬>6ãkªäPÝÞb5ß°úbXÍ7¬÷¢ŽKµÏ†Õ‡aµqL±P~‰ÿ‡º½Áê¾_õůºïW]ö¢uø•ߨ¨ãüfÕq«´½½êž[ÙQЗçVvt´uT¨v°5An%ã`kÚ/«´µ¹²£3êìU«¨ ¶½¨ãBMi‚š†Wñ8ñ[ATÚ„š¢5ñWŠ.ÔTö¢µÎP‡S•qº@mžýçm¨âBÍiÁ%.Ô÷¢Žuìåuèì,ymTÍsgcõ¯
+endstream
+endobj
+412 0 obj<</First 976/Length 790/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚ̘Ïn1Æ_ež€xüglKU¥
+¨ œ‡
+r¨¨T‰¾=ŸgÚ¬ L|áàC6³ñgóÛñ&“!&
+CÌëx/$e¼qH#¨Äµ
+)PbSÒ¡)]H‰ŠNO™JTq¡"*ª$ºrjTmz§ª+ç@MWÎLM‡r¤®+ç„Ät~Έtí\éâi[Þy[â¹[æ¹#Rƒˆ-÷ˆt´Db˧léxXþPàa†Pàa!ð0
+‡a<ŒCÆ©®"ù颽òê1Æ!¨ŠqÆ!GE팣2"­‘¢qTœG…‡qTxGÅÁ8*<ŒcŒc,o
+ÆÑàa
+ÆÑ%ãh‘z´‚H=š`‹ØhE¤­Q2ŽÖ©GÇV2ŽŽ½d=R2Žãèð0Žãèð0Žãèð0ŽåÀ®¡¤à¡Ø?””c$™•ƒCFuFAd¥Êl£QÕ
+›ÝVéˆÔƒeå`fD:ʸ)”ƒÊÁå`†‡r0¦e±Qx(3<ª­ãˆð0Žãˆðgg»Ë±›"n껏»·?ö÷·7wßÏÏ1ta÷óúCõéö›Jfª«ý¯‡7û¯‡û뇛ÃÝ|6ÁîýîÝõãáçÃ_ª×‡ÛÃýçð*ÐÓëËÿ^êÎgOñ‰j½DÇ—ÙiѺäì“×#ûä2­K\ò¼Õ<¸ä™'¢eÉñsã’k~ýƒ\&¢uÉ›K^Ž5?Š^’žˆÖ%¯>ùVóê“ËD´.¹¸ä²Õ\\rá‰h]òâ“o5/>¹LDë’g—¼n5Ï.yå‰h]òä“o5O>¹LDë’û=\Ûjî÷p'¢uÉý®m5÷{¸&Ѻä~×·šû=\ç‰hYòì÷pýXóì÷p]&¢uÉÝnü3†r{¸ñGþ´h]òê“o5¯>¹LDë’»=ÜxRòåöpãÁÊiѺäÅ'ßj^|r™ˆÖ%w{8Ž[ÍÝn<è:-Zü·
+endstream
+endobj
+413 0 obj<</First 976/Length 1376/Filter/FlateDecode/N 100/Type/ObjStm/Extends 396 0 R>>stream
+xÚÌYÛnEý•–xgûZÝ-E–œ€Ø`ñ`ùaOŒÁìF«E"O]ºf¼¶Ûc.
+󐸦ûô©:]Õ—™õÎcw>ô7ôŒ³Ü‘Ë‰Œb|â–j|&l°&8gwo¢'p&ñðMbâLbæ
+>ŠŽ‚>DGA¢£DG‰h±’Ðb°D¤7£Å>J1At”Šû¨XJ¢£b-‰ŽêM5P}qú(¦¤&m­d‰,ÚÕŒåyD11¸BVEI=扑&Û[gb"œwk¡‰µT±XwhaÉZ-¬Yªi´
+ßj(Ø60T7Íšu­{]ùº÷éî¯çŸÞ
+7dËQÈ•{öú»·GGW¸rtbpéœêúc"wH”ç‰\~ŠÈ•C¢ò‰â!Q}Qx’ÈI™>Odá)"›‰Üß&ºäoQ-‘Zm¡cOë²m3ð¶mÞêfPÛf€FÛ9j5ÚÎQ³‚AÁ à¤à¤à¨à à `¯`¯`§`«à&Ç•
+j4p)
+\rQCÁ `PpRpTpTpPpP°W°S°S°U°Õ}´ê¦[tÓ-ºéfÝt³‚AÁIÁIÁq\xÇòѐ{b,GãšúeX_ßnn¾ÀÔQap…´ã+Vâ†ü°Ýý¾¾ë£ý,úüãúýpüa?ìèÌá3éøîöf³z3l°q:­~ÞÝî1ºï·×ÃêtwñNF¾>lwÃ8ô[<å6{~üzs}ïé|¿ÞÝë}è%ý¸@b¹bA>Ų]®:tÝÈ
+w9Y9Ý»}ˆmS“úè÷ù¿?͝^NÆý™œ7ÁOÆ)EI’lOösÆy?5ò¼!öÅéÃKd–¾Lк®"3þo2½üPÀ6ÊOr‡z¹ä:Iî~ƒñ²!’ä–Ùò¹+Ðû)NèÇ4Î g¿{>ο
+endstream
+endobj
+414 0 obj<</First 168/Length 314/Filter/FlateDecode/N 19/Type/ObjStm/Extends 396 0 R>>stream
+xÚ¤ÑKÃ0Æÿ•ß—Ë%iÑa¢EëÓØCqak+¥‚ûïÍ¥¸±!³a¥_>îwßÝ‘"Ò`
+ÿ
+H¥Yd -±°À rP(Y8P†!… 1
+	zt´s,³Ð`·P2Í}Tv¤lÈŒ"‡|täÑÑ.:Z‚Î|.Jÿ=Üú×®¯†ºkËݧ/íÆ÷MÝzñ(î«]÷5œTÝtMׯp†ÀŸœáz±­®Cc4aï'±\…e¥‹µ(@‡C°ÿ,Êzh¼(¶<Dô"ºOÃ%ÅÕwaå}îÀp%v¬<}Úûò
+ñ¯
+'ìuÈ#à¡ë?ªæ<AÉ„š4”v¿õÙ´„`S<pGÀ›¯6u»½"”g)‰©9R&ÉËSrQ2¡þ%~
+endstream
+endobj
+415 0 obj<</Nums[0 416 0 R]>>
+endobj
+416 0 obj<</S/D>>
+endobj
+417 0 obj<</Count 29/Type/Pages/Kids[418 0 R 419 0 R 420 0 R]>>
+endobj
+418 0 obj<</Parent 417 0 R/Count 10/Type/Pages/Kids[2244 0 R 1 0 R 4 0 R 7 0 R 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R]>>
+endobj
+419 0 obj<</Parent 417 0 R/Count 10/Type/Pages/Kids[21 0 R 23 0 R 25 0 R 27 0 R 29 0 R 31 0 R 33 0 R 35 0 R 37 0 R 39 0 R]>>
+endobj
+420 0 obj<</Parent 417 0 R/Count 9/Type/Pages/Kids[41 0 R 43 0 R 45 0 R 47 0 R 49 0 R 51 0 R 53 0 R 55 0 R 57 0 R]>>
+endobj
+421 0 obj<</Subtype/XML/Length 4313/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-701">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+         <pdf:Producer>Acrobat Distiller 7.0.5 (Windows)</pdf:Producer>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">
+         <pdfx:SourceModified>D:20060913135412</pdfx:SourceModified>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:xap="http://ns.adobe.com/xap/1.0/">
+         <xap:CreatorTool>Acrobat PDFMaker 7.0.7 for Word</xap:CreatorTool>
+         <xap:ModifyDate>2006-09-13T11:03:11-03:00</xap:ModifyDate>
+         <xap:CreateDate>2006-09-13T10:59:03-03:00</xap:CreateDate>
+         <xap:MetadataDate>2006-09-13T11:03:11-03:00</xap:MetadataDate>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/">
+         <xapMM:DocumentID>uuid:98369b0c-c38a-4f32-b83c-2f1e7bd54be5</xapMM:DocumentID>
+         <xapMM:InstanceID>uuid:9c92c86c-b356-430e-90c6-0a910d1b1a0c</xapMM:InstanceID>
+         <xapMM:VersionID>
+            <rdf:Seq>
+               <rdf:li>2</rdf:li>
+            </rdf:Seq>
+         </xapMM:VersionID>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:dc="http://purl.org/dc/elements/1.1/">
+         <dc:format>application/pdf</dc:format>
+         <dc:title>
+            <rdf:Alt>
+               <rdf:li xml:lang="x-default">Content Models for RuleML</rdf:li>
+            </rdf:Alt>
+         </dc:title>
+         <dc:creator>
+            <rdf:Seq>
+               <rdf:li>David Hirtle</rdf:li>
+            </rdf:Seq>
+         </dc:creator>
+         <dc:subject>
+            <rdf:Seq>
+               <rdf:li/>
+            </rdf:Seq>
+         </dc:subject>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
+         <photoshop:headline>
+            <rdf:Seq>
+               <rdf:li/>
+            </rdf:Seq>
+         </photoshop:headline>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>
+endstream
+endobj
+422 0 obj<</CreationDate(D:20060913105903-03'00')/Author(David Hirtle)/Creator(Acrobat PDFMaker 7.0.7 for Word)/Producer(Acrobat Distiller 7.0.5 \(Windows\))/ModDate(D:20060913110311-03'00')/SourceModified(D:20060913135412)/Title(Content Models for RuleML)>>
+endobj
+xref
+0 2242
+0000000000 65535 f
+0000010198 00000 n
+0000010445 00000 n
+0000010815 00000 n
+0000012294 00000 n
+0000012530 00000 n
+0000012874 00000 n
+0000014094 00000 n
+0000014341 00000 n
+0000015773 00000 n
+0000016021 00000 n
+0000017829 00000 n
+0000018078 00000 n
+0000019693 00000 n
+0000019943 00000 n
+0000021931 00000 n
+0000022181 00000 n
+0000023998 00000 n
+0000024248 00000 n
+0000025657 00000 n
+0000025907 00000 n
+0000026308 00000 n
+0000026558 00000 n
+0000028136 00000 n
+0000028374 00000 n
+0000028744 00000 n
+0000028994 00000 n
+0000029548 00000 n
+0000029798 00000 n
+0000031180 00000 n
+0000031418 00000 n
+0000032065 00000 n
+0000032315 00000 n
+0000033271 00000 n
+0000033521 00000 n
+0000035056 00000 n
+0000035294 00000 n
+0000035611 00000 n
+0000035849 00000 n
+0000036889 00000 n
+0000037139 00000 n
+0000038211 00000 n
+0000038449 00000 n
+0000039973 00000 n
+0000040223 00000 n
+0000042101 00000 n
+0000042326 00000 n
+0000043992 00000 n
+0000044242 00000 n
+0000045873 00000 n
+0000046123 00000 n
+0000047355 00000 n
+0000047605 00000 n
+0000048069 00000 n
+0000048319 00000 n
+0000049527 00000 n
+0000049777 00000 n
+0000051078 00000 n
+0000051316 00000 n
+0000051677 00000 n
+0000051826 00000 n
+0000051975 00000 n
+0000052123 00000 n
+0000052271 00000 n
+0000052419 00000 n
+0000052567 00000 n
+0000052716 00000 n
+0000052865 00000 n
+0000052916 00000 n
+0000052967 00000 n
+0000053019 00000 n
+0000053071 00000 n
+0000053123 00000 n
+0000053175 00000 n
+0000053227 00000 n
+0000053279 00000 n
+0000053428 00000 n
+0000053576 00000 n
+0000053725 00000 n
+0000053874 00000 n
+0000054023 00000 n
+0000054172 00000 n
+0000054224 00000 n
+0000054276 00000 n
+0000054423 00000 n
+0000054571 00000 n
+0000054625 00000 n
+0000054677 00000 n
+0000054729 00000 n
+0000054781 00000 n
+0000054833 00000 n
+0000054982 00000 n
+0000055131 00000 n
+0000055279 00000 n
+0000055428 00000 n
+0000055480 00000 n
+0000055532 00000 n
+0000055679 00000 n
+0000055826 00000 n
+0000055878 00000 n
+0000055930 00000 n
+0000055983 00000 n
+0000056036 00000 n
+0000056186 00000 n
+0000056336 00000 n
+0000056388 00000 n
+0000056440 00000 n
+0000056589 00000 n
+0000056738 00000 n
+0000056888 00000 n
+0000057038 00000 n
+0000057091 00000 n
+0000057144 00000 n
+0000057197 00000 n
+0000057250 00000 n
+0000057303 00000 n
+0000057452 00000 n
+0000057601 00000 n
+0000057653 00000 n
+0000057705 00000 n
+0000057757 00000 n
+0000057810 00000 n
+0000057863 00000 n
+0000057916 00000 n
+0000058066 00000 n
+0000058216 00000 n
+0000058366 00000 n
+0000058419 00000 n
+0000058472 00000 n
+0000058525 00000 n
+0000058578 00000 n
+0000058631 00000 n
+0000058684 00000 n
+0000058737 00000 n
+0000058977 00000 n
+0000059126 00000 n
+0000059275 00000 n
+0000059328 00000 n
+0000059381 00000 n
+0000059434 00000 n
+0000059584 00000 n
+0000059734 00000 n
+0000059884 00000 n
+0000060034 00000 n
+0000060184 00000 n
+0000060333 00000 n
+0000060495 00000 n
+0000060644 00000 n
+0000060794 00000 n
+0000060944 00000 n
+0000061094 00000 n
+0000061243 00000 n
+0000061392 00000 n
+0000061444 00000 n
+0000061497 00000 n
+0000061550 00000 n
+0000061700 00000 n
+0000061850 00000 n
+0000062000 00000 n
+0000062150 00000 n
+0000062300 00000 n
+0000062450 00000 n
+0000062600 00000 n
+0000062750 00000 n
+0000062900 00000 n
+0000063050 00000 n
+0000063200 00000 n
+0000063350 00000 n
+0000063403 00000 n
+0000063456 00000 n
+0000063509 00000 n
+0000063562 00000 n
+0000063712 00000 n
+0000063862 00000 n
+0000064012 00000 n
+0000064162 00000 n
+0000064312 00000 n
+0000064365 00000 n
+0000064418 00000 n
+0000064471 00000 n
+0000064524 00000 n
+0000064577 00000 n
+0000064630 00000 n
+0000064683 00000 n
+0000064736 00000 n
+0000064789 00000 n
+0000064842 00000 n
+0000064895 00000 n
+0000064948 00000 n
+0000065001 00000 n
+0000065151 00000 n
+0000065301 00000 n
+0000065451 00000 n
+0000065504 00000 n
+0000065557 00000 n
+0000065610 00000 n
+0000065663 00000 n
+0000065716 00000 n
+0000065866 00000 n
+0000066016 00000 n
+0000066166 00000 n
+0000066316 00000 n
+0000066466 00000 n
+0000066616 00000 n
+0000066766 00000 n
+0000066916 00000 n
+0000067066 00000 n
+0000067216 00000 n
+0000067366 00000 n
+0000067516 00000 n
+0000067666 00000 n
+0000067816 00000 n
+0000067966 00000 n
+0000068116 00000 n
+0000068266 00000 n
+0000068319 00000 n
+0000068372 00000 n
+0000068425 00000 n
+0000068478 00000 n
+0000068628 00000 n
+0000068681 00000 n
+0000068734 00000 n
+0000068787 00000 n
+0000068840 00000 n
+0000068893 00000 n
+0000069043 00000 n
+0000069193 00000 n
+0000069246 00000 n
+0000069299 00000 n
+0000069352 00000 n
+0000069502 00000 n
+0000069555 00000 n
+0000069608 00000 n
+0000069661 00000 n
+0000069714 00000 n
+0000069767 00000 n
+0000069820 00000 n
+0000069873 00000 n
+0000070367 00000 n
+0000070601 00000 n
+0000070672 00000 n
+0000070765 00000 n
+0000070872 00000 n
+0000070947 00000 n
+0000071000 00000 n
+0000071077 00000 n
+0000071202 00000 n
+0000071279 00000 n
+0000071332 00000 n
+0000071403 00000 n
+0000071543 00000 n
+0000071626 00000 n
+0000071678 00000 n
+0000071763 00000 n
+0000071890 00000 n
+0000071967 00000 n
+0000072019 00000 n
+0000072094 00000 n
+0000072188 00000 n
+0000072240 00000 n
+0000072292 00000 n
+0000072378 00000 n
+0000072430 00000 n
+0000072524 00000 n
+0000072576 00000 n
+0000072628 00000 n
+0000072681 00000 n
+0000072785 00000 n
+0000072838 00000 n
+0000072940 00000 n
+0000072993 00000 n
+0000073101 00000 n
+0000073154 00000 n
+0000073268 00000 n
+0000073321 00000 n
+0000073427 00000 n
+0000073480 00000 n
+0000073576 00000 n
+0000073629 00000 n
+0000073715 00000 n
+0000073768 00000 n
+0000073856 00000 n
+0000073909 00000 n
+0000074007 00000 n
+0000074060 00000 n
+0000074152 00000 n
+0000074205 00000 n
+0000074323 00000 n
+0000074376 00000 n
+0000074472 00000 n
+0000074525 00000 n
+0000074615 00000 n
+0000074668 00000 n
+0000074758 00000 n
+0000074811 00000 n
+0000074863 00000 n
+0000074916 00000 n
+0000075004 00000 n
+0000075057 00000 n
+0000075147 00000 n
+0000075200 00000 n
+0000075288 00000 n
+0000075341 00000 n
+0000075427 00000 n
+0000075480 00000 n
+0000075533 00000 n
+0000075586 00000 n
+0000075680 00000 n
+0000075733 00000 n
+0000075825 00000 n
+0000075878 00000 n
+0000075970 00000 n
+0000076023 00000 n
+0000076117 00000 n
+0000076170 00000 n
+0000076258 00000 n
+0000076311 00000 n
+0000076401 00000 n
+0000076454 00000 n
+0000076542 00000 n
+0000076595 00000 n
+0000076683 00000 n
+0000076736 00000 n
+0000076832 00000 n
+0000076885 00000 n
+0000076977 00000 n
+0000077030 00000 n
+0000077120 00000 n
+0000077173 00000 n
+0000077263 00000 n
+0000077316 00000 n
+0000077406 00000 n
+0000077459 00000 n
+0000077555 00000 n
+0000077608 00000 n
+0000077704 00000 n
+0000077757 00000 n
+0000077851 00000 n
+0000077904 00000 n
+0000077998 00000 n
+0000078051 00000 n
+0000078147 00000 n
+0000078200 00000 n
+0000078292 00000 n
+0000078345 00000 n
+0000078441 00000 n
+0000078494 00000 n
+0000078590 00000 n
+0000078643 00000 n
+0000078737 00000 n
+0000078790 00000 n
+0000078884 00000 n
+0000078937 00000 n
+0000079025 00000 n
+0000079078 00000 n
+0000079168 00000 n
+0000079221 00000 n
+0000079329 00000 n
+0000079382 00000 n
+0000079480 00000 n
+0000079533 00000 n
+0000079631 00000 n
+0000079684 00000 n
+0000079774 00000 n
+0000079827 00000 n
+0000079917 00000 n
+0000079970 00000 n
+0000080078 00000 n
+0000080131 00000 n
+0000080221 00000 n
+0000080274 00000 n
+0000080366 00000 n
+0000080419 00000 n
+0000080517 00000 n
+0000080570 00000 n
+0000080658 00000 n
+0000080711 00000 n
+0000080811 00000 n
+0000080864 00000 n
+0000080966 00000 n
+0000081019 00000 n
+0000081121 00000 n
+0000081174 00000 n
+0000081262 00000 n
+0000081315 00000 n
+0000081405 00000 n
+0000081458 00000 n
+0000081558 00000 n
+0000081611 00000 n
+0000081699 00000 n
+0000081752 00000 n
+0000081846 00000 n
+0000081899 00000 n
+0000081991 00000 n
+0000082044 00000 n
+0000082097 00000 n
+0000082152 00000 n
+0000087418 00000 n
+0000088626 00000 n
+0000089700 00000 n
+0000090750 00000 n
+0000091847 00000 n
+0000093082 00000 n
+0000094157 00000 n
+0000095397 00000 n
+0000096395 00000 n
+0000097538 00000 n
+0000098627 00000 n
+0000100021 00000 n
+0000101163 00000 n
+0000102434 00000 n
+0000103739 00000 n
+0000105021 00000 n
+0000105925 00000 n
+0000107416 00000 n
+0000107843 00000 n
+0000107880 00000 n
+0000107905 00000 n
+0000107976 00000 n
+0000108106 00000 n
+0000108238 00000 n
+0000108362 00000 n
+0000112753 00000 n
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+0000000000 65535 f
+trailer
+<</Size 2242>>
+startxref
+116
+%%EOF

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/datalog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/datalog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/datalog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+xmlns="http://www.ruleml.org/0.91/xsd" 
+xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for the RuleML sublanguage "datalog".
+			File: datalog.xsd
+			Version: 0.91
+			Last Modification: 2006-07-19
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		Note that datalog is entirely composed of modules and that all other
+		schema drivers rely on it, making it the root of the sublanguage family tree.
+	-->
+
+	<!--
+		Datalog includes the following modules:
+		* performative
+		* desc
+		* quantifier
+		* connective
+		* atom
+		* slot
+		* term
+		* uri
+
+		For details on each module, including what element and/or attribute declarations
+		they contain, please refer to them individually.
+	-->
+
+	<xs:include schemaLocation="modules/performative_module.xsd"/>
+	<xs:include schemaLocation="modules/desc_module.xsd"/>
+	<xs:include schemaLocation="modules/quantifier_module.xsd"/>
+	<xs:include schemaLocation="modules/connective_module.xsd"/>
+	<xs:include schemaLocation="modules/atom_module.xsd"/>
+	<xs:include schemaLocation="modules/slot_module.xsd"/>
+	<xs:include schemaLocation="modules/term_module.xsd"/>
+	<xs:include schemaLocation="modules/uri_module.xsd"/>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/dishornlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/dishornlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/dishornlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Disjunctive Horn-Logic RuleML sublanguage
+			File: dishornlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<xs:redefine schemaLocation="hornlog.xsd">
+
+		<!--
+			Add Or so that head's content model is: (Atom | Or)
+
+			Note: And could also be added to head.
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>		
+				<xs:element name="Or" type="Or-inner.type"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Or to Implies so that its content model is:
+			( oid?, ( head, body) | ( body, head) | ( (Atom | And | Or), (Atom | Or) ) )	
+		-->
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/folog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/folog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/folog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a First-Order Logic RuleML sublanguage
+			File: folog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- folog includes and redefines the 'neg' module -->	
+	<xs:redefine schemaLocation="modules/neg_module.xsd">
+
+		<!--
+			Allow unrestricted nesting of first order logic formulas in Neg.
+			
+			strong's content model becomes:
+			(Atom | Rulebase | And | Or | Neg | Implies | Equivalent | Forall | Exists )
+		-->
+		<xs:group name="strong.content">
+			<xs:choice>
+				<xs:group ref="strong.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>	
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Forall"/>
+				<xs:element ref="Exists"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly changes Neg's content model to become:
+			( strong | Atom | Rulebase | And | Or | Neg | Implies | Equivalent | Forall | Exists )		
+		-->
+		
+		<!-- Also allow map attributes on Neg -->
+		<xs:attributeGroup name="Neg.attlist">
+			<xs:attributeGroup ref="Neg.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>	
+	
+	</xs:redefine>
+	
+	<xs:redefine schemaLocation="dishornlog.xsd">
+		<!--
+			Allow unrestricted nesting of first order logic formulas in And and Or.
+			
+			formula's content model becomes:
+			( Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists )
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Forall"/>
+				<xs:element ref="Exists"/>				
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly changes the content models of And, Rulebase and Or to become:
+			( oid?, (formula | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists)* )
+		-->		
+		
+		<!-- Also allow map attributes on all And & Or -->
+		<xs:attributeGroup name="And-query.attlist">
+			<xs:attributeGroup ref="And-query.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>	
+		<xs:attributeGroup name="And-inner.attlist">	
+			<xs:attributeGroup ref="And-inner.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>	
+		<xs:attributeGroup name="Or-query.attlist">
+			<xs:attributeGroup ref="Or-query.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>	
+		<xs:attributeGroup name="Or-inner.attlist">	
+			<xs:attributeGroup ref="Or-inner.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>		
+		
+		<!--
+			Allow unrestricted nesting of first order logic formulas in head and body (and therefore Implies),
+			as well as in torso (and therefore Equivalent).
+			
+			Implies' content model becomes:
+			(
+				oid?, ( head, body) | ( body, head) |
+				( 
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists),
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists ) 
+				)
+			)
+
+			Equivalent's content model becomes:
+			(
+				oid?, (torso, torso) |
+				(
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists ),
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists )
+				)
+			)
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>				
+				<xs:element ref="Forall"/>
+				<xs:element ref="Exists"/>		
+			</xs:choice>
+		</xs:group>
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>				
+				<xs:element ref="Forall"/>
+				<xs:element ref="Exists"/>				
+			</xs:choice>
+		</xs:group>
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>		
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>				
+				<xs:element ref="Forall"/>
+				<xs:element ref="Exists"/>				
+			</xs:choice>
+		</xs:group>	
+		
+		<!-- Also allow map attributes on Implies and Equivalent -->		
+		<xs:attributeGroup name="Implies.attlist">
+			<xs:attributeGroup ref="Implies.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>	
+		<xs:attributeGroup name="Equivalent.attlist">
+			<xs:attributeGroup ref="Equivalent.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>	
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>
+
+		<!--		
+			Allow unrestricted nesting of first order logic formulas in formula (below Forall and Exists), 
+			and therefore Forall and Exists as well.
+
+			Forall and Exist's content models become:
+			( oid?, (declare|Var)+, (formula|Atom|And|Or|Neg|Implies|Equivalent|Forall|Exists) )
+		-->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Exists"/>
+			</xs:choice>
+		</xs:group>	
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Forall"/>
+			</xs:choice>
+		</xs:group>
+				
+		<!-- Also allow map attributes on Forall and Exists -->
+		<xs:attributeGroup name="Forall.attlist">
+			<xs:attributeGroup ref="Forall.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>
+		<xs:attributeGroup name="Exists.attlist">
+			<xs:attributeGroup ref="Exists.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>		
+		
+		<!--
+			Allow unrestricted nesting of first order logic formulas in Assert, Retract and Query.
+
+			Assert, Retract and Query's content models become:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Neg"/>	
+				<xs:element ref="Implies"/>
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Forall"/>				
+			</xs:choice>	
+		</xs:group>
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Neg"/>	
+				<xs:element ref="Exists"/>				
+			</xs:choice>	
+		</xs:group>	
+		
+		<!--
+			Allow unrestricted nesting of first order logic formulas in Rulebase.
+
+			Rulebase's content models becomes:
+			( oid?, (formula | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Neg"/>	
+				<xs:element ref="Exists"/>				
+			</xs:choice>	
+		</xs:group>	
+		
+		<!-- Also allow map attributes on Query -->
+		<xs:attributeGroup name="Query.attlist">
+			<xs:attributeGroup ref="Query.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>			
+	
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/fologeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/fologeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/fologeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a First-Order Logic RuleML sublanguage with equational logic
+			File: fologeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- equalog includes the 'equality' module -->
+	<xs:include schemaLocation="modules/equality_module.xsd"/>
+
+	<!-- note the addition of Equal and Nanos from the equality module -->
+	<xs:redefine schemaLocation="_folog-to-fologeq.xsd">
+
+		<!-- add (modified) @in back to Expr -->
+		<xs:attributeGroup name="in.attrib">
+			<xs:attributeGroup ref="in.attrib"/>
+			<xs:attributeGroup ref="in-equality.attrib"/>
+		</xs:attributeGroup>
+		
+		<!-- add @val to Fun -->
+		<xs:attributeGroup name="Fun.attlist">
+			<xs:attributeGroup ref="Fun.attlist"/>
+			<xs:attributeGroup ref="val.attrib"/>
+		</xs:attributeGroup>
+		
+		<!--
+			add Equal so that Query's content model is:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists|Equal)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+	
+		<!--
+			add Equal so that Assert's content model is:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists|Equal)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>
+		
+		
+		<!--
+			add Equal so that Rulebase's content model is:
+			( oid?, (formula | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>
+
+		<!--
+			add Equal so that head's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add Equal so that body's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Implies so that its content model is:
+			(
+				oid?, (head, body) | (body, head) |
+				(
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal ),
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal ) 
+				)
+			)
+		-->	
+
+		<!--
+			add Equal so that strong's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)			
+		-->
+		<xs:group name="strong.content">
+			<xs:choice>
+				<xs:group ref="strong.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Neg so that its content model is:
+			( strong | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+
+		<!--
+			add Equal so that formula's content model under Forall is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Forall so that its content model is:
+			(
+				oid?, (declare | Var)+,
+				(formula | Atom | And | Or | Neg | Implies|Equivalent | Forall|Exists | Equal)
+			)
+		-->
+
+		<!--
+			add Equal so that formula's content model under Exists is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Exists so that its content model is:
+			(
+				oid?, (declare | Var)+,
+				(formula | Atom | And | Or | Neg | Implies|Equivalent | Forall|Exists | Equal)
+			)
+		-->
+
+		<!--
+			add Equal so that fomula's content model (below And/Or) is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to And/Or so that their content models are:
+			(oid?, (formula | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)* )
+		-->
+
+		<!--
+			add Equal so that torso's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)
+		-->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Equivalent so that its content model is:
+			(
+				oid?, (torso, torso) |
+				(
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal),
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)
+				)
+			)
+		-->	
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/framehohornlogeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/framehohornlogeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/framehohornlogeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Frames Layer RuleML sublanguage with equational logic
+			File: hoframehornlogeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- hoframehornlog includes the 'frame' module -->
+	<xs:include schemaLocation="modules/frame_module.xsd"/>
+
+	<!--
+		Note that InstanceOf, SubclassOf, Signature, unary slots, and non-positional
+		Atoms are added, in addition to support for set-valued fillers, slot access,
+		and path expression serialization.
+
+		Currently, unary slots are only available within Atoms, not Hterms,
+		due to XSD-technical reasons. Later unary slots may be generalized
+		to all of RuleML.
+	-->
+	<xs:redefine schemaLocation="hohornlogeq.xsd">
+
+		<!-- add Get and Set to arg -->
+		<xs:group name="arg.content">
+			<xs:choice>
+				<xs:group ref="arg.content"/>
+				<xs:element ref="Get"/>
+				<xs:element ref="Set"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Get and Set to Set so that its content model is:
+			( (Con | Skolem | Var | Reify | Hterm | Get | Set)* )		
+
+			... and to InstanceOf and SubclassOf so that their content model is:
+			( (Con|Skolem|Var|Reify|Hterm|Get|Set),(Con|Skolem|Var|Reify|Hterm|Get|Set) )
+
+			... and to SlotProd so that its content model is:
+			(Con | Skolem | Var | Hterm | Get | Set)+
+			
+			... and to slot-frame so that its content model is:
+			( (Con | Hterm), (Con | Hterm | Skolem | Var | Reify | Get | Set)? )
+		-->
+		
+		<!-- add Get to slot names -->
+		<xs:group name="slot-name.extend">
+			<xs:choice>
+				<xs:group ref="slot-name.extend"/>
+				<xs:element ref="Get"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above adds Get to slot so that its content model is:
+			( (Con | Hterm | Get), (Con | Hterm | Skolem | Var | Reify | Get | Set) )	
+
+			... and to slot-frame so that its content model is:
+			( (Con | Hterm | Get), (Con | Hterm | Skolem | Var | Reify | Get | Set)? )			
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to formula-assert -->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to Assert:
+			( oid?, (formula|Rulebase|Hterm|Atom|Neg|Implies|Equivalent|Entails|Forall|Equal|InstanceOf|SubclassOf|Signature)* )
+		-->
+		
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to formula-rulebase -->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to Rulebase:
+			( oid?, (formula |Atom|Hterm|Neg|Implies|Equivalent|Forall|InstanceOf|SubclassOf|Signature|Equal)* )
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to body -->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to head -->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to Implies so
+			that its content model is:
+			( 
+   			   oid?, (head, body ) | (body, head ) |
+				 ( 
+				  (Atom | Hterm | InstanceOf | SubclassOf | Signature | And | Or | Neg | Naf | Equal),
+ 				  (Atom | Hterm | InstanceOf | SubclassOf | Signature | Neg | Equal)
+				 )
+			)
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to torso -->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to
+			Equivalent so that its content model is:
+			(
+			   oid?, (
+				   ( torso, torso) |
+				   (
+				    (Atom|Hterm|InstanceOf|SubclassOf|Signature|Equal),
+					(Atom|Hterm|InstanceOf|SubclassOf|Signature|Equal)
+				   )
+				 )
+			)	
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to formula-and-or -->		
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to
+			And, Rulebase and Or so that their content model is:
+			( oid?, (formula|Atom|Hterm|InstanceOf|SubclassOf|Signature|And|Or|Neg|Naf|Equal)* )
+		-->	
+
+		<!-- add Atom to formula-query -->		
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to
+			Query so that its content model is:
+			( oid?, (formula|Atom|Hterm|InstanceOf|SubclassOf|Signature|Rulebase|And|Or|Entails|Exists|Neg|Naf|Equal)* )
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to formula-forall -->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to
+			Forall so that its content model is:
+			(oid?,(declare|Var)+,(formula|Atom|Hterm|InstanceOf|SubclassOf|Signature|Implies|Equivalent|Forall|Equal))
+		-->
+
+		<!-- add InstanceOf, SubclassOf, Signature and Atom to formula-exists -->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>		
+				<xs:element name="Atom" type="Atom-frame.type"/>			
+				<xs:element ref="InstanceOf"/>			
+				<xs:element ref="SubclassOf"/>
+				<xs:element ref="Signature"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds InstanceOf, SubclassOf, Signature and Atom to
+			Exists so that its content model is:
+			( oid?, (declare | Var)+, (formula|Atom|Hterm|InstanceOf|SubclassOf|Signature|And|Or|Exists|Equal) )
+		-->
+
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of the local declaration of Con -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Higher-Order Logic RuleML sublanguage
+			File: hohornlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- hilog includes the 'holog' module -->
+	<xs:include schemaLocation="modules/holog_module.xsd"/>
+
+	<!--
+		note the replacement of Atom and Expr by Hterm, the neutralization of
+		Ind, Rel and Ctor into Con, and the addition of Neg
+	-->
+	<xs:redefine schemaLocation="_nafhornlog-to-hohornlog.xsd">
+
+		<!-- add Hterm and Neg to formula-assert -->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds Hterm and Neg to Assert so that its content model is:
+			( oid?, (formula | Rulebase | Hterm | Neg | Implies | Equivalent | Entails | Forall)* )
+		-->	
+
+		<!-- add Hterm to formula-rulebase -->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds Hterm and Neg to Rulebase so that its content model is:
+			( oid?, (formula | Hterm | Neg | Implies | Equivalent | Forall)* )
+		-->	
+
+		<!-- add Hterm to strong -->
+		<!--
+			And is also added to strong; this is only necessary for integrity constraints in SWSL,
+			but limiting it to the second Rulebase of an Entails would require a lot of context
+			sensitivity. Therefore these SWSL XSDs are extra permissive in this respect.
+		-->
+		<xs:group name="strong.content">
+			<xs:choice>
+				<xs:group ref="strong.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element name="And" type="And-inner.type"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm to Neg so that its content model is:
+			( oid?, (strong | Hterm | And) )
+		-->
+
+		<!-- add Hterm to weak -->
+		<xs:group name="weak.content">
+			<xs:choice>
+				<xs:group ref="weak.content"/>
+				<xs:element ref="Hterm"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm to Naf so that its content model is:
+			( oid?, (strong | Hterm) )
+		-->
+
+		<!-- add Hterm and Con to arg -->
+		<xs:group name="arg.content">
+			<xs:choice>
+				<xs:group ref="arg.content"/>
+				<xs:element ref="Con"/>
+				<xs:element ref="Hterm"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm to slot fillers:
+			( (), (Con | Hterm | Skolem | Var | Reify) )
+		-->
+		
+		<!--
+			add Hterm and Con to slot names:
+			( (Con | Hterm), (Con | Hterm | Skolem | Var | Reify) )
+		-->
+		<xs:group name="slot-name.extend">
+			<xs:choice>
+				<xs:group ref="slot-name.extend"/>
+				<xs:element ref="Con"/>
+				<xs:element ref="Hterm"/>
+			</xs:choice>
+		</xs:group>
+
+		<!--
+			add Con and Hterm to oid so that its content model is:
+			(Con | Hterm | Skolem | Var | Reify)
+		-->		
+		<xs:group name="oid.content">
+			<xs:choice>
+				<xs:group ref="oid.content"/>
+				<xs:element ref="Con"/>				
+				<xs:element ref="Hterm"/>
+			</xs:choice>
+		</xs:group>		
+
+		<!-- add Hterm and Neg to body -->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>				
+			</xs:choice>
+		</xs:group>	
+		
+		<!-- add Hterm and Neg to head -->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>				
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm and Neg to Implies so that its content model is:
+			( oid?, (head, body) | (body, head) | ( (Hterm | And | Or | Neg | Naf), (Hterm | Neg) ) )
+		-->	
+		
+		<!-- add Hterm to torso -->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element ref="Hterm"/>				
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds Hterm to Equivalent so that its content model is:
+			( oid?, ( (torso, torso) | (Hterm, Hterm) ) )	
+		-->			
+
+		<!-- add Hterm and Neg to formula-and-or -->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>	
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds Hterm and Neg to And/Or so that their content model is:
+			( oid?, (formula | Hterm | And | Or | Neg | Naf)* )
+		-->
+
+		<!-- add Hterm and Neg to formula-query -->		
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Hterm"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>	
+		<!--
+			note that the above indirectly adds Hterm to Query so that its content model is:
+			( oid?, (formula | Hterm | Rulebase | And | Or | Entails | Exists | Neg | Naf)* )
+		-->
+		
+		<!-- add Hterm to formula-forall -->	
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element ref="Hterm"/>			
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm to Forall so that its content model is:
+			( oid?, (declare | Var)+, (formula | Hterm | Implies | Equivalent | Forall) )
+		-->
+		
+		<!-- add Hterm to formula-exists -->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Hterm"/>	
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Hterm to Exists so that its content model is:
+			( oid?, (declare | Var)+, (formula | Hterm | And | Or | Exists) )
+		-->							
+
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlogeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlogeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hohornlogeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a higher-order Horn-Logic RuleML sublanguage with equational logic
+			File: hohornlogeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- equalog includes the 'equality' module -->
+	<xs:include schemaLocation="modules/equality_module.xsd"/>
+
+	<!-- note the addition of Equal and Nanos from the equality module -->
+	<xs:redefine schemaLocation="_hohornlog-to-hohornlogeq.xsd">
+
+		<!-- add (modified) @in back to Expr -->
+		<xs:attributeGroup name="in.attrib">
+			<xs:attributeGroup ref="in.attrib"/>
+			<xs:attributeGroup ref="in-equality.attrib"/>
+		</xs:attributeGroup>
+		
+		<!-- add @val to Fun -->
+		<xs:attributeGroup name="Fun.attlist">
+			<xs:attributeGroup ref="Fun.attlist"/>
+			<xs:attributeGroup ref="val.attrib"/>
+		</xs:attributeGroup>
+	
+		<!-- add Equal to formula-assert -->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Assert so that its content model is:
+			( oid?, (formula | Rulebase | Hterm | Neg | Implies | Equivalent | Entails | Forall | Equal)* )
+		-->	
+		
+		<!--
+			add Equal so that Rulebase's content model is:
+			( oid?, (formula | Hterm | Neg | Implies | Equivalent | Forall | Equal)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>	
+
+		<!-- add Equal so head -->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!-- add Equal to body -->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Implies so that its content model is:
+			( oid?, (head, body) | (body, head) | ( (Hterm|And|Or|Neg|Naf|Equal), (Hterm|Neg|Equal) ) )
+		-->
+
+		<!-- add Equal to formula-forall -->
+
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Forall so that its content model is:
+			( oid?, (declare | Var)+, (formula | Hterm | Implies | Equivalent | Forall | Equal) )
+		-->
+
+		<!-- add Equal so formula-exists -->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Exists so that its content model is:
+			( oid?, (declare | Var)+, (formula | Hterm | And | Or | Exists | Equal) )
+		-->	
+
+		<!-- add Equal to formula-query -->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Query so that its content model is:
+			( oid?, (formula | Hterm | Rulebase | And | Or | Entails | Exists | Neg | Naf | Equal)* )
+		-->
+
+		<!-- add Equal to formula-and-or -->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to And/Or so that their content model is:
+			( oid?, (formula | Hterm | And | Or | Neg | Naf | Equal)* )
+		-->
+
+		<!-- add Equal to torso -->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Equivalent so that its content model is:
+			( oid?, ( (torso, torso) | ( (Hterm | Equal), (Hterm | Equal) ) ) )	
+		-->		
+
+		<!-- add Equal to strong -->
+		<xs:group name="strong.content">
+			<xs:choice>
+				<xs:group ref="strong.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Neg so that its content model is:
+			( oid?, (strong | Hterm | And | Equal) )
+		-->
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified">
+	
+<!-- note that elementFormDefault is qualified because of local declarations -->
+	
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Horn-Logic RuleML sublanguage
+			File: hornlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- hornlog includes the 'expr' and 'rest' modules -->
+	<xs:include schemaLocation="modules/expr_module.xsd"/>
+	<xs:include schemaLocation="modules/rest_module.xsd"/>
+	
+	<!-- note the addition of Expr and Plexs from the expr module -->
+	<xs:redefine schemaLocation="datalog.xsd">
+		<!--
+			add Exprs and Plexs so that arg's content model is:
+			(Ind | Data | Skolem | Var | Reify | Expr | Plex)
+		-->
+		<xs:group name="arg.content">
+			<xs:choice>
+				<xs:group ref="arg.content"/>
+				<xs:element ref="Expr"/>
+				<xs:element name="Plex" type="Plex.type"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Expr and Plex to Atom so that its content model is:
+			(
+				(oid)?, (op | Rel), (slot)*,
+				( (arg|Ind|Data|Skolem|Var|Reify|Expr|Plex)+, (slot)* )?
+			)
+			
+			... as well as to slot so that its content model is:
+	   		( (Ind|Data), (Ind|Data|Skolem|Var|Reify|Expr|Plex) )
+		-->
+		
+		<!--
+			add Exprs and Plexs so that slot's content model is:
+			( (Ind|Data|Expr|Plex), (Ind|Data|Skolem|Var|Reify|Expr|Plex) )
+		-->
+		<xs:group name="slot-name.extend">
+			<xs:choice>
+				<xs:group ref="slot-name.extend"/>
+				<xs:element ref="Expr"/>
+				<xs:element name="Plex" type="Plex.type"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add Expr and Plex to oid so that its content model is:
+			(Ind | Data | Var | Skolem | Reify | Expr | Plex)
+		-->
+		<xs:group name="oid.content">
+			<xs:choice>
+				<xs:group ref="oid.content"/>
+				<xs:element ref="Expr"/>
+				<xs:element name="Plex" type="Plex.type"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add repo and resl so that Atom's content model is:
+			(
+				(oid)?, (op | Rel), (slot)*, (resl)?,
+				( 
+					( 
+						((arg|Ind|Data|Skolem|Var|Reify|Expr|Plex)+, (repo)?)
+						|
+						(repo)
+					),
+					(slot)*, (resl)?
+				)?
+			)			
+		-->
+		<xs:group name="Atom-repo.extend">
+			<xs:choice>
+				<xs:group ref="Atom-repo.extend"/>
+				<xs:element ref="repo"/>
+			</xs:choice>
+		</xs:group>
+		<xs:group name="Atom-arg.extend">
+			<xs:sequence>
+				<xs:group ref="Atom-arg.extend"/>
+				<xs:element ref="repo" minOccurs="0"/>
+			</xs:sequence>
+		</xs:group>
+		<xs:group name="Atom-slots.extend">
+			<xs:sequence>
+				<xs:group ref="Atom-slots.extend"/>
+				<xs:element ref="resl" minOccurs="0"/>
+			</xs:sequence>
+		</xs:group>
+		
+	</xs:redefine>
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlogeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlogeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/hornlogeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Horn-Logic RuleML sublanguage with equational logic
+			File: hornlogeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- equalog includes the 'equality' module -->
+	<xs:include schemaLocation="modules/equality_module.xsd"/>
+
+	<!-- note the addition of Equal and Nanos from the equality module -->
+	<xs:redefine schemaLocation="_hornlog-to-hornlogeq.xsd">
+	
+		<!-- add (modified) @in back to Expr -->
+		<xs:attributeGroup name="in.attrib">
+			<xs:attributeGroup ref="in.attrib"/>
+			<xs:attributeGroup ref="in-equality.attrib"/>
+		</xs:attributeGroup>
+		
+		<!-- add @val to Fun -->
+		<xs:attributeGroup name="Fun.attlist">
+			<xs:attributeGroup ref="Fun.attlist"/>
+			<xs:attributeGroup ref="val.attrib"/>
+		</xs:attributeGroup>
+		
+		<!--
+			add Equal so that Assert's content model is:
+			( oid?, (formula | Rulebase | Atom | Implies | Equivalent | Entails | Forall | Equal)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>
+		
+		<!--
+			add Equal so that Rulebase's content model is:
+			( oid?, (formula | Atom | Implies | Equivalent | Forall | Equal)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>		
+
+		<!--
+			add Equal so that head's content model is:
+			(Atom | Equal)
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add Equal so that body's content model is:
+			(Atom | And | Or | Equal)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Implies so that its content model is:
+			( oid?, (head, body) | (body, head) | ( (Atom | And | Or | Equal), (Atom | Equal) ) )
+		-->		
+
+
+		<!--
+			add Equal so that formula's content model under Forall is:
+			( Atom | Implies | Equivalent | Forall | Equal )
+		-->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Forall so that its content model is:
+			( oid?, (declare | Var)+, (formula | Atom | Implies | Equivalent | Forall | Equal) )
+		-->
+
+		<!--
+			add Equal so that formula's content model under Exists is:
+			( Atom | And | Or | Exists | Equal )		
+		-->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Exists so that its content model is:
+			( oid?, (declare | Var)+, (formula | Atom | And | Or | Exists | Equal) )
+		-->
+
+
+		<!--
+			add Equal so that Query's content model is:
+			( oid?, (formula | Atom | Rulebase | And | Or | Entails | Exists | Equal)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+	
+
+		<!--
+			add Equal so that formula's content model (below And/Or) is:
+			(Atom | And | Or | Equal)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to And/Or so that their content models are:
+			( oid?, (formula | Atom | And | Or | Equal)* )
+		-->
+
+		<!--
+			add Equal so that torso's content model is:
+			(Atom | Equal)
+		-->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Equivalent so that its content model is:
+			( oid?, ( (torso, torso) | ( (Atom | Equal), (Atom | Equal) ) ) )
+		-->		
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/atom_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/atom_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/atom_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,169 @@
+<?xml version="1.0"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML atoms.
+			File: atom_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-17
+			
+			This module declares the following RuleML elements and attributes:
+			* Atom
+			* op
+			* Rel
+			* degree
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!--
+        *** Atom ***
+		A logical atom, i.e. an expression formed from a predicate
+		applied to a collection of its (logical) arguments.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Atom
+	
+		content model (normally):
+		(
+			oid?, degree?, (op | Rel), (slot)*,
+			(arg | Ind | Data | Skolem | Var | Reify)*, (slot)*
+		)
+		
+		however, the above content model is non-deterministic,
+		so it is (equivalently) restructured as follows:
+		(
+			oid?, degree?, (op | Rel), (slot)*,
+			( (arg | Ind | Data | Skolem | Var | Reify)+, (slot)* )?
+		)
+
+		Another (context-sensitive) version of <Atom> is in the holog module.
+		
+		Note the 'positionalized' normal form where the oid and op roles
+		are at the beginning of the atom.
+	-->
+	<xs:attributeGroup name="Atom.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+	</xs:attributeGroup>
+	<!--
+		These .extend groups, pointed to by Atom.content, are necessary
+		for redefinition to be binary in bindatalog and to add rest
+		variables in hornlog.
+	-->
+	<xs:group name="Atom-repo.extend">
+		<xs:choice>
+			<xs:group ref="Atom-arg.extend"/>
+			<!-- (repo) added in hornlog -->
+		</xs:choice>
+	</xs:group>
+	<xs:group name="Atom-arg.extend">
+		<xs:sequence>
+			<xs:choice maxOccurs="unbounded">
+				<xs:element ref="arg"/>
+				<xs:group ref="arg.content"/>
+			</xs:choice>
+			<!-- restricted to min=2 max=2 (i.e. binary) in bindatalog -->
+			<!-- (repo?) added in hornlog -->
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="Atom-slots.extend">
+		<xs:sequence>
+			<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+			<!-- (resl)? added in hornlog -->
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="Atom.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:element ref="degree" minOccurs="0"/>
+			<xs:choice>
+				<xs:element name="op" type="op-atom.type"/>
+				<xs:group ref="op-atom.content"/>
+			</xs:choice>
+			<xs:group ref="Atom-slots.extend"/>
+			<xs:sequence minOccurs="0">
+				<xs:group ref="Atom-repo.extend"/>
+				<xs:group ref="Atom-slots.extend"/>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Atom.type">
+		<xs:group ref="Atom.content"/>
+		<xs:attributeGroup ref="Atom.attlist"/>
+	</xs:complexType>
+	<xs:element name="Atom" type="Atom.type"/>
+	
+	<!--
+		*** op ***
+		An operator expression including the relation of an atom.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-op
+
+		content model (within Atom): (Rel)
+		
+		Other (context-sensitive) versions of <op> are in the expr and holog modules.
+	-->
+	<xs:attributeGroup name="op.attlist"/>
+	<xs:group name="op-atom.content">
+		<xs:sequence>
+			<xs:element ref="Rel"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="op-atom.type">
+		<xs:group ref="op-atom.content"/>
+		<xs:attributeGroup ref="op.attlist"/>
+	</xs:complexType>
+	<xs:element name="op" type="op-atom.type"/>
+	
+	<!--
+		*** Rel ***
+		A relation, i.e. a logical predicate, of an atom.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Rel
+		
+		content model: (#PCDATA)
+	-->
+	<xs:attributeGroup name="Rel.attlist">
+		<xs:attributeGroup ref="uri.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Rel.content">
+		<xs:sequence/>
+	</xs:group>
+	<xs:complexType name="Rel.type" mixed="true">
+		<xs:group ref="Rel.content"/>
+		<xs:attributeGroup ref="Rel.attlist"/>
+	</xs:complexType>
+	<xs:element name="Rel" type="Rel.type"/>
+	
+	<!-- 
+		*** degree ***
+
+		An optional uncertainty value (between 0.0 and 1.0)
+		that may be assigned to facts and rules.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-degree
+
+		content model: (Data)
+	-->
+	<xs:attributeGroup name="degree.attlist"/>
+	<xs:group name="degree.content">
+		<xs:sequence>
+			<xs:element ref="Data"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="degree.type">
+		<xs:group ref="degree.content"/>
+		<xs:attributeGroup ref="degree.attlist"/>
+	</xs:complexType>
+	<xs:element name="degree" type="degree.type"/>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/connective_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/connective_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/connective_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,496 @@
+<?xml version="1.0"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:sch="http://www.ascc.net/xml/schematron"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML connectives.
+			File: connective_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-23
+			
+			This module declares the following RuleML elements and attributes:
+			* Implies
+			* body
+			* head
+			* Entails
+			* Equivalent
+			* torso
+			* Rulebase
+			* And
+			* Or
+			* formula
+			* @mapMaterial
+			* @material
+			* @mapDirection
+			* @direction
+			* @mapClosure
+			* @closure
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+        <xs:appinfo>
+			<!-- necessary for schematron -->
+            <sch:ns prefix="r" uri="http://www.ruleml.org/0.91/xsd"/>
+        </xs:appinfo>
+	</xs:annotation>
+	
+	<!--
+		*** Implies ***
+		An implication rule.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Implies
+
+		content model:
+		( oid?, (head, body) | (body, head) | ( (Atom | Rulebase | And | Or), Atom ) )
+	-->
+	<xs:attributeGroup name="Implies.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+		<xs:attributeGroup ref="direction.attrib"/>
+		<xs:attributeGroup ref="material.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Implies.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:sequence>
+					<xs:element ref="head"/>
+					<xs:element ref="body"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="body"/>
+					<xs:element ref="head"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:group ref="body.content"/>
+					<xs:group ref="head.content"/>
+				</xs:sequence>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Implies.type">
+		<xs:group ref="Implies.content"/>
+		<xs:attributeGroup ref="Implies.attlist"/>
+	</xs:complexType>
+	<xs:element name="Implies" type="Implies.type"/>
+	
+	<!-- 
+		*** body ***
+		The body of an implication rule containing the premise(s),
+		also known as the "antecedent" or "if" part of the rule.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-body
+
+		content model: (Atom | And | Or)
+	-->
+	<xs:attributeGroup name="body.attlist"/>
+	<xs:group name="body.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element name="And" type="And-inner.type"/>
+			<xs:element name="Or" type="Or-inner.type"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="body-entails.content">
+		<xs:choice>
+			<xs:element ref="Rulebase"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="body.type">
+		<xs:group ref="body.content"/>
+		<xs:attributeGroup ref="body.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="body-entails.type">
+		<xs:group ref="body-entails.content"/>
+		<xs:attributeGroup ref="body.attlist"/>
+	</xs:complexType>
+	<xs:element name="body" type="body.type"/>	
+	
+	<!--
+		*** head ***
+		The head of an implication rule containing the conclusion,
+		also known as the "consequent" or "then" part of the rule.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-head
+
+		content model: (Atom)
+	-->
+	<xs:attributeGroup name="head.attlist"/>
+	<xs:group name="head.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="head-entails.content">
+		<xs:choice>
+			<xs:element ref="Rulebase"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="head.type">
+		<xs:group ref="head.content"/>
+		<xs:attributeGroup ref="head.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="head-entails.type">
+		<xs:group ref="head-entails.content"/>
+		<xs:attributeGroup ref="head.attlist"/>
+	</xs:complexType>
+	<xs:element name="head" type="head.type"/>
+	
+	<!--
+		*** Entails ***
+		Well-known in (meta-)logic (earlier called 'Turnstile', and 'Demo' in
+		Kowalski/Bowen's object/meta-level-amalgamated logic).
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Entails
+		
+		content model:
+		( oid?, (body | Rulebase), (head | Rulebase) )
+	-->
+	<xs:attributeGroup name="Entails.attlist"/>
+	<xs:group name="Entails.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:element name="body" type="body-entails.type"/>
+				<xs:group ref="body-entails.content"/>
+			</xs:choice>
+			<xs:choice>
+				<xs:element name="head" type="head-entails.type"/>
+				<xs:group ref="head-entails.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Entails.type">
+		<xs:group ref="Entails.content"/>
+		<xs:attributeGroup ref="Entails.attlist"/>
+	</xs:complexType>
+	<xs:element name="Entails" type="Entails.type"/>
+	
+	<!--
+		*** Equivalent ***
+		An equivalence expression, which is "syntactic sugar" for a pair
+		of conjoined converse implication rules.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Equivalent
+
+		content model: ( oid?, ((torso, torso) | (Atom, Atom)) )
+	-->
+	<xs:attributeGroup name="Equivalent.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Equivalent.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:sequence>
+					<xs:element ref="torso" minOccurs="2" maxOccurs="2"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:group ref="torso.content" minOccurs="2" maxOccurs="2"/>
+				</xs:sequence>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Equivalent.type">
+		<xs:annotation>
+			<xs:appinfo>
+				<sch:pattern name="Equivalent">
+					<sch:rule context="r:Equivalent[count( descendant::r:Equal/r:Expr | descendant::r:Equal/r:lhs/r:Expr )=2]">
+						<sch:assert test=
+							"( descendant::r:Equal[1]/descendant::r:Fun[@in = 'no']
+							   and descendant::r:Equal[2]/descendant::r:Fun[@in = 'no'] )
+							 or
+							 ( descendant::r:Equal[1]/descendant::r:Fun[@in = 'yes']
+							   and descendant::r:Equal[2]/descendant::r:Fun[@in = 'yes'] )">
+						  Equalities within an equivalence expression must either both be interpreted or both uninterpreted.
+						</sch:assert>
+					</sch:rule>
+				</sch:pattern>
+			</xs:appinfo>
+		</xs:annotation>
+		<xs:group ref="Equivalent.content"/>
+		<xs:attributeGroup ref="Equivalent.attlist"/>
+	</xs:complexType>
+	<xs:element name="Equivalent" type="Equivalent.type"/>
+	
+	<!--
+		*** torso ***
+		A symmetric role used in an equivalence expression combining
+		the asymmetric <head> and <body>.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-torso
+
+		content model: (Atom)
+	-->
+	<xs:attributeGroup name="torso.attlist"/>
+	<xs:group name="torso.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="torso.type">
+		<xs:group ref="torso.content"/>
+		<xs:attributeGroup ref="torso.attlist"/>
+	</xs:complexType>
+	<xs:element name="torso" type="torso.type"/>
+	
+	<!--
+		*** Rulebase ***
+		A collection of rules that can be ordered or unordered, without or with duplicates.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Rulebase
+		
+		content model:
+		( oid?, (formula | Atom | Implies | Equivalent | Forall)* )
+	-->
+	<xs:attributeGroup name="Rulebase.attlist">
+		<xs:attributeGroup ref="mapClosure.attrib"/>
+		<xs:attributeGroup ref="mapDirection.attrib"/>
+		<xs:attributeGroup ref="mapMaterial.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Rulebase.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-rulebase.type"/>
+				<xs:group ref="formula-rulebase.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Rulebase.type">
+		<xs:group ref="Rulebase.content"/>
+		<xs:attributeGroup ref="Rulebase.attlist"/>
+	</xs:complexType>
+	<xs:element name="Rulebase" type="Rulebase.type"/>	
+	
+	<!--
+		*** And ***
+		A conjunctive expression, where <And>Atom</And> is equivalent to Atom.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-And
+		
+		content model: ( oid?, (formula | Atom | And | Or)* )
+
+		Under Query, And may have attribute closure="existential"; elsewhere, it may
+		not have any attributes.
+	-->
+	<xs:attributeGroup name="And-inner.attlist"/>
+	<xs:attributeGroup name="And-query.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="And.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-and-or.type"/>
+				<xs:group ref="formula-and-or.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="And-query.type">
+		<xs:group ref="And.content"/>
+		<xs:attributeGroup ref="And-query.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="And-inner.type">
+		<xs:group ref="And.content"/>
+		<xs:attributeGroup ref="And-inner.attlist"/>
+	</xs:complexType>
+	<xs:element name="And" type="And-inner.type"/>
+	
+	<!--
+		*** Or ***
+		A disjunctive expression, where <Or>Atom</Or> is equivalent to Atom.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Or
+		
+		content model: ( oid?, (formula | Atom | And | Or)* )
+
+		Under Query, Or may have attribute closure="existential"; elsewhere, it may not
+		have any attributes.
+	-->
+	<xs:attributeGroup name="Or-query.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+	</xs:attributeGroup>
+	<xs:attributeGroup name="Or-inner.attlist"/>
+	<xs:group name="Or.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-and-or.type"/>
+				<xs:group ref="formula-and-or.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Or-query.type">
+		<xs:group ref="Or.content"/>
+		<xs:attributeGroup ref="Or-query.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="Or-inner.type">
+		<xs:group ref="Or.content"/>
+		<xs:attributeGroup ref="Or-inner.attlist"/>
+	</xs:complexType>
+	<xs:element name="Or" type="Or-inner.type"/>
+	
+	<!--
+		*** formula ***
+		The formula role of a conjunctive/disjunctive expression or a rulebase.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-formula
+
+		content model (below And/Or): (Atom | And | Or)
+		content model (below Rulebase): (Atom | Implies | Equivalent | Forall)
+		
+		Other (context-sensitive) versions of <formula> are in the
+		performative and quantifier modules.
+	-->
+	<xs:attributeGroup name="formula.attlist"/>
+	<xs:group name="formula-and-or.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element name="And" type="And-inner.type"/>
+			<xs:element name="Or" type="Or-inner.type"/>
+		</xs:choice>
+	</xs:group>
+	<!--
+		In 0.91, Naf is not allowed in the consequent (second child) of Entails
+		because Integrity uses of Entails call for classical Neg
+		and Rulebase should not contain Naf in any other context (except Query).
+		Alternatives would have been to use And in the consequent of Entails
+		or to only allow Naf children within Rulebases that are used for Integrity
+		and querying, but this would require making the role tags explicit (i.e.
+		not skippable). Schematron could be used here to disallow Naf from other
+		Rulebases.
+	-->
+	<xs:group name="formula-rulebase.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element name="Implies"/>
+			<xs:element name="Equivalent"/>
+			<xs:element name="Forall"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="formula-and-or.type">
+		<xs:group ref="formula-and-or.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="formula-rulebase.type">
+		<xs:group ref="formula-rulebase.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+
+	<!--
+		*** @mapMaterial ***
+		An attribute indicating the kind of all implication rules 
+		falling within its scope (i.e. child elements).
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@mapMaterial
+	-->
+	<xs:attributeGroup name="mapMaterial.attrib">
+		<xs:attribute name="mapMaterial" use="optional" default="yes">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="no"/>
+					<xs:enumeration value="yes"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @material ***
+		An attribute indicating the kind of an implication rule.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@material
+	-->
+	<xs:attributeGroup name="material.attrib">
+		<xs:attribute name="material" use="optional" default="yes">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="no"/>
+					<xs:enumeration value="yes"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @mapDirection ***
+		An attribute indicating the intended direction of implication rule inferencing
+		of elements falling within its scope (i.e. child elements).
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@mapDirection
+	-->
+	<xs:attributeGroup name="mapDirection.attrib">
+		<xs:attribute name="mapDirection" use="optional" default="bidirectional">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="forward"/>
+					<xs:enumeration value="backward"/>
+					<xs:enumeration value="bidirectional"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @direction ***
+		An attribute indicating the intended direction of an implication rule's inferencing.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@direction
+	-->
+	<xs:attributeGroup name="direction.attrib">
+		<xs:attribute name="direction" use="optional" default="bidirectional">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="forward"/>
+					<xs:enumeration value="backward"/>
+					<xs:enumeration value="bidirectional"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @mapClosure ***
+		An attribute indicating how the free variables falling within
+		its scope (i.e. child elements) are quantified.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@mapClosure
+	-->
+	<xs:attributeGroup name="mapClosure.attrib">
+		<xs:attribute name="mapClosure" use="optional">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="universal"/>
+					<xs:enumeration value="existential"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @closure ***
+		An attribute indicating how the contained free variables are quantified.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@closure		
+	-->
+	<xs:attributeGroup name="closure.attrib">
+		<xs:attribute name="closure" use="optional">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="universal"/>
+					<xs:enumeration value="existential"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/desc_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/desc_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/desc_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for description-related RuleML elements.
+			File: desc_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-12
+			
+			This module declares the following RuleML element:
+			* oid
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** oid ***
+		An optional label for a clause, creating accessibility within
+		the knowledge representation.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-oid
+
+		content model: (Ind | Data | Var | Skolem | Reify)
+	-->
+	<xs:attributeGroup name="oid.attlist"/>
+	<xs:group name="oid.content">
+		<xs:choice>
+			<xs:element ref="Ind"/>
+			<xs:element ref="Data"/>		
+			<xs:element ref="Var"/>		
+			<xs:element ref="Skolem"/>		
+			<xs:element ref="Reify"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="oid.type">
+		<xs:group ref="oid.content"/>
+		<xs:attributeGroup ref="oid.attlist"/>
+	</xs:complexType>
+	<xs:element name="oid" type="oid.type"/>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/equality_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/equality_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/equality_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,166 @@
+<?xml version="1.0"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:sch="http://www.ascc.net/xml/schematron"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for equality in RuleML.
+			File: equality_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+			
+			This module declares the following RuleML elements and attributes:
+			* Equal
+			* lhs
+			* rhs
+			* @oriented
+			* @val
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+        <xs:appinfo>
+			<!-- necessary for schematron -->
+            <sch:ns prefix="r" uri="http://www.ruleml.org/0.91/xsd"/>
+        </xs:appinfo>
+	</xs:annotation>
+
+	<!--
+		*** Equal ***
+		An equational formula consisting of two expressions.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Equal
+
+		content model:
+		(
+			(oid)?, (degree)?
+			(lhs, rhs) |
+			(  (Ind | Data | Skolem | Var | Reify), (Ind | Data | Skolem | Var | Reify)  )
+		)
+	-->	
+	<xs:attributeGroup name="Equal.attlist">
+		<xs:attributeGroup ref="oriented.attrib"/>
+	</xs:attributeGroup>	
+	<xs:group name="Equal.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:element ref="degree" minOccurs="0"/>
+			<xs:choice>
+				<xs:sequence>
+					<xs:element ref="lhs"/>
+					<xs:element ref="rhs"/>
+				</xs:sequence>
+				<!-- note that (rhs, lhs) is disallowed -->
+				<xs:sequence>
+					<xs:group ref="lhs.content"/>
+					<xs:group ref="rhs.content"/>
+				</xs:sequence>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Equal.type">
+		<xs:annotation>
+			<xs:appinfo>
+				<sch:pattern name="Defining equality">
+					<sch:rule context=
+						"r:Implies/r:head/r:Equal/r:lhs/r:Expr/r:Fun |
+						 r:Implies/r:Equal[2]/r:lhs/r:Expr/r:Fun |
+						 r:Implies/r:head/r:Equal/r:Expr[1]/r:Fun |
+						 r:Implies/r:Equal[2]/r:Expr[1]/r:Fun">
+						<sch:assert test="@in='yes'">
+							A defining equality must have an interpreted left-hand side.
+						</sch:assert>
+					</sch:rule>
+				</sch:pattern>
+			</xs:appinfo>
+		</xs:annotation>
+		
+			
+		<xs:group ref="Equal.content"/>
+		<xs:attributeGroup ref="Equal.attlist"/>
+	</xs:complexType>
+	<xs:element name="Equal" type="Equal.type"/>
+
+	<!--
+		*** lhs ***
+		The left-hand side of an equational formula.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-lhs
+
+		content model: (Ind|Data|Var|Skolem|Reify)
+	-->
+	<xs:attributeGroup name="lhs.attlist"/>
+	<xs:group name="lhs.content">
+		<xs:choice>
+			<xs:group ref="arg.content"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="lhs.type">
+		<xs:group ref="lhs.content"/>
+		<xs:attributeGroup ref="lhs.attlist"/>
+	</xs:complexType>
+	<xs:element name="lhs" type="lhs.type"/>
+	
+	<!--
+		*** rhs***
+		The right-hand side of an equational formula.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-rhs
+
+		content model: (Ind|Data|Var|Skolem|Reify)
+	-->
+	<xs:attributeGroup name="rhs.attlist"/>
+	<xs:group name="rhs.content">
+		<xs:choice>
+			<xs:group ref="arg.content"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="rhs.type">
+		<xs:group ref="rhs.content"/>
+		<xs:attributeGroup ref="rhs.attlist"/>
+	</xs:complexType>
+	<xs:element name="rhs" type="rhs.type"/>
+	
+	<!--
+		*** @oriented ***
+		An attribute indicating whether an equation is oriented (directed)
+		or unoriented (symmetric).
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@oriented
+	-->
+	<xs:attributeGroup name="oriented.attrib">
+		<xs:attribute name="oriented" use="optional" default="no">
+			<xs:simpleType>
+		        <xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="yes"/>
+					<xs:enumeration value="no"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+	<!--
+		*** @val ***
+		An attribute indicating whether a function is deterministic (exactly one)
+		or non-deterministic (set-valued).
+		
+		May be unified with @card/@minCard/@maxCard for slots in a future version.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@val
+	-->
+	<xs:attributeGroup name="val.attrib">
+		<xs:attribute name="val" use="optional" default="0..">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="1"/>
+					<xs:enumeration value="0.."/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/expr_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/expr_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/expr_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,274 @@
+<?xml version="1.0"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:sch="http://www.ascc.net/xml/schematron"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML expressions.
+			File: expr_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-23
+			
+			This module declares the following RuleML elements and attributes:
+			* Expr
+			* op
+			* Fun
+			* Plex
+			* @in
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+        <xs:appinfo>
+			<!-- necessary for schematron -->
+            <sch:ns prefix="r" uri="http://www.ruleml.org/0.91/xsd"/>
+        </xs:appinfo>
+	</xs:annotation>
+	
+	<!--
+		*** Expr ***
+		A logical function of the form "f(...)" where f is a function name.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Expr
+
+		content model:
+		( 
+		  (op|Fun), (slot)*, (resl)?,
+		  (arg|Ind|Data|Skolem|Var|Reify|Expr|Plex)*,
+		  (repo)?, (slot)*, (resl)?
+		)
+
+		however, this is non-deterministic, so it is (equivalently) restructured as follows:
+		(
+			oid?, (op | Fun), (slot)*, (resl)?,
+			( 
+				( 
+					( (arg|Ind|Data|Skolem|Var|Reify|Expr|Plex)+, (repo)? )
+					|
+					(repo)
+				),
+				(slot)*, (resl)?
+			)?
+		)
+		
+		Note the 'positionalized' normal form where the op role is only
+		at the beginning of the Expr.
+	-->
+	<xs:attributeGroup name="Expr.attlist">
+		<xs:attributeGroup ref="type.attrib"/>
+		<xs:attributeGroup ref="in.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Expr.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:element name="op" type="op-Expr.type"/>
+				<xs:group ref="op-Expr.content"/>
+			</xs:choice>
+			<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="resl" minOccurs="0"/>
+			<xs:sequence minOccurs="0">
+				<xs:choice>
+					<xs:sequence>
+						<xs:choice maxOccurs="unbounded">
+							<xs:element ref="arg"/>
+							<xs:group ref="arg.content"/>
+						</xs:choice>
+						<xs:element ref="repo" minOccurs="0"/>
+					</xs:sequence>
+					<xs:element ref="repo"/>
+				</xs:choice>
+				<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="resl" minOccurs="0"/>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Expr.type">
+		<xs:annotation>
+			<xs:appinfo>
+				<sch:pattern name="Uninterpreted functions">
+					<sch:rule context="r:Expr/r:Fun[@in='no']">
+						<sch:assert test=
+							"not(../r:Expr/r:Fun[@in='yes'] or
+							     ../r:arg/r:Expr/r:Fun[@in='yes'] or
+								 ../r:Expr/r:op/r:Fun[@in='yes'] or 
+								 ../r:arg/r:Expr/r:op/r:Fun[@in='yes'])">
+							Functions nested within an uninterpreted function must also be uninterpreted.
+						</sch:assert>
+					</sch:rule>
+					<sch:rule context="r:Expr/r:op/r:Fun[@in='no']">
+						<sch:assert test=
+							"not(../../r:Expr/r:Fun[@in='yes'] or
+								 ../../r:arg/r:Expr/r:Fun[@in='yes'] or
+								 ../../r:Expr/r:op/r:Fun[@in='yes'] or 
+								 ../../r:arg/r:Expr/r:op/r:Fun[@in='yes'])">
+							Functions nested within an uninterpreted function must also be uninterpreted.
+						</sch:assert>
+					</sch:rule>
+				</sch:pattern>
+			</xs:appinfo>
+		</xs:annotation>
+		<xs:group ref="Expr.content"/>
+		<xs:attributeGroup ref="Expr.attlist"/>
+	</xs:complexType>
+	<xs:element name="Expr" type="Expr.type"/>
+	
+	<!--
+		*** op ***
+		An operator expression including the function name of an expression.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-op
+				
+		content model (within Expr): (Fun)
+		
+		Other (context-sensitive) versions of <op> are in the atom and holog modules.
+	-->
+	<!-- the (empty) attribute list is declared in the atom module -->
+	<xs:group name="op-Expr.content">
+		<xs:sequence>
+			<xs:element ref="Fun"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="op-Expr.type">
+		<xs:group ref="op-Expr.content"/>
+		<xs:attributeGroup ref="op.attlist"/>
+	</xs:complexType>
+	
+	<!--
+		*** Fun ***
+		A user-defined function name.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Fun
+
+		content model: (#PCDATA)
+	-->
+	<xs:attributeGroup name="Fun.attlist">
+		<xs:attributeGroup ref="uri.attrib"/>
+		<xs:attributeGroup ref="in.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Fun.content">
+		<xs:sequence/>
+	</xs:group>
+	<xs:complexType name="Fun.type" mixed="true">
+		<xs:group ref="Fun.content"/>
+		<xs:attributeGroup ref="Fun.attlist"/>
+	</xs:complexType>
+	<xs:element name="Fun" type="Fun.type"/>
+	
+	<!--
+		*** Plex ***
+		An unordered collection of arguments without a constructor.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Plex
+		
+		content model (within Atom, Plex, slot):
+		( (slot)*, (arg | Ind | Skolem | Var | Expr | Plex)*, (repo)?, (slot)*, (resl)? )
+
+		however, this is non-deterministic, so it is (equivalently) restructured as follows:
+		(
+		   oid?, (slot)*,
+		     (
+		        ( (arg|Ind|Data|Skolem|Var|Reify|Expr|Plex)+, (repo)?, (slot)*, (resl)? )?
+		        |
+                     ( (repo), (slot)*, (resl)? )
+                     |
+                     (resl)
+		     )
+		)
+
+		content model (within repo): ( (arg | Ind | Skolem | Var | Expr | Plex | repo)* )
+		content model (within resl): ( (slot | resl)* )
+	-->
+	<xs:attributeGroup name="Plex.attlist"/>
+	<xs:group name="Plex.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:choice>
+				<xs:sequence minOccurs="0">
+					<xs:choice maxOccurs="unbounded">
+						<xs:element ref="arg"/>
+						<xs:group ref="arg.content"/>
+					</xs:choice>
+					<xs:element ref="repo" minOccurs="0"/>
+					<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+					<xs:element ref="resl" minOccurs="0"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="repo"/>
+					<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+					<xs:element ref="resl" minOccurs="0"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element ref="resl"/>
+				</xs:sequence>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="Plex-repo.content">
+		<xs:sequence>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="arg"/>
+				<xs:group ref="arg.content"/>
+				<xs:element ref="repo"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:group name="Plex-resl.content">
+		<xs:sequence>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="slot" type="slot.type"/>
+				<xs:element ref="resl"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Plex.type">
+		<xs:group ref="Plex.content"/>
+		<xs:attributeGroup ref="Plex.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="Plex-repo.type">
+		<xs:group ref="Plex-repo.content"/>
+		<xs:attributeGroup ref="Plex.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="Plex-resl.type">
+		<xs:group ref="Plex-resl.content"/>
+		<xs:attributeGroup ref="Plex.attlist"/>
+	</xs:complexType>
+	<xs:element name="Plex" type="Plex.type"/>
+	
+	<!--
+		*** @in ***
+		An attribute indicating whether a function or expression is interpreted.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@in
+	-->
+	<xs:attributeGroup name="in.attrib">
+		<xs:attribute name="in" use="optional" default="no">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="no"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	<!-- this version replaces the above one in equality sublanguages -->
+	<xs:attributeGroup name="in-equality.attrib">
+		<xs:attribute name="in" use="optional" default="no">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="no"/>
+					<xs:enumeration value="yes"/>
+					<xs:enumeration value="semi"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/frame_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/frame_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/frame_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML frames.
+			File: frame_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-17
+
+			See http://www.daml.org/services/swsl/report/swsl/#ruleml-frames for more details.
+			
+			This module declares the following RuleML elements:
+			* Set
+			* InstanceOf
+			* SubclassOf
+			* Signature
+			* Get
+			* SlotProd
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** Set ***
+		Set-valued result as in t[m -> {v1,...,vk}].
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Set
+
+		content model: ( (Ind|Data|Skolem|Var|Reify)* )
+	-->
+      <xs:attributeGroup name="Set.attlist"/>
+	<xs:group name="Set.content">
+		<xs:sequence>
+			<xs:group ref="arg.content" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Set.type">
+		<xs:group ref="Set.content"/>
+		<xs:attributeGroup ref="Set.attlist"/>
+	</xs:complexType>
+	<xs:element name="Set" type="Set.type"/>
+
+	<!--
+		*** InstanceOf ***
+		Class membership molecule.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-InstanceOf
+
+		content model: ( (Ind|Data|Skolem|Var|Reify), (Ind|Data|Skolem|Var|Reify) )
+	-->
+      <xs:attributeGroup name="InstanceOf.attlist"/>
+	<xs:group name="InstanceOf.content">
+		<xs:sequence>
+			<xs:group ref="arg.content" minOccurs="2" maxOccurs="2"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="InstanceOf.type">
+		<xs:group ref="InstanceOf.content"/>
+		<xs:attributeGroup ref="InstanceOf.attlist"/>
+	</xs:complexType>
+	<xs:element name="InstanceOf" type="InstanceOf.type"/>
+
+	<!--
+		*** SubclassOf ***
+		Subclass molecule.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-SubclassOf
+
+		content model: ( (Ind|Data|Skolem|Var|Reify), (Ind|Data|Skolem|Var|Reify) )
+	-->
+      <xs:attributeGroup name="SubclassOf.attlist"/>
+	<xs:group name="SubclassOf.content">
+		<xs:sequence>
+			<xs:group ref="arg.content" minOccurs="2" maxOccurs="2"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="SubclassOf.type">
+		<xs:group ref="SubclassOf.content"/>
+		<xs:attributeGroup ref="SubclassOf.attlist"/>
+	</xs:complexType>
+	<xs:element name="SubclassOf" type="SubclassOf.type"/>
+
+	<!--
+		*** Signature ***
+		Signature molecule.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Signature
+
+		content model: ( oid, (op|Con|Data|Skolem|Var|Reify|Hterm)?, slot* )
+	-->
+      <xs:attributeGroup name="Signature.attlist"/>
+	<xs:group name="Signature.content">
+		<xs:sequence>
+			<xs:element ref="oid"/>
+			<xs:choice minOccurs="0">
+				<xs:element name="op" type="op-hterm.type"/>				
+				<xs:group ref="op-hterm.content"/>
+			</xs:choice>
+			<xs:element name="slot" type="slot-frame.type" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Signature.type">
+		<xs:group ref="Signature.content"/>
+		<xs:attributeGroup ref="Signature.attlist"/>
+	</xs:complexType>
+	<xs:element name="Signature" type="Signature.type"/>
+
+	<!--
+		*** Get ***
+		Slot access primitive.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Get		
+
+		content model: ( oid, SlotProd )
+	-->
+      <xs:attributeGroup name="Get.attlist"/>
+	<xs:group name="Get.content">
+		<xs:sequence>
+			<xs:element ref="oid"/>
+			<xs:element ref="SlotProd"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Get.type">
+		<xs:group ref="Get.content"/>
+		<xs:attributeGroup ref="Get.attlist"/>
+	</xs:complexType>
+	<xs:element name="Get" type="Get.type"/>
+
+	<!--
+		*** SlotProd ***
+		Polyadic path expressions element.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-SlotProd		
+
+		content model: ( (Ind|Data|Skolem|Var|Reify)+ )
+	-->
+      <xs:attributeGroup name="SlotProd.attlist"/>
+	<xs:group name="SlotProd.content">
+		<xs:sequence>
+			<xs:group ref="arg.content" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="SlotProd.type">
+		<xs:group ref="SlotProd.content"/>
+		<xs:attributeGroup ref="SlotProd.attlist"/>
+	</xs:complexType>
+	<xs:element name="SlotProd" type="SlotProd.type"/>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/holog_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/holog_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/holog_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,222 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for higher-order logic in RuleML.
+			File: holog_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+			
+			See http://www.daml.org/services/swsl/report/swsl/#ruleml-hilog for more details.
+
+			This module declares the following RuleML elements:
+			* Hterm
+			* Atom
+			* slot
+			* op
+			* Con
+			* @minCard
+			* @maxCard
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** Hterm ***
+		A Hilog term, generalizing an atom and an expression.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Hterm
+		
+		content model:
+		( 
+		   (oid)?, (op | Con | Data | Skolem | Var | Reify | Hterm), (slot)*, (resl)?,
+		   (arg | Con | Data | Skolem | Var | Reify | Hterm)*, (repo)?, (slot)*, (resl)?
+		)
+
+		however, this is non-deterministic, so it is (equivalently) restructured as follows:
+		(
+			(oid)?, (op | Con | Data | Skolem | Var | Reify | Hterm), (slot)*, (resl)?,
+			( 
+				( 
+					((arg|Con|Data|Skolem|Var|Reify|Hterm)+, (repo)?)
+					|
+					(repo)
+				),
+				(slot)*, (resl)?
+			)?
+		)                    
+	-->
+	<xs:attributeGroup name="Hterm.attlist"/>
+	<xs:group name="Hterm.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:element name="op" type="op-hterm.type"/>
+				<xs:group ref="op-hterm.content"/>	
+			</xs:choice>
+			<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element ref="resl" minOccurs="0"/>
+			<xs:sequence minOccurs="0">
+				<xs:choice>
+					<xs:sequence>
+						<xs:choice minOccurs="1" maxOccurs="unbounded">
+							<xs:element ref="arg"/>
+							<xs:group ref="arg.content"/>
+						</xs:choice>
+						<xs:element ref="repo" minOccurs="0"/>
+					</xs:sequence>
+					<xs:element ref="repo"/>
+				</xs:choice>
+				<xs:element name="slot" type="slot.type" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="resl" minOccurs="0"/>
+			</xs:sequence>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Hterm.type">
+		<xs:group ref="Hterm.content"/>
+		<xs:attributeGroup ref="Hterm.attlist"/>
+	</xs:complexType>
+	<xs:element name="Hterm" type="Hterm.type"/>
+
+	<!--
+        *** Atom ***
+		A logical atom, i.e. an expression formed from a predicate
+		applied to a collection of its (logical) arguments.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Atom
+	
+		content model (in SWSL sublanguages):
+		( oid, (op | Con | Skolem | Var | Reify | Hterm)?, slot* )
+		
+		Another (context-sensitive) version of <Atom> is in the atom module.
+		
+		Note the 'positionalized' normal form where the oid and op roles
+		are at the beginning of the atom.
+	-->
+	<xs:group name="Atom-frame.extend">
+		<xs:sequence>
+			<xs:element ref="oid"/>
+			<xs:choice minOccurs="0">
+				<xs:element name="op" type="op-hterm.type"/>				
+				<xs:group ref="op-hterm.content"/>
+			</xs:choice>
+		</xs:sequence>			
+	</xs:group>
+	<xs:group name="Atom-frame.content">
+		<xs:sequence>
+			<xs:group ref="Atom-frame.extend"/>
+			<xs:element name="slot" type="slot-frame.type" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>		
+	</xs:group>
+	<xs:complexType name="Atom-frame.type">
+		<xs:group ref="Atom-frame.content"/>
+		<xs:attributeGroup ref="Atom.attlist"/>
+	</xs:complexType>
+	
+	<!--
+		*** slot ***
+		A (unary) user-defined slot consisting only of a filler, supported only
+		within Atoms in frame sublanguages.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-slot
+
+		content model (in frame sublanguages):
+		( (Con | Hterm), (Con | Hterm | Skolem | Var | Reify)? )
+		
+		Another (context-sensitive) version of <slot> is in the slot module.
+	-->
+	<xs:attributeGroup name="slot-frame.attlist">
+		<xs:attributeGroup ref="card.attrib"/>
+		<xs:attributeGroup ref="minCard.attrib"/>
+		<xs:attributeGroup ref="maxCard.attrib"/>
+		<xs:attributeGroup ref="weight.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="slot-frame.content">
+		<xs:sequence>
+			<xs:group ref="slot-name.extend"/>
+			<xs:group ref="arg.content" minOccurs="0"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="slot-frame.type">
+		<xs:group ref="slot-frame.content"/>
+		<xs:attributeGroup ref="slot-frame.attlist"/>
+	</xs:complexType>
+
+
+	<!--
+		*** op ***
+		An operator expression including the neutralized constant of a Hilog term.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-op
+
+		content model (within Hterm): (Con | Skolem | Var | Reify | Hterm)
+		
+		Other (context-sensitive) versions of <op> are in the atom and expr modules.
+	-->
+	<!-- the (empty) attribute list is declared in the atom module -->
+	<xs:group name="op-hterm.content">
+		<xs:choice>
+			<xs:element ref="Con"/>
+			<xs:element ref="Skolem"/>			
+			<xs:element ref="Var"/>
+			<xs:element ref="Reify"/>
+			<xs:element ref="Hterm"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="op-hterm.type">
+		<xs:group ref="op-hterm.content"/>
+		<xs:attributeGroup ref="op.attlist"/>
+	</xs:complexType>
+
+	<!--
+		*** Con ***
+		A neutralized constant (for a relation and individual constant) of a Hilog term.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Con
+
+		content model: (#PCDATA)
+	-->
+   <xs:attributeGroup name="Con.attlist">
+		   <xs:attributeGroup ref="type.attrib"/>
+		   <xs:attributeGroup ref="uri.attrib"/>
+   </xs:attributeGroup>
+	<xs:group name="Con.content">
+		<xs:sequence/>
+	</xs:group>
+	<xs:complexType name="Con.type" mixed="true">
+		<xs:group ref="Con.content"/>
+		<xs:attributeGroup ref="Con.attlist"/>
+	</xs:complexType>
+	<xs:element name="Con" type="Con.type"/>
+	
+	<!--
+		*** @minCard ***
+		An attribute optionally specifying a slot's minimum cardinality.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@minCard		
+	-->
+	<xs:attributeGroup name="minCard.attrib">
+		<xs:attribute name="minCard" type="xs:nonNegativeInteger" use="optional"/>
+	</xs:attributeGroup>
+
+	<!--
+		*** @maxCard ***
+		An attribute optionally specifying a slot's maximum cardinality.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@maxCard		
+	-->
+	<xs:attributeGroup name="maxCard.attrib">
+		<xs:attribute name="maxCard" type="xs:nonNegativeInteger" use="optional"/>
+	</xs:attributeGroup>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/naf_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/naf_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/naf_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for negation-as-failure in RuleML.
+			File: naf_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-17
+			
+			This module declares the following RuleML elements:
+			* Naf
+			* weak
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** Naf ***
+		A "by default" negation of a logical atom (i.e. "weak" negation or
+		negation-as-failure).
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Naf
+
+		content model: ( oid?, (weak | Atom) )
+	-->
+	<xs:attributeGroup name="Naf.attlist"/>
+	<xs:group name="Naf.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:element ref="weak"/>
+				<xs:group ref="weak.content"/>
+			</xs:choice>
+		</xs:sequence>			
+	</xs:group>
+	<xs:complexType name="Naf.type">
+		<xs:group ref="Naf.content"/>
+		<xs:attributeGroup ref="Naf.attlist"/>
+	</xs:complexType>
+	<xs:element name="Naf" type="Naf.type"/>
+
+	<!--
+		*** weak ***
+		A role used for negation as failure.
+	
+		See http://www.ruleml.org/0.91/glossary/#gloss-weak
+
+		content model: ( Atom )
+	-->
+	<xs:attributeGroup name="weak.attlist"/>
+	<xs:group name="weak.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="weak.type">
+		<xs:group ref="weak.content"/>
+		<xs:attributeGroup ref="weak.attlist"/>
+	</xs:complexType>
+	<xs:element name="weak" type="weak.type"/>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/neg_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/neg_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/neg_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for (strong) negation in RuleML.
+			File: neg_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-17
+			
+			This module declares the following RuleML elements:
+			* Neg
+			* strong
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** Neg ***
+		A classical negation of a logical atom (i.e. classical or "strong" negation).
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Neg
+
+		content model: ( oid?, (strong | Atom) )
+	-->
+	<xs:attributeGroup name="Neg.attlist"/>
+	<xs:group name="Neg.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice>
+				<xs:element ref="strong"/>		
+				<xs:group ref="strong.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Neg.type">
+		<xs:group ref="Neg.content"/>
+		<xs:attributeGroup ref="Neg.attlist"/>
+	</xs:complexType>
+	<xs:element name="Neg" type="Neg.type"/>
+
+	<!--
+		*** strong ***
+		A role used for classical negation.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-strong
+
+		content model: ( Atom )
+	-->
+	<xs:attributeGroup name="strong.attlist"/>
+	<xs:group name="strong.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="strong.type">
+		<xs:group ref="strong.content"/>
+		<xs:attributeGroup ref="strong.attlist"/>
+	</xs:complexType>
+	<xs:element name="strong" type="strong.type"/>
+		
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/performative_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/performative_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/performative_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML performatives.
+			File: performative_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-17
+						
+			This module declares the following RuleML elements:
+			* RuleML
+			* Assert
+			* Retract
+			* Query
+			* formula
+
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** RuleML ***
+		The n-ary top-level of a RuleML document.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-RuleML
+
+		content model:
+		( oid?, (Assert | Retract | Query)* )
+	-->
+	<xs:attributeGroup name="RuleML.attlist"/>
+	<xs:group name="RuleML.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="Assert"/>
+				<xs:element ref="Retract"/>
+				<xs:element ref="Query"/>
+			</xs:choice>
+		</xs:sequence>		
+	</xs:group>
+	<xs:complexType name="RuleML.type">
+		<xs:group ref="RuleML.content"/>
+		<xs:attributeGroup ref="RuleML.attlist"/>
+	</xs:complexType>
+	<xs:element name="RuleML" type="RuleML.type"/>
+	
+	<!--
+		*** Assert ***
+		A KQML-like performative acting as a wrapper specifying that its content is
+		asserted, making an 'implicit <Rulebase>' assumption.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Assert 
+
+		content model:
+		( oid?, (formula | Rulebase | Atom | Implies | Equivalent | Entails | Forall)* )
+	-->
+	<xs:attributeGroup name="Assert.attlist">
+		<xs:attributeGroup ref="mapDirection.attrib"/>
+		<xs:attributeGroup ref="mapClosure.attrib"/>
+		<xs:attributeGroup ref="mapMaterial.attrib"/>
+	</xs:attributeGroup>	
+	<xs:group name="Assert.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-assert.type"/>
+				<xs:group ref="formula-assert.content"/>
+			</xs:choice>	
+		</xs:sequence>			
+	</xs:group>
+	<xs:complexType name="Assert.type">
+		<xs:group ref="Assert.content"/>
+		<xs:attributeGroup ref="Assert.attlist"/>
+	</xs:complexType>
+	<xs:element name="Assert" type="Assert.type"/>
+	
+	<!--
+		*** Retract ***
+		A performative similar to KQML's 'untell' that acts as a wrapper specifying that its
+		content is to be deleted, making an 'implicit <Rulebase>' assumption.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Retract
+
+		content model:
+		( oid?, (formula | Rulebase | Atom | Implies | Equivalent | Entails | Forall)* )
+	-->
+	<xs:attributeGroup name="Retract.attlist">
+		<xs:attributeGroup ref="mapDirection.attrib"/>
+		<xs:attributeGroup ref="mapClosure.attrib"/>
+		<xs:attributeGroup ref="mapMaterial.attrib"/>
+	</xs:attributeGroup>	
+	<xs:group name="Retract.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-assert.type"/>
+				<xs:group ref="formula-assert.content"/>
+			</xs:choice>	
+		</xs:sequence>			
+	</xs:group>
+	<xs:complexType name="Retract.type">
+		<xs:group ref="Retract.content"/>
+		<xs:attributeGroup ref="Retract.attlist"/>
+	</xs:complexType>
+	<xs:element name="Retract" type="Retract.type"/>
+	
+	<!--
+		*** Query ***
+		A KQML-like performative acting as a wrapper specifying that its content is
+		queried, making an 'implicit <Rulebase>' assumption.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Query 
+
+		content model:
+		( oid?, (formula | Rulebase | Atom | And | Or | Entails | Exists)* )
+	-->
+	<xs:attributeGroup name="Query.attlist">
+		<xs:attributeGroup ref="closure.attrib"/>
+	</xs:attributeGroup>	
+	<xs:group name="Query.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="formula" type="formula-query.type"/>		
+				<xs:group ref="formula-query.content"/>
+			</xs:choice>	
+		</xs:sequence>	
+	</xs:group>
+	<xs:complexType name="Query.type">
+		<xs:group ref="Query.content"/>
+		<xs:attributeGroup ref="Query.attlist"/>
+	</xs:complexType>
+	<xs:element name="Query" type="Query.type"/>
+	
+	<!--
+		*** formula ***
+		The formula role of a performative (<Assert>, <Retract> or <Query>).
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-formula
+
+		content model (below Assert): (Rulebase | Atom | Implies | Equivalent | Entails | Forall)
+		content model (below Query): (Rulebase | Atom | And | Or | Entails | Exists)
+
+		Other (context-sensitive) versions of <formula> are in the
+		connective and quantifier modules.
+	-->
+	<!-- the (empty) attribute list is declared in the connective module -->
+	<xs:group name="formula-assert.content">
+		<xs:choice>
+			<xs:element ref="Rulebase"/>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element ref="Implies"/>
+			<xs:element ref="Equivalent"/>
+			<xs:element ref="Entails"/>
+			<xs:element ref="Forall"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="formula-query.content">
+		<xs:choice>
+			<xs:element ref="Rulebase"/>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element name="And" type="And-query.type"/>
+			<xs:element name="Or" type="Or-query.type"/>
+			<xs:element ref="Entails"/>
+			<xs:element ref="Exists"/>
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="formula-assert.type">
+		<xs:group ref="formula-assert.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+	<xs:complexType name="formula-query.type">
+		<xs:group ref="formula-query.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/quantifier_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/quantifier_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/quantifier_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd" 
+elementFormDefault="qualified"
+>
+ 
+<!-- note that elementFormDefault is qualified because of local declarations -->
+ 
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML quantifiers.
+			File: quantifier_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-16
+			
+			This module declares the following RuleML elements:
+			* Forall
+			* Exists
+			* declare
+			* formula
+						
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** Forall ***
+		Explicit universal quantifier.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-Forall
+
+		content model: ( oid?, (declare|Var)+, (formula|Atom|Implies|Equivalent|Forall) )
+	-->
+	<xs:attributeGroup name="Forall.attlist"/>
+	<xs:group name="Forall.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="1" maxOccurs="unbounded">
+				<xs:element ref="declare"/>
+				<xs:group ref="declare.content"/>
+			</xs:choice>
+			<xs:choice>
+				<xs:element name="formula" type="formula-forall.type"/>
+				<xs:group ref="formula-forall.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Forall.type">
+		<xs:group ref="Forall.content"/>
+		<xs:attributeGroup ref="Forall.attlist"/>
+	</xs:complexType>
+	<xs:element name="Forall" type="Forall.type"/>
+
+	<!--
+		*** Exists ***
+		Explicit existential quantifier.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Exists
+
+		content model: ( oid?, (declare|Var)+, (formula|Atom|And|Or|Exists) )
+	-->
+	<xs:attributeGroup name="Exists.attlist"/>
+	<xs:group name="Exists.content">
+		<xs:sequence>
+			<xs:element ref="oid" minOccurs="0"/>
+			<xs:choice minOccurs="1" maxOccurs="unbounded">
+				<xs:element ref="declare"/>
+				<xs:group ref="declare.content"/>
+			</xs:choice>
+			<xs:choice>
+				<xs:element name="formula" type="formula-exists.type"/>
+				<xs:group ref="formula-exists.content"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Exists.type">
+		<xs:group ref="Exists.content"/>
+		<xs:attributeGroup ref="Exists.attlist"/>
+	</xs:complexType>
+	<xs:element name="Exists" type="Exists.type"/>
+	
+	<!--
+		*** declare ***
+		A role used for variables declared within a quantifier.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-declare
+
+		content model: ( Var )
+	-->
+	<xs:attributeGroup name="declare.attlist"/>
+	<xs:group name="declare.content">
+		<xs:sequence>
+			<xs:element ref="Var"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="declare.type">
+		<xs:group ref="declare.content"/>
+		<xs:attributeGroup ref="declare.attlist"/>
+	</xs:complexType>
+	<xs:element name="declare" type="declare.type"/>
+	
+	<!--
+		*** formula ***
+		The formula role of a quantifier (<Forall> or <Exists>).
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-formula
+
+		content model (below Forall): ( Atom | Implies | Equivalent | Forall )
+		content model (below Exists): ( Atom | And | Or | Exists )
+		
+		Other (context-sensitive) versions of <formula> are in the
+		connective and performative modules.
+	-->
+	<!-- the (empty) attribute list is declared in the connective module -->
+	<xs:group name="formula-forall.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element ref="Implies"/>			
+			<xs:element ref="Equivalent"/>			
+			<xs:element ref="Forall"/>				
+		</xs:choice>
+	</xs:group>	
+	<xs:complexType name="formula-forall.type">
+		<xs:group ref="formula-forall.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+	<xs:group name="formula-exists.content">
+		<xs:choice>
+			<xs:element name="Atom" type="Atom.type"/>
+			<xs:element name="And" type="And-inner.type"/>
+			<xs:element name="Or" type="Or-inner.type"/>		
+			<xs:element ref="Exists"/>	
+		</xs:choice>
+	</xs:group>	
+	<xs:complexType name="formula-exists.type">
+		<xs:group ref="formula-exists.content"/>
+		<xs:attributeGroup ref="formula.attlist"/>
+	</xs:complexType>
+		
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/rest_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/rest_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/rest_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML rest variables.
+			File: rest_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-17
+			
+			This module declares the following RuleML elements:
+			* repo
+			* resl
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** repo ***
+		A positional rest variable.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-repo
+
+		content model: (Var | Plex)
+	-->
+	<xs:attributeGroup name="repo.attlist"/>
+	<xs:group name="repo.content">
+		<xs:choice>
+			<xs:element ref="Var"/>
+			<xs:element name="Plex" type="Plex-repo.type"/>			
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="repo.type">
+		<xs:group ref="repo.content"/>
+		<xs:attributeGroup ref="repo.attlist"/>
+	</xs:complexType>
+	<xs:element name="repo" type="repo.type"/>
+
+	<!--
+		*** resl ***
+		A slotted rest variable.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-resl		
+
+		content model: (Var | Plex)
+	-->
+	<xs:attributeGroup name="resl.attlist"/>
+	<xs:group name="resl.content">
+		<xs:choice>
+			<xs:element ref="Var"/>
+			<xs:element name="Plex" type="Plex-resl.type"/>			
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="resl.type">
+		<xs:group ref="resl.content"/>
+		<xs:attributeGroup ref="resl.attlist"/>
+	</xs:complexType>
+	<xs:element name="resl" type="resl.type"/>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/slot_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/slot_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/slot_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML slots.
+			File: slot_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+			
+			This module declares the following RuleML element and attributes:
+			* slot
+			* @card
+			* @weight
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!--
+		*** slot ***
+		A user-defined slot consisting of a name (first position) and a filler (second position).
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-slot
+
+		content model (normally):
+		( (Ind | Data), (Ind | Data | Skolem | Var | Reify) )
+		
+		Another (context-sensitive) version of <slot> is in the holog module.
+	-->
+	<xs:attributeGroup name="slot.attlist">
+		<xs:attributeGroup ref="card.attrib"/>
+		<xs:attributeGroup ref="weight.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="slot-name.extend">
+		<xs:choice>
+			<xs:element ref="Ind"/>
+			<xs:element ref="Data"/>
+		</xs:choice>
+	</xs:group>
+	<xs:group name="slot.content">
+		<xs:sequence>
+			<xs:group ref="slot-name.extend"/>
+			<xs:group ref="arg.content"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="slot.type">
+		<xs:group ref="slot.content"/>
+		<xs:attributeGroup ref="slot.attlist"/>
+	</xs:complexType>
+	<xs:element name="slot" type="slot.type"/>
+
+	<!--
+		*** @card ***
+		An attribute optionally specifying a slot's cardinality.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@card		
+	-->
+	<xs:attributeGroup name="card.attrib">
+		<xs:attribute name="card" type="xs:nonNegativeInteger" use="optional"/>
+	</xs:attributeGroup>
+
+	<!--
+		*** @weight ***
+		An attribute optionally specifying a slot's relative weight.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@weight		
+	-->
+	<xs:attributeGroup name="weight.attrib">
+		<xs:attribute name="weight" use="optional">
+			<xs:simpleType>
+				<xs:restriction base="xs:decimal">
+					<xs:minInclusive value="0"/>
+					<xs:maxInclusive value="1"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:attributeGroup>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/term_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/term_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/term_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,176 @@
+<?xml version="1.0"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for RuleML terms.
+			File: term_module.xsd
+			Version: 0.91
+			Last Modification: 2006-08-24
+			
+			This module declares the following RuleML elements and attributes:
+			* arg
+			* Ind
+			* Data
+			* Var
+			* Skolem
+			* Reify
+			* @type
+			* @index
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+
+	<!--
+		*** arg ***
+		A role used for the positional arguments of a logical atom.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-arg
+
+		content model: (Ind | Data | Var | Skolem | Reify)
+	-->
+	<xs:attributeGroup name="arg.attlist">
+		<xs:attributeGroup ref="index.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="arg.content">
+		<xs:choice>
+			<xs:element ref="Ind"/>
+			<xs:element ref="Data"/>
+			<xs:element ref="Var"/>
+			<xs:element ref="Skolem"/>
+			<xs:element ref="Reify"/>			
+		</xs:choice>
+	</xs:group>
+	<xs:complexType name="arg.type">
+		<xs:group ref="arg.content"/>
+		<xs:attributeGroup ref="arg.attlist"/>
+	</xs:complexType>
+	<xs:element name="arg" type="arg.type"/>
+
+	<!--
+		*** Ind ***
+		An individual constant, as in predicate logic, which can also be considered to
+		be a fixed argument like RDF resources.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Ind
+		
+		content model: (#PCDATA)
+	-->
+       <xs:attributeGroup name="Ind.attlist">
+               <xs:attributeGroup ref="type.attrib"/>
+               <xs:attributeGroup ref="uri.attrib"/>
+       </xs:attributeGroup>
+	<xs:group name="Ind.content">
+		<xs:sequence/>
+	</xs:group>	
+	<xs:complexType name="Ind.type" mixed="true">
+		<xs:group ref="Ind.content"/>
+		<xs:attributeGroup ref="Ind.attlist"/>
+	</xs:complexType>
+	<xs:element name="Ind" type="Ind.type"/>
+
+	<!--
+		*** Data ***
+		A fixed argument like RDF literals, allowing XML data.  It may be
+		optionally associated with an XML Schema built-in datatype
+		(see http://www.w3.org/TR/xmlschema-2/#built-in-datatypes)
+		using the built-in xsi:type attribute.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Data
+		
+		content model: (#PCDATA) [optionally datatyped]
+	-->
+	<xs:element name="Data" type="xs:anyType"/>
+
+	<!--
+		*** Var ***
+		A logical variable, as in logic programming.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Var
+
+		content model: (#PCDATA)
+	-->
+	<xs:attributeGroup name="Var.attlist">
+		<xs:attributeGroup ref="type.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Var.content">
+		<xs:sequence/>
+	</xs:group>
+	<xs:complexType name="Var.type" mixed="true">
+		<xs:group ref="Var.content"/>
+		<xs:attributeGroup ref="Var.attlist"/>
+	</xs:complexType>
+	<xs:element name="Var" type="Var.type"/>
+	
+	<!--
+		*** Skolem ***
+		A Skolem individual constant, like RDF's blank nodes.
+
+		See http://www.ruleml.org/0.91/glossary/#gloss-Skolem
+
+		content model: (#PCDATA)
+	-->
+	<xs:attributeGroup name="Skolem.attlist">
+		<xs:attributeGroup ref="type.attrib"/>
+	</xs:attributeGroup>
+	<xs:group name="Skolem.content">
+		<xs:sequence/>
+	</xs:group>
+	<xs:complexType name="Skolem.type" mixed="true">
+		<xs:group ref="Skolem.content"/>
+		<xs:attributeGroup ref="Skolem.attlist"/>
+	</xs:complexType>
+	<xs:element name="Skolem" type="Skolem.type"/>
+
+	<!--
+		*** Reify ***
+		Supports reification (a kind of instantiation or quasi-quotation)
+		as needed by SWSL. It allows any RuleML tag available within the
+		current sublanguage as content, treating it as a term for performing
+		reasoning on.
+				
+		See http://www.ruleml.org/0.91/glossary/#gloss-Reify		
+		
+		content model: ( (any valid RuleML)? )
+	-->
+	<xs:attributeGroup name="Reify.attlist"/>
+	<xs:group name="Reify.content">
+		<xs:sequence>
+			<!-- <Reify> only allows valid RuleML -->
+			<xs:any minOccurs="0" processContents="strict" namespace="##targetNamespace"/>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="Reify.type">
+		<xs:group ref="Reify.content"/>
+		<xs:attributeGroup ref="Reify.attlist"/>
+	</xs:complexType>
+	<xs:element name="Reify" type="Reify.type"/>
+
+	<!--
+		*** @type ***
+		An attribute for optionally specifying a term's (user-defined) type.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@type
+	-->
+	<xs:attributeGroup name="type.attrib">
+		<xs:attribute name="type" type="xs:string" use="optional"/>
+	</xs:attributeGroup>
+
+	<!--
+		*** @index ***
+		A required attribute for specifying the position of a positional
+		argument within an atom.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@index
+	-->
+	<xs:attributeGroup name="index.attrib">
+		<xs:attribute name="index" type="xs:positiveInteger" use="required"/>
+	</xs:attributeGroup>			
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/uri_module.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/uri_module.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/modules/uri_module.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<xs:schema
+targetNamespace="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns="http://www.ruleml.org/0.91/xsd"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			This is the XML Schema module for URI references in RuleML.
+			File: uri_module.xsd
+			Version: 0.91
+			Last Modification: 2006-07-19
+			
+			This module declares the following RuleML attribute:
+			* @uri
+			
+			See http://www.ruleml.org/modularization for details about this modularization approach.
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!--
+		*** @uri ***
+		An attribute for referring to a URI.
+		
+		See http://www.ruleml.org/0.91/glossary/#gloss-@uri
+	-->
+	<xs:attributeGroup name="uri.attrib">
+		<xs:attribute name="uri" type="xs:anyURI" use="optional"/>
+	</xs:attributeGroup>
+	
+</xs:schema>

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafdatalog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafdatalog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafdatalog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Datalog RuleML sublanguage, including negation as failure (NAF)
+			File: nafdatalog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+
+	<!-- nafdatalog includes the 'naf' module -->
+	<xs:include schemaLocation="modules/naf_module.xsd"/>
+	
+	<!-- note the addition of Naf (negation as failure) from the negation module -->
+	<xs:redefine schemaLocation="datalog.xsd">
+
+		<!--
+			add Naf so that body's content model is:
+			(Atom | And | Or | Naf)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>
+		</xs:group>		
+		<!--
+			note that the above indirectly adds Naf to Implies so that its content model is:
+			( oid?, (head, body) | (body, head) | ( (Atom | And | Or | Naf), Atom ) )
+		-->			
+
+		<!--
+			add Naf so that Query's content model is:
+			( oid?, (formula | Rulebase | Naf | Atom | And | Or | Entails | Exists)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>	
+		</xs:group>
+	
+
+		<!--
+			add Naf so that formula's content model (when under And/Or) is:
+			(Atom | And | Or | Naf)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>	
+		</xs:group>		
+		<!-- 
+			note that the above indirectly adds Naf to And/Or so their content models are:
+			( oid?, (formula | Atom | And | Or | Naf)* )
+		-->
+
+		
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffolog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffolog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffolog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified"
+>
+
+<!-- note that elementFormDefault is qualified because of local declarations -->
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a First-Order Logic RuleML sublanguage, including negation as failure (NAF)
+			File: naffolog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+
+	<!-- naffolog includes the 'naf' module and redefines it slightly -->
+	<xs:redefine schemaLocation="modules/naf_module.xsd">	
+
+		<!--
+			Allow unrestricted nesting of first order logic formulas in Naf.
+			
+			weak's content model becomes:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists )
+		-->		
+		<xs:group name="weak.content">
+			<xs:choice>
+				<xs:group ref="weak.content"/>
+				<xs:element name="And" type="And-inner.type"/>
+				<xs:element name="Or" type="Or-inner.type"/>
+				<xs:element ref="Neg"/>
+				<xs:element ref="Implies"/>				
+				<xs:element ref="Equivalent"/>
+				<xs:element ref="Forall"/>				
+				<xs:element ref="Exists"/>	
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly changes Naf's content model to become:
+			( weak | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists )		
+		-->
+		
+		<!-- Also allow map attributes on Naf -->
+		<xs:attributeGroup name="Naf.attlist">
+			<xs:attributeGroup ref="Naf.attlist"/>
+			<xs:attributeGroup ref="mapDirection.attrib"/>
+			<xs:attributeGroup ref="mapClosure.attrib"/>
+			<xs:attributeGroup ref="mapMaterial.attrib"/>
+		</xs:attributeGroup>			
+
+	</xs:redefine>
+
+	<!-- note the addition of Naf (negation as failure) from the 'naf' module -->
+	<xs:redefine schemaLocation="folog.xsd">
+
+		<!--
+			add Naf so that body's content model is:
+			(Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly changes the content model of Implies to become:		
+			(
+				oid?, (head, body) | (body, head) |
+				(
+					(Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists),
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists)
+				) 
+			)
+		-->		
+		
+		<!--
+			add Naf so that Query's content model is:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists|Naf)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Naf"/>	
+			</xs:choice>	
+		</xs:group>
+		
+		<!--
+			add Naf so that And/Or's content model is:
+			( oid?, (formula | Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists)* )
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>	
+		</xs:group>	
+
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffologeq.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffologeq.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/naffologeq.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a First-Order Logic RuleML sublanguage, including
+			negation as failure (NAF) and equational logic
+			File: naffologeq.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- equalog includes the 'equality' module -->
+	<xs:include schemaLocation="modules/equality_module.xsd"/>
+
+	<!-- note the addition of Equal and Nanos from the equality module -->
+	<xs:redefine schemaLocation="_naffolog-to-naffologeq.xsd">
+	
+		<!-- add (modified) @in back to Expr -->
+		<xs:attributeGroup name="in.attrib">
+			<xs:attributeGroup ref="in.attrib"/>
+			<xs:attributeGroup ref="in-equality.attrib"/>
+		</xs:attributeGroup>
+		
+		<!-- add @val to Fun -->
+		<xs:attributeGroup name="Fun.attlist">
+			<xs:attributeGroup ref="Fun.attlist"/>
+			<xs:attributeGroup ref="val.attrib"/>
+		</xs:attributeGroup>
+		
+		<!--
+			add Equal so that Query's content model is:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists|Naf|Equal)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Equal"/>	
+			</xs:choice>	
+		</xs:group>	
+
+		<!--
+			add Equal so that Assert's content model is:
+			( oid?,(formula|Atom|Rulebase|And|Or|Neg|Implies|Equivalent|Entails|Forall|Exists|Equal)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>	
+		</xs:group>
+
+		<!--
+			add Equal so that head's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add Equal so that body's content model is:
+			(Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists | Equal )
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Implies so that its content model is:
+			(
+				oid?, (head, body) | (body, head) |
+				(
+					(Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists | Equal ),
+					(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal ) 
+				)
+			)
+		-->		
+
+		<!--
+			add Equal so that Forall's content model is:
+			( oid?, (declare|Var)+, (formula|Atom|And|Or|Neg|Implies|Equivalent|Forall|Exists|Equal) )
+		-->
+		<xs:group name="formula-forall.content">
+			<xs:choice>
+				<xs:group ref="formula-forall.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+
+		<!--
+			add Equal so Exists' content model is:
+			( oid?, (declare|Var)+, (formula|Atom|And|Or|Neg|Implies|Equivalent|Forall|Exists|Equal) )
+		-->
+		<xs:group name="formula-exists.content">
+			<xs:choice>
+				<xs:group ref="formula-exists.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+
+		<!--
+			add Equal so that strong's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="strong.content">
+			<xs:choice>
+				<xs:group ref="strong.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Neg so that its content model is:
+			( strong | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )
+		-->
+
+
+		<!--
+			add Equal so that weak's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+		<xs:group name="weak.content">
+			<xs:choice>
+				<xs:group ref="weak.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--		
+			note that the above indirectly adds Equal to Naf so that its content model is:
+			( weak | Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal )			
+		-->
+
+		<!--
+			add Equal so that And/Or's content model is:
+			( oid?, (formula | Atom | And | Or | Neg | Naf | Implies | Equivalent | Forall | Exists | Equal)* )
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+
+		<!--
+			add Equal so that torso's content model is:
+			(Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)
+		-->
+		<xs:group name="torso.content">
+			<xs:choice>
+				<xs:group ref="torso.content"/>
+				<xs:element ref="Equal"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Equal to Equivalent so that its content model is:
+			(
+				oid?, (torso, torso) |
+				(
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal),
+				  (Atom | And | Or | Neg | Implies | Equivalent | Forall | Exists | Equal)
+				)
+			)
+		-->		
+		
+	</xs:redefine>
+
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafhornlog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafhornlog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafhornlog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Hornlog RuleML sublanguage, including negation as failure (NAF)
+			File: nafhornlog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+
+	<!-- nafhornlog includes the 'naf' module -->
+	<xs:include schemaLocation="modules/naf_module.xsd"/>
+	
+	<!-- note the addition of Naf (negation as failure) from the negation module -->
+	<xs:redefine schemaLocation="hornlog.xsd">
+
+		<!--
+			add Naf so that body's content model is:
+			(Atom | And | Or | Naf)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>
+		</xs:group>		
+		<!--
+			note that the above indirectly adds Naf to Implies so that its content model is:
+			( oid?, (head, body) | (body, head) | ( (Atom | And | Or | Naf), Atom ) )
+		-->			
+
+		<!--
+			add Naf so that Query's content model is:
+			( (formula | Atom | Rulebase | And | Or | Entails | Exists | Naf)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Naf"/>	
+			</xs:choice>	
+		</xs:group>		
+
+		<!--
+			add Naf so that formula's content model (when under And/Or) is:
+			(Atom | And | Or | Naf)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>	
+		</xs:group>		
+		<!--
+			Note that the above indirectly adds Naf to And/Or so their content models are:
+			( (formula | Atom | And | Or | Naf)* )
+		-->
+		
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafnegdatalog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafnegdatalog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/nafnegdatalog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Datalog RuleML sublanguage, including both explicit
+				and default (strong/weak) negation
+			File: nafnegdatalog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+
+	<!-- nafnegdatalog includes the 'naf' module and redefines it slightly -->
+	<xs:redefine schemaLocation="modules/naf_module.xsd">
+
+		<!--
+			add Neg so that weak's content model is:
+			(Atom | Neg)
+		-->
+		<xs:group name="weak.content">
+			<xs:choice>
+				<xs:group ref="weak.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Neg to Naf so that Naf's content model is:
+			(weak | Atom | Neg)
+		-->		
+
+	</xs:redefine>
+	
+	<!--
+		note the addition of Naf (Negation as failure)
+	-->
+	<xs:redefine schemaLocation="negdatalog.xsd">
+
+		<!--
+			add Naf so that body's content model is:
+			(Atom | And | Or | Neg | Naf)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Naf"/>
+			</xs:choice>
+		</xs:group>
+		<!--
+			note that the above indirectly adds Naf to Implies so that its content model is:
+			( oid?, ( head, body) | ( body, head) | ( (Atom | And | Or | Neg | Naf), (Atom | Neg) ) )
+		-->	
+		
+		<!--
+			add Naf so that Query's content model is:
+			( oid?, (formula | Rulebase | Neg | Naf | Atom | And | Or | Entails | Exists)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Naf"/>	
+			</xs:choice>	
+		</xs:group>
+
+		<!--
+			add Naf so that formula's content model (when under And/Or) is:
+			(Atom | And | Or | Neg | Naf)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Naf"/>				
+			</xs:choice>	
+		</xs:group>		
+		<!--
+			note that the above indirectly adds Naf to And/Or so their content models are:
+			( oid?, (formula | Atom | And | Or | Neg | Naf)* )
+		-->		
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/negdatalog.xsd
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/negdatalog.xsd	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/negdatalog.xsd	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema 
+targetNamespace="http://www.ruleml.org/0.91/xsd" 
+xmlns="http://www.ruleml.org/0.91/xsd"
+xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+	<xs:annotation>
+		<xs:documentation xml:lang="en">
+			XML Schema for a Datalog RuleML sublanguage, including classical/strong negation
+			File: negdatalog.xsd
+			Version: 0.91
+			Last Modification: 2006-08-18
+		</xs:documentation>
+	</xs:annotation>
+	
+	<!-- negdatalog includes the 'neg' module -->
+	<xs:include schemaLocation="modules/neg_module.xsd"/>
+
+	<!-- note the addition of Neg (classical Negation) from the Negation module -->
+	<xs:redefine schemaLocation="datalog.xsd">
+
+		<!--
+			add Neg so that head's content model is:
+			(Atom | Neg)
+		-->
+		<xs:group name="head.content">
+			<xs:choice>
+				<xs:group ref="head.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>
+		
+		<!--
+			add Neg so that body's content model is:
+			(Atom | And | Or | Neg)
+		-->
+		<xs:group name="body.content">
+			<xs:choice>
+				<xs:group ref="body.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>		
+		<!--
+			note that the above indirectly adds Neg to Implies so that its content model is:
+			( oid?, ( head, body) | ( body, head) | ( (Atom | And | Or | Neg), (Atom | Neg) ) )
+		-->
+
+		<!--
+			add Neg so that Assert's content model is:
+			( oid?, (formula | Rulebase | Atom | Neg | Implies | Equivalent | Entails | Forall)* )
+		-->
+		<xs:group name="formula-assert.content">
+			<xs:choice>
+				<xs:group ref="formula-assert.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>	
+
+		<!--
+			add Neg so that Rulebase's content model is:
+			( oid?, (formula | Atom | Neg | Implies | Equivalent | Forall)* )
+		-->
+		<xs:group name="formula-rulebase.content">
+			<xs:choice>
+				<xs:group ref="formula-rulebase.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>
+		</xs:group>	
+		
+		<!--
+			add Neg so that Query's content model is:
+			( oid?, (formula | Rulebase | Neg | Atom | And | Or | Entails | Exists)* )
+		-->
+		<xs:group name="formula-query.content">
+			<xs:choice>
+				<xs:group ref="formula-query.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>	
+		</xs:group>
+
+
+		<!--
+			add Neg so that formula's content model (when under And/Or) is:
+			(Atom | And | Or | Neg)
+		-->
+		<xs:group name="formula-and-or.content">
+			<xs:choice>
+				<xs:group ref="formula-and-or.content"/>
+				<xs:element ref="Neg"/>
+			</xs:choice>	
+		</xs:group>
+		<!-- 
+			note that the above indirectly adds Neg to And/Or so their content models are:
+			( oid?, (formula | Atom | And | Or | Neg)* )
+		-->
+
+	</xs:redefine>
+	
+</xs:schema>
\ No newline at end of file

Added: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/ruleml.sch
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/ruleml.sch	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/ruleml/ruleml.sch	2009-06-04 18:56:50 UTC (rev 26829)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+
+<sch:schema xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+	<sch:ns xmlns="http://www.ruleml.org/0.91/xsd" prefix="r" uri="http://www.ruleml.org/0.91/xsd"/>
+	
+	<!--
+	Generated using Saxon as follows:
+	java -jar C:\saxon\saxon.jar -o ruleml.sch
+	http://www.ruleml.org/0.91/xsd/hornlogeq.xsd http://www.ruleml.org/schematron/XSD2Schtrn.xsl
+	
+	You can perform XSD and Schematron validation at the same time using a batch file, e.g.
+	http://www.ruleml.org/schematron/validate.bat
+	-->
+
+	<sch:pattern xmlns="http://www.ruleml.org/0.91/xsd" name="Defining equality">
+		<sch:rule context=
+			"r:Implies/r:head/r:Equal/r:lhs/r:Expr/r:Fun |
+			 r:Implies/r:Equal[2]/r:lhs/r:Expr/r:Fun | 
+			 r:Implies/r:head/r:Equal/r:Expr[1]/r:Fun | 
+			 r:Implies/r:Equal[2]/r:Expr[1]/r:Fun">
+			<sch:assert test="@in='yes'">
+				A defining equality must have an interpreted left-hand side.
+			</sch:assert>
+		</sch:rule>
+	</sch:pattern>
+
+	<sch:pattern xmlns="http://www.ruleml.org/0.91/xsd" name="Uninterpreted functions">
+		<sch:rule context="r:Expr/r:Fun[@in='no']">
+			<sch:assert test=
+				"not(../r:Expr/r:Fun[@in='yes'] or
+				     ../r:arg/r:Expr/r:Fun[@in='yes'] or
+					 ../r:Expr/r:op/r:Fun[@in='yes'] or 
+					 ../r:arg/r:Expr/r:op/r:Fun[@in='yes'])">
+				Functions nested within an uninterpreted function must also be uninterpreted.
+			</sch:assert>
+		</sch:rule>
+		<sch:rule context="r:Expr/r:op/r:Fun[@in='no']">
+			<sch:assert test=
+				"not(../../r:Expr/r:Fun[@in='yes'] or
+					 ../../r:arg/r:Expr/r:Fun[@in='yes'] or
+					 ../../r:Expr/r:op/r:Fun[@in='yes'] or 
+					 ../../r:arg/r:Expr/r:op/r:Fun[@in='yes'])">
+				Functions nested within an uninterpreted function must also be uninterpreted.
+			</sch:assert>
+		</sch:rule>
+	</sch:pattern>
+	
+	<sch:pattern xmlns="http://www.ruleml.org/0.91/xsd" name="Equivalent">
+		<sch:rule context="r:Equivalent[count( descendant::r:Equal/r:Expr | descendant::r:Equal/r:lhs/r:Expr )=2]">
+			<sch:assert test=
+				"( descendant::r:Equal[1]/descendant::r:Fun[@in = 'no']
+				  and descendant::r:Equal[2]/descendant::r:Fun[@in = 'no'] ) 
+				 or
+				 ( descendant::r:Equal[1]/descendant::r:Fun[@in = 'yes']
+				  and descendant::r:Equal[2]/descendant::r:Fun[@in = 'yes'] )">
+				Equalities within an equivalence expression must either both be interpreted or both uninterpreted.
+			</sch:assert>
+      </sch:rule>
+   </sch:pattern>
+
+   <sch:diagnostics/>
+</sch:schema>
\ No newline at end of file




More information about the jboss-svn-commits mailing list