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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 14 23:41:17 EDT 2009


Author: dsotty
Date: 2009-05-14 23:41:16 -0400 (Thu, 14 May 2009)
New Revision: 26541

Added:
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/reteoo/
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/reteoo/builder/
Modified:
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
   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/DroolsSoftKeywords.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/ConditionalElementDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/PatternDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   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/DescrBuilderTree.g
Log:
modified grammar

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -237,15 +237,22 @@
             }
             DroolsTree resultTree = (DroolsTree) parser.compilation_unit().getTree();
             
-            System.out.println(this.getClass().toString() + " HACKED TO GET DROOLSTREE");
+            System.out.println(this.getClass().toString() + " HACKED TO GET DROOLSTREE \n" + resultTree.toStringTree());
             
 
-            int j = 0;            
-            DroolsTree dtree = (DroolsTree) resultTree.getChild(j);
-            while (dtree != null && ! dtree.getToken().getText().equals("rule"))
-            	dtree = (DroolsTree) resultTree.getChild(j++);
+                       
+            if (resultTree.getChildCount() > 0)
+            {
+            	
+            	DroolsTree dtree;
+            	for (int j = 0; j < resultTree.getChildCount(); j++) {
+            		dtree = (DroolsTree) resultTree.getChild(j);
             
-           System.out.println(dtree.toIndentedStringTree());
+            		if (dtree.getToken().getText().equals("rule"))
+            			System.out.println(dtree.toIndentedStringTree());
+            		else System.out.println(dtree.toStringTree());
+            	}
+            }
 //            
             
             

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-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -996,7 +996,7 @@
                 type.setFormat( TypeDeclaration.Format.POJO );
                 Class clazz;
                 try {
-                    if ( typeDescr.getFields().size() > 0 ) {
+                    if ( typeDescr.getFields().size() > -1 ) {
                         // generate the bean if its needed
                         generateDeclaredBean( typeDescr,
                                               type,
@@ -1566,26 +1566,83 @@
     		while (idx != -1) {
     			
     			int endIdx = cons.indexOf(';', idx);
-    			if (idx < 10 || (cons.charAt(idx-8) != '/' && cons.charAt(idx-9) != '/')) {
+    			
+    			char choice = cons.charAt(idx+6);
+    			
+    			if (choice == 'K') {
+    				//injectKey
+    				idx = idx+3;
     				
+        			if (idx < 13 || (cons.charAt(idx-11) != '/' && cons.charAt(idx-12) != '/')) {
+        				
+        			
+        				StringTokenizer tok = new StringTokenizer(cons.substring(idx,endIdx),",)");
+        				tok.nextToken();
+        				ConstraintKey ck = null;
+        				if (tok.countTokens() >= 3)
+        					 ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""),
+        							tok.nextToken().replaceAll("\"", ""),
+        							tok.nextToken().replaceAll("\"", ""));
+        				else 
+        					ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""));
+        			
+        				Set<String> deps = ans.get(ck);
+        				if (deps == null) {
+        					deps = new HashSet<String>();
+        					ans.put(ck,deps);
+        				}
+        					deps.add(r.getName());
+        			}
+    				
+    			} else if (choice == 'I') {
+    				idx = idx+2;
+    				
     			
-    				StringTokenizer tok = new StringTokenizer(cons.substring(idx,endIdx),",)");
-    				tok.nextToken();
-    				ConstraintKey ck = null;
-    				if (tok.countTokens() >= 3)
-    					 ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""),
-    							tok.nextToken().replaceAll("\"", ""),
-    							tok.nextToken().replaceAll("\"", ""));
-    				else 
-    					ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""));
+        			if (idx < 12 || (cons.charAt(idx-10) != '/' && cons.charAt(idx-11) != '/')) {
+        				
+        			
+        				StringTokenizer tok = new StringTokenizer(cons.substring(idx,endIdx),",)");
+        				tok.nextToken();
+        				
+        					ConstraintKey ck = new ConstraintKey();
+        					String alias = tok.nextToken().replaceAll("\"", "");
+        						ck.setAlias(alias);
+        					
+        				Set<String> deps = ans.get(ck);
+        				if (deps == null) {
+        					deps = new HashSet<String>();
+        					ans.put(ck,deps);
+        				}
+        					deps.add(r.getName());
+        			}
+    				
+    				
+    			} else {
     			
-    				Set<String> deps = ans.get(ck);
-    				if (deps == null) {
-    					deps = new HashSet<String>();
-    					ans.put(ck,deps);
-    				}
-    					deps.add(r.getName());
+        			if (idx < 10 || (cons.charAt(idx-8) != '/' && cons.charAt(idx-9) != '/')) {
+        				
+        			
+        				StringTokenizer tok = new StringTokenizer(cons.substring(idx,endIdx),",)");
+        				tok.nextToken();
+        				ConstraintKey ck = null;
+        				if (tok.countTokens() >= 3)
+        					 ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""),
+        							tok.nextToken().replaceAll("\"", ""),
+        							tok.nextToken().replaceAll("\"", ""));
+        				else 
+        					ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""));
+        			
+        				Set<String> deps = ans.get(ck);
+        				if (deps == null) {
+        					deps = new HashSet<String>();
+        					ans.put(ck,deps);
+        				}
+        					deps.add(r.getName());
+        			}
+    				
     			}
+    			
+    			
     		
     			idx = cons.indexOf("inject",endIdx);
     		}

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-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-03-14 14:28:59
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-14 14:06:22
 
 	package org.drools.lang;
 
@@ -12,128 +12,155 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int COMMA=87;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
-    public static final int VK_FUNCTION=65;
-    public static final int HexDigit=119;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=115;
+    public static final int VT_ACCESSOR_ELEMENT=39;
+    public static final int ACCUMULATE=122;
+    public static final int VT_DATA_TYPE=40;
+    public static final int VK_TYPE=103;
+    public static final int DOT_STAR=107;
+    public static final int VK_APPROX=96;
+    public static final int VT_CONSTRID=47;
+    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=49;
+    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 DOUBLE_AMPER=119;
+    public static final int GREATER=128;
+    public static final int EOL=142;
+    public static final int VK_EQUIV=82;
+    public static final int VK_IMPORT=69;
+    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_OR=80;
+    public static final int VK_ARGS=102;
+    public static final int VT_HEDGE=48;
+    public static final int VK_CUT=95;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=63;
-    public static final int THEN=112;
-    public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=83;
-    public static final int VK_IMPORT=60;
-    public static final int VT_SLOT=15;
-    public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=110;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=122;
-    public static final int VT_DATA_TYPE=38;
+    public static final int VK_AT=100;
+    public static final int VK_FILTER=99;
+    public static final int NULL=134;
+    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=148;
+    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=143;
+    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 LEFT_CURLY=113;
-    public static final int AT=89;
-    public static final int LEFT_PAREN=86;
-    public static final int DOUBLE_AMPER=96;
+    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=144;
+    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 VK_DATE_EXPIRES=55;
+    public static final int ID=105;
+    public static final int HexDigit=145;
+    public static final int VK_EVAL=76;
+    public static final int VT_OR_PREFIX=24;
+    public static final int VK_WEIGHT=94;
+    public static final int APPROX=141;
+    public static final int AT=112;
+    public static final int DOUBLE_PIPE=118;
+    public static final int VT_ARGS=52;
+    public static final int RIGHT_PAREN=111;
+    public static final int VK_XOR=83;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int THEN=137;
+    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 VK_DIALECT=63;
     public static final int VT_QUERY_ID=9;
-    public static final int VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=92;
+    public static final int DOT=106;
+    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 VK_DECLARE=73;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SALIENCE=55;
-    public static final int VT_FIELD=35;
-    public static final int WS=117;
-    public static final int OVER=98;
-    public static final int STRING=85;
-    public static final int VK_AND=72;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VK_REVERSE=76;
-    public static final int VK_GLOBAL=66;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VT_BEHAVIOR=21;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=74;
     public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=100;
-    public static final int VK_ENABLED=56;
-    public static final int VK_RESULT=77;
-    public static final int EQUALS=91;
-    public static final int UnicodeEscape=120;
-    public static final int VK_PACKAGE=61;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=102;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=81;
-    public static final int VK_TEMPLATE=62;
+    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 VK_DURATION=62;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VT_AND_INFIX=25;
+    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 NULL=109;
-    public static final int COLON=90;
-    public static final int MULTI_LINE_COMMENT=124;
-    public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=111;
-    public static final int VK_AGENDA_GROUP=51;
-    public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=69;
-    public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=101;
-    public static final int FLOAT=108;
-    public static final int VK_EXTEND=59;
+    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 VT_CURLY_CHUNK=18;
-    public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=95;
-    public static final int VK_END=79;
-    public static final int LESS=105;
-    public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
-    public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=118;
-    public static final int VK_EXISTS=73;
-    public static final int INT=94;
-    public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=67;
-    public static final int GREATER=103;
-    public static final int VT_FACT_BINDING=32;
-    public static final int ID=82;
-    public static final int FROM=97;
-    public static final int NOT_EQUAL=107;
-    public static final int RIGHT_CURLY=114;
-    public static final int VK_OPERATOR=78;
-    public static final int VK_ENTRY_POINT=68;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VT_AND_INFIX=25;
-    public static final int BOOL=93;
-    public static final int VT_FROM_SOURCE=29;
-    public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=70;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int GREATER_EQUAL=104;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=84;
-    public static final int VK_OR=71;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=99;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
+    public static final int VK_ATTRIBUTES=66;
+    public static final int WHEN=115;
+    public static final int UnicodeEscape=146;
+    public static final int VT_SQUARE_CHUNK=19;
+    public static final int VK_DATE_EFFECTIVE=54;
+    public static final int VT_TEMPLATE_ID=10;
+    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 VK_AGENDA_GROUP=60;
     public static final int VT_CONSTRAINTS=7;
-    public static final int VT_IMPORT_ID=41;
-    public static final int EOL=116;
-    public static final int VK_INIT=80;
-    public static final int VK_ACTIVATION_GROUP=50;
-    public static final int OctalEscape=121;
-    public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=88;
-    public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DECLARE=64;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=123;
+    public static final int LEFT_SQUARE=135;
+    public static final int GREATER_EQUAL=129;
+    public static final int OctalEscape=147;
+    public static final int VK_INIT=92;
+    public static final int STRING=108;
 
     	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
     	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
@@ -178,17 +205,17 @@
         super(input,state);
 
     }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
+    public String getGrammarFileName() { return "/home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
     // $ANTLR start "WS"
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1701:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1701:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1701:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -220,28 +247,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1701:19: ' '
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:19: ' '
             	    {
             	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1702:19: '\\t'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2158:19: '\\t'
             	    {
             	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1703:19: '\\f'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2159:19: '\\f'
             	    {
             	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1704:19: EOL
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2160:19: EOL
             	    {
             	    mEOL(); if (state.failed) return ;
 
@@ -275,10 +302,10 @@
     // $ANTLR start "EOL"
     public final void mEOL() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1710:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1711:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2166:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1711:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -303,7 +330,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1711:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (state.failed) return ;
 
@@ -311,14 +338,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1712:25: '\\r'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2168:25: '\\r'
                     {
                     match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1713:25: '\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2169:25: '\\n'
                     {
                     match('\n'); if (state.failed) return ;
 
@@ -341,10 +368,10 @@
         try {
             int _type = INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1718:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1718:4: ( '-' )? ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:4: ( '-' )? ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1718:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -353,7 +380,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1718:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -362,7 +389,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1718:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -376,7 +403,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1718:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -409,10 +436,10 @@
         try {
             int _type = FLOAT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1722:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1722:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1722:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -421,7 +448,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1722:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -430,7 +457,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1722:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -444,7 +471,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1722:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -462,7 +489,7 @@
             } while (true);
 
             match('.'); if (state.failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1722:26: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -476,7 +503,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1722:27: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -509,7 +536,7 @@
         try {
             int _type = STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1726:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -528,13 +555,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1726:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1726:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // src/main/resources/org/drools/lang/DRL.g:1726:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1726:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -550,14 +577,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1726:15: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1726:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -586,13 +613,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1727:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1727:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // src/main/resources/org/drools/lang/DRL.g:1727:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1727:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -608,14 +635,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1727:16: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1727:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -656,8 +683,8 @@
     // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1731:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1731:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2187:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2187: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();
@@ -681,7 +708,7 @@
     // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1735: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:2191: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);
 
@@ -768,7 +795,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1735: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:2191: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)<='}') ) {
@@ -785,14 +812,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1739:9: UnicodeEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1740:9: OctalEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:9: OctalEscape
                     {
                     mOctalEscape(); if (state.failed) return ;
 
@@ -809,7 +836,7 @@
     // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1745: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:2201:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -820,9 +847,9 @@
                     int LA12_2 = input.LA(3);
 
                     if ( ((LA12_2>='0' && LA12_2<='7')) ) {
-                        int LA12_4 = input.LA(4);
+                        int LA12_5 = input.LA(4);
 
-                        if ( ((LA12_4>='0' && LA12_4<='7')) ) {
+                        if ( ((LA12_5>='0' && LA12_5<='7')) ) {
                             alt12=1;
                         }
                         else {
@@ -857,25 +884,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1745:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1745:14: ( '0' .. '3' )
-                    // src/main/resources/org/drools/lang/DRL.g:1745:15: '0' .. '3'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:14: ( '0' .. '3' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1745:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1745:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1745:36: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1745:37: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:36: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -885,18 +912,18 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1746:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1746:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1746:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1746:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1746:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -906,11 +933,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1747:9: '\\\\' ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1747:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1747:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -930,8 +957,8 @@
     // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1752:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // src/main/resources/org/drools/lang/DRL.g:1752:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (state.failed) return ;
             match('u'); if (state.failed) return ;
@@ -953,10 +980,10 @@
         try {
             int _type = BOOL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1756:2: ( ( 'true' | 'false' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1756:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:2: ( ( 'true' | 'false' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:4: ( 'true' | 'false' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1756:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -975,7 +1002,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1756:5: 'true'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:5: 'true'
                     {
                     match("true"); if (state.failed) return ;
 
@@ -983,7 +1010,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1756:12: 'false'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:12: 'false'
                     {
                     match("false"); if (state.failed) return ;
 
@@ -1009,8 +1036,8 @@
         try {
             int _type = ACCUMULATE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1760:2: ( 'accumulate' )
-            // src/main/resources/org/drools/lang/DRL.g:1760:4: 'accumulate'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2216:2: ( 'accumulate' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2216:4: 'accumulate'
             {
             match("accumulate"); if (state.failed) return ;
 
@@ -1030,8 +1057,8 @@
         try {
             int _type = COLLECT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1764:2: ( 'collect' )
-            // src/main/resources/org/drools/lang/DRL.g:1764:4: 'collect'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:2: ( 'collect' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:4: 'collect'
             {
             match("collect"); if (state.failed) return ;
 
@@ -1051,8 +1078,8 @@
         try {
             int _type = FROM;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1768:2: ( 'from' )
-            // src/main/resources/org/drools/lang/DRL.g:1768:4: 'from'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2224:2: ( 'from' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2224:4: 'from'
             {
             match("from"); if (state.failed) return ;
 
@@ -1072,8 +1099,8 @@
         try {
             int _type = NULL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1772:2: ( 'null' )
-            // src/main/resources/org/drools/lang/DRL.g:1772:4: 'null'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2228:2: ( 'null' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2228:4: 'null'
             {
             match("null"); if (state.failed) return ;
 
@@ -1093,8 +1120,8 @@
         try {
             int _type = OVER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1776:2: ( 'over' )
-            // src/main/resources/org/drools/lang/DRL.g:1776:4: 'over'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2232:2: ( 'over' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2232:4: 'over'
             {
             match("over"); if (state.failed) return ;
 
@@ -1114,8 +1141,8 @@
         try {
             int _type = THEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1780:2: ( 'then' )
-            // src/main/resources/org/drools/lang/DRL.g:1780:4: 'then'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2236:2: ( 'then' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2236:4: 'then'
             {
             match("then"); if (state.failed) return ;
 
@@ -1135,8 +1162,8 @@
         try {
             int _type = WHEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1784:2: ( 'when' )
-            // src/main/resources/org/drools/lang/DRL.g:1784:4: 'when'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2240:2: ( 'when' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2240:4: 'when'
             {
             match("when"); if (state.failed) return ;
 
@@ -1151,13 +1178,53 @@
     }
     // $ANTLR end "WHEN"
 
+    // $ANTLR start "APPROX"
+    public final void mAPPROX() throws RecognitionException {
+        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:2245:3: ( '~' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2245:5: '~'
+            {
+            match('~'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "APPROX"
+
+    // $ANTLR start "CUT"
+    public final void mCUT() throws RecognitionException {
+        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:2249:3: ( '!' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2249:5: '!'
+            {
+            match('!'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "CUT"
+
     // $ANTLR start "AT"
     public final void mAT() throws RecognitionException {
         try {
             int _type = AT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1787:4: ( '@' )
-            // src/main/resources/org/drools/lang/DRL.g:1787:6: '@'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:4: ( '@' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:6: '@'
             {
             match('@'); if (state.failed) return ;
 
@@ -1176,8 +1243,8 @@
         try {
             int _type = EQUALS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1791:2: ( '=' )
-            // src/main/resources/org/drools/lang/DRL.g:1791:4: '='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:2: ( '=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:4: '='
             {
             match('='); if (state.failed) return ;
 
@@ -1196,8 +1263,8 @@
         try {
             int _type = SEMICOLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1795:2: ( ';' )
-            // src/main/resources/org/drools/lang/DRL.g:1795:4: ';'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2261:2: ( ';' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2261:4: ';'
             {
             match(';'); if (state.failed) return ;
 
@@ -1216,8 +1283,8 @@
         try {
             int _type = DOT_STAR;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1799:2: ( '.*' )
-            // src/main/resources/org/drools/lang/DRL.g:1799:4: '.*'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2265:2: ( '.*' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2265:4: '.*'
             {
             match(".*"); if (state.failed) return ;
 
@@ -1237,8 +1304,8 @@
         try {
             int _type = COLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1803:2: ( ':' )
-            // src/main/resources/org/drools/lang/DRL.g:1803:4: ':'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2269:2: ( ':' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2269:4: ':'
             {
             match(':'); if (state.failed) return ;
 
@@ -1257,8 +1324,8 @@
         try {
             int _type = EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1807:2: ( '==' )
-            // src/main/resources/org/drools/lang/DRL.g:1807:4: '=='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2273:2: ( '==' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2273:4: '=='
             {
             match("=="); if (state.failed) return ;
 
@@ -1278,8 +1345,8 @@
         try {
             int _type = NOT_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1811:2: ( '!=' )
-            // src/main/resources/org/drools/lang/DRL.g:1811:4: '!='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2277:2: ( '!=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2277:4: '!='
             {
             match("!="); if (state.failed) return ;
 
@@ -1299,8 +1366,8 @@
         try {
             int _type = GREATER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1815:2: ( '>' )
-            // src/main/resources/org/drools/lang/DRL.g:1815:4: '>'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2281:2: ( '>' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2281:4: '>'
             {
             match('>'); if (state.failed) return ;
 
@@ -1319,8 +1386,8 @@
         try {
             int _type = GREATER_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1819:2: ( '>=' )
-            // src/main/resources/org/drools/lang/DRL.g:1819:4: '>='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2285:2: ( '>=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2285:4: '>='
             {
             match(">="); if (state.failed) return ;
 
@@ -1340,8 +1407,8 @@
         try {
             int _type = LESS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1823:2: ( '<' )
-            // src/main/resources/org/drools/lang/DRL.g:1823:4: '<'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2289:2: ( '<' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2289:4: '<'
             {
             match('<'); if (state.failed) return ;
 
@@ -1360,8 +1427,8 @@
         try {
             int _type = LESS_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1827:2: ( '<=' )
-            // src/main/resources/org/drools/lang/DRL.g:1827:4: '<='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2293:2: ( '<=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2293:4: '<='
             {
             match("<="); if (state.failed) return ;
 
@@ -1381,8 +1448,8 @@
         try {
             int _type = ARROW;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1831:2: ( '->' )
-            // src/main/resources/org/drools/lang/DRL.g:1831:4: '->'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2297:2: ( '->' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2297:4: '->'
             {
             match("->"); if (state.failed) return ;
 
@@ -1402,7 +1469,7 @@
         try {
             int _type = ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1835: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:2301: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);
 
@@ -1421,7 +1488,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1835: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:2301: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();
@@ -1433,7 +1500,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1835: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:2301:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1446,7 +1513,7 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
                     	    {
                     	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(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();
@@ -1471,7 +1538,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1836: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:2302: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') ) {
@@ -1484,7 +1551,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1836: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:2302:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1498,7 +1565,7 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
                     	    {
                     	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(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();
@@ -1546,8 +1613,8 @@
         try {
             int _type = LEFT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1841:9: ( '(' )
-            // src/main/resources/org/drools/lang/DRL.g:1841:11: '('
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:9: ( '(' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:11: '('
             {
             match('('); if (state.failed) return ;
 
@@ -1566,8 +1633,8 @@
         try {
             int _type = RIGHT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1845:9: ( ')' )
-            // src/main/resources/org/drools/lang/DRL.g:1845:11: ')'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:9: ( ')' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:11: ')'
             {
             match(')'); if (state.failed) return ;
 
@@ -1586,8 +1653,8 @@
         try {
             int _type = LEFT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1849:9: ( '[' )
-            // src/main/resources/org/drools/lang/DRL.g:1849:11: '['
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:9: ( '[' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:11: '['
             {
             match('['); if (state.failed) return ;
 
@@ -1606,8 +1673,8 @@
         try {
             int _type = RIGHT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1853:9: ( ']' )
-            // src/main/resources/org/drools/lang/DRL.g:1853:11: ']'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:9: ( ']' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:11: ']'
             {
             match(']'); if (state.failed) return ;
 
@@ -1626,8 +1693,8 @@
         try {
             int _type = LEFT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1857:9: ( '{' )
-            // src/main/resources/org/drools/lang/DRL.g:1857:11: '{'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2323:9: ( '{' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2323:11: '{'
             {
             match('{'); if (state.failed) return ;
 
@@ -1646,8 +1713,8 @@
         try {
             int _type = RIGHT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1861:9: ( '}' )
-            // src/main/resources/org/drools/lang/DRL.g:1861:11: '}'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2327:9: ( '}' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2327:11: '}'
             {
             match('}'); if (state.failed) return ;
 
@@ -1666,8 +1733,8 @@
         try {
             int _type = COMMA;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1864:7: ( ',' )
-            // src/main/resources/org/drools/lang/DRL.g:1864:9: ','
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2330:7: ( ',' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2330:9: ','
             {
             match(','); if (state.failed) return ;
 
@@ -1686,8 +1753,8 @@
         try {
             int _type = DOT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1867:5: ( '.' )
-            // src/main/resources/org/drools/lang/DRL.g:1867:7: '.'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:5: ( '.' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:7: '.'
             {
             match('.'); if (state.failed) return ;
 
@@ -1706,8 +1773,8 @@
         try {
             int _type = DOUBLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1871:2: ( '&&' )
-            // src/main/resources/org/drools/lang/DRL.g:1871:4: '&&'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:2: ( '&&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:4: '&&'
             {
             match("&&"); if (state.failed) return ;
 
@@ -1727,8 +1794,8 @@
         try {
             int _type = DOUBLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1875:2: ( '||' )
-            // src/main/resources/org/drools/lang/DRL.g:1875:4: '||'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:2: ( '||' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:4: '||'
             {
             match("||"); if (state.failed) return ;
 
@@ -1743,16 +1810,56 @@
     }
     // $ANTLR end "DOUBLE_PIPE"
 
+    // $ANTLR start "SINGLE_AMPER"
+    public final void mSINGLE_AMPER() throws RecognitionException {
+        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:2345:3: ( '&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2345:5: '&'
+            {
+            match('&'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "SINGLE_AMPER"
+
+    // $ANTLR start "SINGLE_PIPE"
+    public final void mSINGLE_PIPE() throws RecognitionException {
+        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:2349:3: ( '|' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2349:5: '|'
+            {
+            match('|'); if (state.failed) return ;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "SINGLE_PIPE"
+
     // $ANTLR start "SH_STYLE_SINGLE_LINE_COMMENT"
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1879:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1879:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (state.failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1879:8: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1771,7 +1878,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1879:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1803,12 +1910,12 @@
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1885:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1885:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1885:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1827,7 +1934,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1885:36: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:36: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1859,12 +1966,12 @@
         try {
             int _type = MULTI_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1890:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // src/main/resources/org/drools/lang/DRL.g:1890:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1890:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1889,7 +1996,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1890:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1922,10 +2029,10 @@
         try {
             int _type = MISC;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1894:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
-            // src/main/resources/org/drools/lang/DRL.g:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2368: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)<='_')||input.LA(1)=='|' ) {
+            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)<='_') ) {
                 input.consume();
             state.failed=false;
             }
@@ -1947,279 +2054,307 @@
     // $ANTLR end "MISC"
 
     public void mTokens() throws RecognitionException {
-        // src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
-        int alt20=39;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | APPROX | CUT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | 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 | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
+        int alt20=43;
         alt20 = dfa20.predict(input);
         switch (alt20) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:1:10: WS
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:10: WS
                 {
                 mWS(); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:1:13: INT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:13: INT
                 {
                 mINT(); if (state.failed) return ;
 
                 }
                 break;
             case 3 :
-                // src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:17: FLOAT
                 {
                 mFLOAT(); if (state.failed) return ;
 
                 }
                 break;
             case 4 :
-                // src/main/resources/org/drools/lang/DRL.g:1:23: STRING
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:23: STRING
                 {
                 mSTRING(); if (state.failed) return ;
 
                 }
                 break;
             case 5 :
-                // src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:30: BOOL
                 {
                 mBOOL(); if (state.failed) return ;
 
                 }
                 break;
             case 6 :
-                // src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:35: ACCUMULATE
                 {
                 mACCUMULATE(); if (state.failed) return ;
 
                 }
                 break;
             case 7 :
-                // src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:46: COLLECT
                 {
                 mCOLLECT(); if (state.failed) return ;
 
                 }
                 break;
             case 8 :
-                // src/main/resources/org/drools/lang/DRL.g:1:54: FROM
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:54: FROM
                 {
                 mFROM(); if (state.failed) return ;
 
                 }
                 break;
             case 9 :
-                // src/main/resources/org/drools/lang/DRL.g:1:59: NULL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:59: NULL
                 {
                 mNULL(); if (state.failed) return ;
 
                 }
                 break;
             case 10 :
-                // src/main/resources/org/drools/lang/DRL.g:1:64: OVER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:64: OVER
                 {
                 mOVER(); if (state.failed) return ;
 
                 }
                 break;
             case 11 :
-                // src/main/resources/org/drools/lang/DRL.g:1:69: THEN
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:69: THEN
                 {
                 mTHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 12 :
-                // src/main/resources/org/drools/lang/DRL.g:1:74: WHEN
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:74: WHEN
                 {
                 mWHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 13 :
-                // src/main/resources/org/drools/lang/DRL.g:1:79: AT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:79: APPROX
                 {
-                mAT(); if (state.failed) return ;
+                mAPPROX(); if (state.failed) return ;
 
                 }
                 break;
             case 14 :
-                // src/main/resources/org/drools/lang/DRL.g:1:82: EQUALS
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:86: CUT
                 {
-                mEQUALS(); if (state.failed) return ;
+                mCUT(); if (state.failed) return ;
 
                 }
                 break;
             case 15 :
-                // src/main/resources/org/drools/lang/DRL.g:1:89: SEMICOLON
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:90: AT
                 {
-                mSEMICOLON(); if (state.failed) return ;
+                mAT(); if (state.failed) return ;
 
                 }
                 break;
             case 16 :
-                // src/main/resources/org/drools/lang/DRL.g:1:99: DOT_STAR
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:93: EQUALS
                 {
-                mDOT_STAR(); if (state.failed) return ;
+                mEQUALS(); if (state.failed) return ;
 
                 }
                 break;
             case 17 :
-                // src/main/resources/org/drools/lang/DRL.g:1:108: COLON
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:100: SEMICOLON
                 {
-                mCOLON(); if (state.failed) return ;
+                mSEMICOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 18 :
-                // src/main/resources/org/drools/lang/DRL.g:1:114: EQUAL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:110: DOT_STAR
                 {
-                mEQUAL(); if (state.failed) return ;
+                mDOT_STAR(); if (state.failed) return ;
 
                 }
                 break;
             case 19 :
-                // src/main/resources/org/drools/lang/DRL.g:1:120: NOT_EQUAL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:119: COLON
                 {
-                mNOT_EQUAL(); if (state.failed) return ;
+                mCOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 20 :
-                // src/main/resources/org/drools/lang/DRL.g:1:130: GREATER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:125: EQUAL
                 {
-                mGREATER(); if (state.failed) return ;
+                mEQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 21 :
-                // src/main/resources/org/drools/lang/DRL.g:1:138: GREATER_EQUAL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:131: NOT_EQUAL
                 {
-                mGREATER_EQUAL(); if (state.failed) return ;
+                mNOT_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 22 :
-                // src/main/resources/org/drools/lang/DRL.g:1:152: LESS
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:141: GREATER
                 {
-                mLESS(); if (state.failed) return ;
+                mGREATER(); if (state.failed) return ;
 
                 }
                 break;
             case 23 :
-                // src/main/resources/org/drools/lang/DRL.g:1:157: LESS_EQUAL
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:149: GREATER_EQUAL
                 {
-                mLESS_EQUAL(); if (state.failed) return ;
+                mGREATER_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 24 :
-                // src/main/resources/org/drools/lang/DRL.g:1:168: ARROW
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:163: LESS
                 {
-                mARROW(); if (state.failed) return ;
+                mLESS(); if (state.failed) return ;
 
                 }
                 break;
             case 25 :
-                // src/main/resources/org/drools/lang/DRL.g:1:174: ID
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:168: LESS_EQUAL
                 {
-                mID(); if (state.failed) return ;
+                mLESS_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 26 :
-                // src/main/resources/org/drools/lang/DRL.g:1:177: LEFT_PAREN
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:179: ARROW
                 {
-                mLEFT_PAREN(); if (state.failed) return ;
+                mARROW(); if (state.failed) return ;
 
                 }
                 break;
             case 27 :
-                // src/main/resources/org/drools/lang/DRL.g:1:188: RIGHT_PAREN
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:185: ID
                 {
-                mRIGHT_PAREN(); if (state.failed) return ;
+                mID(); if (state.failed) return ;
 
                 }
                 break;
             case 28 :
-                // src/main/resources/org/drools/lang/DRL.g:1:200: LEFT_SQUARE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:188: LEFT_PAREN
                 {
-                mLEFT_SQUARE(); if (state.failed) return ;
+                mLEFT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 29 :
-                // src/main/resources/org/drools/lang/DRL.g:1:212: RIGHT_SQUARE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:199: RIGHT_PAREN
                 {
-                mRIGHT_SQUARE(); if (state.failed) return ;
+                mRIGHT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 30 :
-                // src/main/resources/org/drools/lang/DRL.g:1:225: LEFT_CURLY
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:211: LEFT_SQUARE
                 {
-                mLEFT_CURLY(); if (state.failed) return ;
+                mLEFT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 31 :
-                // src/main/resources/org/drools/lang/DRL.g:1:236: RIGHT_CURLY
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:223: RIGHT_SQUARE
                 {
-                mRIGHT_CURLY(); if (state.failed) return ;
+                mRIGHT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 32 :
-                // src/main/resources/org/drools/lang/DRL.g:1:248: COMMA
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:236: LEFT_CURLY
                 {
-                mCOMMA(); if (state.failed) return ;
+                mLEFT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 33 :
-                // src/main/resources/org/drools/lang/DRL.g:1:254: DOT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:247: RIGHT_CURLY
                 {
-                mDOT(); if (state.failed) return ;
+                mRIGHT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 34 :
-                // src/main/resources/org/drools/lang/DRL.g:1:258: DOUBLE_AMPER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:259: COMMA
                 {
-                mDOUBLE_AMPER(); if (state.failed) return ;
+                mCOMMA(); if (state.failed) return ;
 
                 }
                 break;
             case 35 :
-                // src/main/resources/org/drools/lang/DRL.g:1:271: DOUBLE_PIPE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:265: DOT
                 {
-                mDOUBLE_PIPE(); if (state.failed) return ;
+                mDOT(); if (state.failed) return ;
 
                 }
                 break;
             case 36 :
-                // src/main/resources/org/drools/lang/DRL.g:1:283: SH_STYLE_SINGLE_LINE_COMMENT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:269: DOUBLE_AMPER
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
+                mDOUBLE_AMPER(); if (state.failed) return ;
 
                 }
                 break;
             case 37 :
-                // src/main/resources/org/drools/lang/DRL.g:1:312: C_STYLE_SINGLE_LINE_COMMENT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:282: DOUBLE_PIPE
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
+                mDOUBLE_PIPE(); if (state.failed) return ;
 
                 }
                 break;
             case 38 :
-                // src/main/resources/org/drools/lang/DRL.g:1:340: MULTI_LINE_COMMENT
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:294: SINGLE_AMPER
                 {
-                mMULTI_LINE_COMMENT(); if (state.failed) return ;
+                mSINGLE_AMPER(); if (state.failed) return ;
 
                 }
                 break;
             case 39 :
-                // src/main/resources/org/drools/lang/DRL.g:1:359: MISC
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:307: SINGLE_PIPE
                 {
+                mSINGLE_PIPE(); if (state.failed) return ;
+
+                }
+                break;
+            case 40 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:319: SH_STYLE_SINGLE_LINE_COMMENT
+                {
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
+
+                }
+                break;
+            case 41 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:348: C_STYLE_SINGLE_LINE_COMMENT
+                {
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
+
+                }
+                break;
+            case 42 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:376: MULTI_LINE_COMMENT
+                {
+                mMULTI_LINE_COMMENT(); if (state.failed) return ;
+
+                }
+                break;
+            case 43 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:395: MISC
+                {
                 mMISC(); if (state.failed) return ;
 
                 }
@@ -2231,8 +2366,8 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1711:14: ( '\\r\\n' )
-        // src/main/resources/org/drools/lang/DRL.g:1711:16: '\\r\\n'
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:14: ( '\\r\\n' )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:16: '\\r\\n'
         {
         match("\r\n"); if (state.failed) return ;
 
@@ -2259,62 +2394,65 @@
 
     protected DFA20 dfa20 = new DFA20(this);
     static final String DFA20_eotS =
-        "\2\uffff\1\42\1\45\1\uffff\1\42\7\26\1\uffff\1\60\1\uffff\1\62"+
-        "\1\uffff\1\42\1\65\1\67\11\uffff\2\42\1\uffff\1\42\4\uffff\11\26"+
-        "\15\uffff\11\26\1\116\1\117\1\26\1\121\2\26\1\124\1\125\1\126\2"+
-        "\uffff\1\116\1\uffff\2\26\3\uffff\3\26\1\134\1\26\1\uffff\1\26\1"+
-        "\137\1\uffff";
+        "\2\uffff\1\43\1\46\1\uffff\1\43\7\27\1\uffff\1\61\1\uffff\1\63\1"+
+        "\uffff\1\65\1\uffff\1\67\1\71\11\uffff\1\73\1\75\1\uffff\1\43\4"+
+        "\uffff\11\27\20\uffff\11\27\1\122\1\123\1\27\1\125\2\27\1\130\1"+
+        "\131\1\132\2\uffff\1\122\1\uffff\2\27\3\uffff\3\27\1\140\1\27\1"+
+        "\uffff\1\27\1\143\1\uffff";
     static final String DFA20_eofS =
-        "\140\uffff";
+        "\144\uffff";
     static final String DFA20_minS =
         "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\143\1\157\1\165"+
-        "\1\166\1\150\1\uffff\1\75\1\uffff\1\52\1\uffff\3\75\11\uffff\1\46"+
-        "\1\174\1\uffff\1\52\4\uffff\1\165\1\145\1\154\1\157\1\143\2\154"+
-        "\2\145\15\uffff\1\145\1\156\1\163\1\155\1\165\2\154\1\162\1\156"+
-        "\2\60\1\145\1\60\1\155\1\145\3\60\2\uffff\1\60\1\uffff\1\165\1\143"+
-        "\3\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145\1\60\1\uffff";
+        "\1\166\1\150\1\uffff\1\75\1\uffff\1\75\1\uffff\1\52\1\uffff\2\75"+
+        "\11\uffff\1\46\1\174\1\uffff\1\52\4\uffff\1\165\1\145\1\154\1\157"+
+        "\1\143\2\154\2\145\20\uffff\1\145\1\156\1\163\1\155\1\165\2\154"+
+        "\1\162\1\156\2\60\1\145\1\60\1\155\1\145\3\60\2\uffff\1\60\1\uffff"+
+        "\1\165\1\143\3\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145"+
+        "\1\60\1\uffff";
     static final String DFA20_maxS =
-        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\1"+
-        "\165\1\166\1\150\1\uffff\1\75\1\uffff\1\52\1\uffff\3\75\11\uffff"+
-        "\1\46\1\174\1\uffff\1\57\4\uffff\1\165\1\145\1\154\1\157\1\143\2"+
-        "\154\2\145\15\uffff\1\145\1\156\1\163\1\155\1\165\2\154\1\162\1"+
-        "\156\2\u00ff\1\145\1\u00ff\1\155\1\145\3\u00ff\2\uffff\1\u00ff\1"+
-        "\uffff\1\165\1\143\3\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff"+
-        "\1\145\1\u00ff\1\uffff";
+        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\1\165"+
+        "\1\166\1\150\1\uffff\1\75\1\uffff\1\75\1\uffff\1\52\1\uffff\2\75"+
+        "\11\uffff\1\46\1\174\1\uffff\1\57\4\uffff\1\165\1\145\1\154\1\157"+
+        "\1\143\2\154\2\145\20\uffff\1\145\1\156\1\163\1\155\1\165\2\154"+
+        "\1\162\1\156\2\u00ff\1\145\1\u00ff\1\155\1\145\3\u00ff\2\uffff\1"+
+        "\u00ff\1\uffff\1\165\1\143\3\uffff\1\154\1\164\1\141\1\u00ff\1\164"+
+        "\1\uffff\1\145\1\u00ff\1\uffff";
     static final String DFA20_acceptS =
         "\1\uffff\1\1\2\uffff\1\4\10\uffff\1\15\1\uffff\1\17\1\uffff\1\21"+
-        "\3\uffff\2\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40\2\uffff\1\44\1"+
-        "\uffff\1\47\1\30\1\3\1\2\11\uffff\1\22\1\16\1\20\1\41\1\23\1\25"+
-        "\1\24\1\27\1\26\1\42\1\43\1\45\1\46\22\uffff\1\5\1\13\1\uffff\1"+
-        "\10\2\uffff\1\11\1\12\1\14\5\uffff\1\7\2\uffff\1\6";
+        "\1\uffff\1\23\2\uffff\2\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42\2"+
+        "\uffff\1\50\1\uffff\1\53\1\32\1\3\1\2\11\uffff\1\25\1\16\1\24\1"+
+        "\20\1\22\1\43\1\27\1\26\1\31\1\30\1\44\1\46\1\45\1\47\1\51\1\52"+
+        "\22\uffff\1\5\1\13\1\uffff\1\10\2\uffff\1\11\1\12\1\14\5\uffff\1"+
+        "\7\2\uffff\1\6";
     static final String DFA20_specialS =
-        "\5\uffff\1\0\132\uffff}>";
+        "\5\uffff\1\0\136\uffff}>";
     static final String[] DFA20_transitionS = {
-            "\2\1\1\uffff\2\1\22\uffff\1\1\1\22\1\4\1\40\1\25\1\42\1\36"+
-            "\1\5\1\27\1\30\2\42\1\35\1\2\1\20\1\41\12\3\1\21\1\17\1\24\1"+
-            "\16\1\23\1\42\1\15\32\26\1\31\1\42\1\32\1\42\1\25\1\26\1\10"+
-            "\1\26\1\11\2\26\1\7\7\26\1\12\1\13\4\26\1\6\2\26\1\14\3\26\1"+
-            "\33\1\37\1\34\102\uffff\100\26",
+            "\2\1\1\uffff\2\1\22\uffff\1\1\1\16\1\4\1\41\1\26\1\43\1\37\1"+
+            "\5\1\30\1\31\2\43\1\36\1\2\1\22\1\42\12\3\1\23\1\21\1\25\1\20"+
+            "\1\24\1\43\1\17\32\27\1\32\1\43\1\33\1\43\1\26\1\27\1\10\1\27"+
+            "\1\11\2\27\1\7\7\27\1\12\1\13\4\27\1\6\2\27\1\14\3\27\1\34\1"+
+            "\40\1\35\1\15\101\uffff\100\27",
             "",
-            "\12\3\4\uffff\1\43",
-            "\1\44\1\uffff\12\3",
+            "\12\3\4\uffff\1\44",
+            "\1\45\1\uffff\12\3",
             "",
             "\0\4",
-            "\1\47\11\uffff\1\46",
-            "\1\50\20\uffff\1\51",
-            "\1\52",
+            "\1\50\11\uffff\1\47",
+            "\1\51\20\uffff\1\52",
             "\1\53",
             "\1\54",
             "\1\55",
             "\1\56",
-            "",
             "\1\57",
             "",
-            "\1\61",
+            "\1\60",
             "",
-            "\1\63",
+            "\1\62",
+            "",
             "\1\64",
+            "",
             "\1\66",
+            "\1\70",
             "",
             "",
             "",
@@ -2324,23 +2462,23 @@
             "",
             "",
             "",
-            "\1\70",
-            "\1\71",
+            "\1\72",
+            "\1\74",
             "",
-            "\1\73\4\uffff\1\72",
+            "\1\77\4\uffff\1\76",
             "",
             "",
             "",
             "",
-            "\1\74",
-            "\1\75",
-            "\1\76",
-            "\1\77",
             "\1\100",
             "\1\101",
             "\1\102",
             "\1\103",
             "\1\104",
+            "\1\105",
+            "\1\106",
+            "\1\107",
+            "\1\110",
             "",
             "",
             "",
@@ -2354,50 +2492,53 @@
             "",
             "",
             "",
-            "\1\105",
-            "\1\106",
-            "\1\107",
-            "\1\110",
+            "",
+            "",
+            "",
             "\1\111",
             "\1\112",
             "\1\113",
             "\1\114",
             "\1\115",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
+            "\1\116",
+            "\1\117",
             "\1\120",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
-            "\1\122",
-            "\1\123",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
+            "\1\121",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\1\124",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\1\126",
+            "\1\127",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
             "",
             "",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
             "",
-            "\1\127",
-            "\1\130",
+            "\1\133",
+            "\1\134",
             "",
             "",
             "",
-            "\1\131",
-            "\1\132",
-            "\1\133",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
             "\1\135",
+            "\1\136",
+            "\1\137",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
+            "\1\141",
             "",
-            "\1\136",
-            "\12\26\7\uffff\32\26\4\uffff\1\26\1\uffff\32\26\105\uffff"+
-            "\100\26",
+            "\1\142",
+            "\12\27\7\uffff\32\27\4\uffff\1\27\1\uffff\32\27\105\uffff\100"+
+            "\27",
             ""
     };
 
@@ -2431,7 +2572,7 @@
             this.transition = DFA20_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | APPROX | CUT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | 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 | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
@@ -2443,7 +2584,7 @@
                         s = -1;
                         if ( ((LA20_5>='\u0000' && LA20_5<='\uFFFF')) ) {s = 4;}
 
-                        else s = 34;
+                        else s = 35;
 
                         if ( s>=0 ) return s;
                         break;

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-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-03-14 14:28:58
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-14 14:06:22
 
 	package org.drools.lang;
 	
@@ -18,130 +18,157 @@
 
 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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "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", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "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_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_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", "APPROX", "EOL", "WS", "EscapeSequence", "HexDigit", "Un
icodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=87;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
-    public static final int VK_FUNCTION=65;
-    public static final int HexDigit=119;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=115;
+    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=47;
+    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=49;
+    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=142;
+    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=48;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=63;
-    public static final int THEN=112;
-    public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=83;
-    public static final int VK_IMPORT=60;
-    public static final int VT_SLOT=15;
-    public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=110;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=122;
-    public static final int VT_DATA_TYPE=38;
+    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=148;
+    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=143;
+    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 LEFT_CURLY=113;
-    public static final int AT=89;
-    public static final int DOUBLE_AMPER=96;
-    public static final int LEFT_PAREN=86;
+    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=144;
+    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=145;
+    public static final int VT_OR_PREFIX=24;
+    public static final int VK_EVAL=76;
+    public static final int APPROX=141;
+    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 VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=92;
+    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 WS=117;
-    public static final int VT_FIELD=35;
-    public static final int VK_SALIENCE=55;
-    public static final int OVER=98;
-    public static final int VK_AND=72;
-    public static final int STRING=85;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_GLOBAL=66;
-    public static final int VK_REVERSE=76;
-    public static final int VT_BEHAVIOR=21;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=74;
+    public static final int VK_DECLARE=73;
     public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=100;
-    public static final int VK_ENABLED=56;
-    public static final int VK_RESULT=77;
-    public static final int EQUALS=91;
-    public static final int UnicodeEscape=120;
-    public static final int VK_PACKAGE=61;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=102;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=81;
-    public static final int VK_TEMPLATE=62;
+    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 NULL=109;
-    public static final int COLON=90;
-    public static final int MULTI_LINE_COMMENT=124;
-    public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=111;
-    public static final int VK_AGENDA_GROUP=51;
-    public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=69;
-    public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=101;
-    public static final int FLOAT=108;
-    public static final int VK_EXTEND=59;
+    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 VT_CURLY_CHUNK=18;
-    public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=95;
-    public static final int VK_END=79;
-    public static final int LESS=105;
-    public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
-    public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=118;
-    public static final int VK_EXISTS=73;
-    public static final int INT=94;
-    public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=67;
-    public static final int GREATER=103;
-    public static final int VT_FACT_BINDING=32;
-    public static final int FROM=97;
-    public static final int ID=82;
-    public static final int NOT_EQUAL=107;
-    public static final int RIGHT_CURLY=114;
-    public static final int VK_OPERATOR=78;
-    public static final int BOOL=93;
-    public static final int VT_AND_INFIX=25;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VK_ENTRY_POINT=68;
-    public static final int VT_FROM_SOURCE=29;
-    public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=70;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int GREATER_EQUAL=104;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=84;
-    public static final int VK_OR=71;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=99;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
+    public static final int VK_ATTRIBUTES=66;
+    public static final int WHEN=115;
+    public static final int UnicodeEscape=146;
+    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 EOL=116;
-    public static final int VT_IMPORT_ID=41;
-    public static final int VK_ACTIVATION_GROUP=50;
-    public static final int VK_INIT=80;
-    public static final int OctalEscape=121;
-    public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=88;
-    public static final int VT_TEMPLATE_ID=10;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=123;
-    public static final int VK_DECLARE=64;
+    public static final int VK_AGENDA_GROUP=60;
+    public static final int LEFT_SQUARE=135;
+    public static final int OctalEscape=147;
+    public static final int GREATER_EQUAL=129;
+    public static final int STRING=108;
+    public static final int VK_INIT=92;
 
     // delegates
     // delegators
@@ -165,7 +192,7 @@
     }
 
     public String[] getTokenNames() { return DRLParser.tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DRL.g"; }
+    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>>();
@@ -423,7 +450,7 @@
     };
 
     // $ANTLR start "compilation_unit"
-    // src/main/resources/org/drools/lang/DRL.g:395: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:433: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);
@@ -438,20 +465,20 @@
 
         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");
-        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:396:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )? ( statement )* EOF
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434: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:434:4: ( package_statement )? ( statement )* EOF
             {
-            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:4: ( package_statement )?
             int alt1=2;
             alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:396:4: package_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:4: package_statement
                     {
-                    pushFollow(FOLLOW_package_statement_in_compilation_unit384);
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit530);
                     package_statement1=package_statement();
 
                     state._fsp--;
@@ -463,7 +490,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:397:3: ( statement )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
@@ -476,9 +503,9 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:397:3: statement
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:3: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_compilation_unit389);
+            	    pushFollow(FOLLOW_statement_in_compilation_unit535);
             	    statement2=statement();
 
             	    state._fsp--;
@@ -493,13 +520,13 @@
                 }
             } while (true);
 
-            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit394); if (state.failed) return retval; 
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit540); 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: 
@@ -509,20 +536,20 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 399:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 437:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:399:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:399:28: ( package_statement )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_package_statement.nextTree());
 
                 }
                 stream_package_statement.reset();
-                // src/main/resources/org/drools/lang/DRL.g:399:47: ( statement )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.nextTree());
 
@@ -597,7 +624,7 @@
     };
 
     // $ANTLR start "package_statement"
-    // src/main/resources/org/drools/lang/DRL.g:438: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:476: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);
@@ -616,22 +643,22 @@
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
          pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:441:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:441:4: package_key package_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:479: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:479:4: package_key package_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_package_key_in_package_statement449);
+            pushFollow(FOLLOW_package_key_in_package_statement595);
             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_statement453);
+            pushFollow(FOLLOW_package_id_in_package_statement599);
             package_id5=package_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:442:14: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:480:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -640,9 +667,9 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:442:14: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:480:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement455); if (state.failed) return retval; 
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement601); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
@@ -667,9 +694,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 444:3: -> ^( package_key package_id )
+            // 482:3: -> ^( package_key package_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:444:6: ^( package_key package_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
@@ -713,7 +740,7 @@
     };
 
     // $ANTLR start "package_id"
-    // src/main/resources/org/drools/lang/DRL.g:447: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:485: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);
@@ -728,16 +755,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:448:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:448:4: id+= ID (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486: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:486:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_id482); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id628); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:448:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -750,15 +777,15 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:448:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id488); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id634); 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_id492); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id638); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -790,9 +817,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 451:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 489:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:451:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:489: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);
@@ -840,7 +867,7 @@
     };
 
     // $ANTLR start "statement"
-    // src/main/resources/org/drools/lang/DRL.g:454: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:492: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);
@@ -868,16 +895,16 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:457: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:495: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 :
-                    // src/main/resources/org/drools/lang/DRL.g:457:5: rule_attribute
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:5: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_attribute_in_statement530);
+                    pushFollow(FOLLOW_rule_attribute_in_statement676);
                     rule_attribute7=rule_attribute();
 
                     state._fsp--;
@@ -887,7 +914,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:458:3: {...}? => function_import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:496:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -895,7 +922,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_statement537);
+                    pushFollow(FOLLOW_function_import_statement_in_statement683);
                     function_import_statement8=function_import_statement();
 
                     state._fsp--;
@@ -905,11 +932,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:459:4: import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement543);
+                    pushFollow(FOLLOW_import_statement_in_statement689);
                     import_statement9=import_statement();
 
                     state._fsp--;
@@ -919,11 +946,11 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:460:4: global
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement549);
+                    pushFollow(FOLLOW_global_in_statement695);
                     global10=global();
 
                     state._fsp--;
@@ -933,11 +960,11 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:461:4: function
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:499:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement555);
+                    pushFollow(FOLLOW_function_in_statement701);
                     function11=function();
 
                     state._fsp--;
@@ -947,7 +974,7 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:462:4: {...}? => template
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -955,7 +982,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
                     }
-                    pushFollow(FOLLOW_template_in_statement563);
+                    pushFollow(FOLLOW_template_in_statement709);
                     template12=template();
 
                     state._fsp--;
@@ -965,7 +992,7 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:463:4: {...}? => type_declaration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -973,7 +1000,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
                     }
-                    pushFollow(FOLLOW_type_declaration_in_statement571);
+                    pushFollow(FOLLOW_type_declaration_in_statement717);
                     type_declaration13=type_declaration();
 
                     state._fsp--;
@@ -983,11 +1010,11 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:464:4: rule
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement576);
+                    pushFollow(FOLLOW_rule_in_statement722);
                     rule14=rule();
 
                     state._fsp--;
@@ -997,11 +1024,11 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:465:4: query
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:503:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement581);
+                    pushFollow(FOLLOW_query_in_statement727);
                     query15=query();
 
                     state._fsp--;
@@ -1038,7 +1065,7 @@
     };
 
     // $ANTLR start "import_statement"
-    // src/main/resources/org/drools/lang/DRL.g:468: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:506: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);
@@ -1057,22 +1084,22 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  
         try {
-            // src/main/resources/org/drools/lang/DRL.g:471:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:471:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509: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:509:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_import_statement603);
+            pushFollow(FOLLOW_import_key_in_import_statement749);
             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_statement605);
+            pushFollow(FOLLOW_import_name_in_import_statement751);
             import_name17=import_name(DroolsParaphraseTypes.IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:471:57: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1081,9 +1108,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:471:57: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement608); if (state.failed) return retval; 
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement754); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
@@ -1098,7 +1125,7 @@
 
 
             // AST REWRITE
-            // elements: import_name, import_key
+            // elements: import_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1108,9 +1135,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 473:3: -> ^( import_key import_name )
+            // 511:3: -> ^( import_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:473:6: ^( import_key import_name )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
@@ -1154,7 +1181,7 @@
     };
 
     // $ANTLR start "function_import_statement"
-    // src/main/resources/org/drools/lang/DRL.g:476: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:514: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);
@@ -1171,33 +1198,33 @@
 
         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_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_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 {
-            // src/main/resources/org/drools/lang/DRL.g:479:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:479: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:517: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:517:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_function_import_statement646);
+            pushFollow(FOLLOW_import_key_in_function_import_statement792);
             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_statement648);
+            pushFollow(FOLLOW_function_key_in_function_import_statement794);
             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_statement650);
+            pushFollow(FOLLOW_import_name_in_function_import_statement796);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:479:83: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1206,9 +1233,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:479:83: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement653); if (state.failed) return retval; 
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement799); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
@@ -1223,7 +1250,7 @@
 
 
             // AST REWRITE
-            // elements: import_name, function_key
+            // elements: function_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1233,9 +1260,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 481:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 519:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:481: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:519: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);
@@ -1280,7 +1307,7 @@
     };
 
     // $ANTLR start "import_name"
-    // src/main/resources/org/drools/lang/DRL.g:484: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:522: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);
@@ -1291,21 +1318,21 @@
         List list_id=null;
 
         Object id_tree=null;
-        RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:485:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:485: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:523: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:523:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_name687); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name833); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:485:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1318,15 +1345,15 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:485:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name693); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name839); 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_name697); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name843); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -1341,7 +1368,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:485:33: (id+= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1350,9 +1377,9 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:485:33: id+= DOT_STAR
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:33: id+= DOT_STAR
                     {
-                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name704); if (state.failed) return retval; 
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name850); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
 
                     if (list_id==null) list_id=new ArrayList();
@@ -1381,9 +1408,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 488:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 526:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:488:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526: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);
@@ -1396,7 +1423,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:488:25: ( DOT_STAR )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
                     adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
 
@@ -1437,7 +1464,7 @@
     };
 
     // $ANTLR start "global"
-    // src/main/resources/org/drools/lang/DRL.g:491: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:529: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);
@@ -1454,33 +1481,33 @@
 
         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");
-        RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
          pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:494:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:494:4: global_key data_type global_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532: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:532:4: global_key data_type global_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_global_key_in_global744);
+            pushFollow(FOLLOW_global_key_in_global890);
             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_global746);
+            pushFollow(FOLLOW_data_type_in_global892);
             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_global748);
+            pushFollow(FOLLOW_global_id_in_global894);
             global_id24=global_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:494:35: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1489,9 +1516,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:494:35: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global750); if (state.failed) return retval; 
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global896); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
@@ -1506,7 +1533,7 @@
 
 
             // AST REWRITE
-            // elements: global_id, data_type, global_key
+            // elements: global_key, global_id, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1516,9 +1543,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 496:3: -> ^( global_key data_type global_id )
+            // 534:3: -> ^( global_key data_type global_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:496:6: ^( global_key data_type global_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
@@ -1563,7 +1590,7 @@
     };
 
     // $ANTLR start "global_id"
-    // src/main/resources/org/drools/lang/DRL.g:499: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:537: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);
@@ -1576,10 +1603,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:500:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:500:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_id779); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id925); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1599,7 +1626,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 503:3: -> VT_GLOBAL_ID[$id]
+            // 541:3: -> VT_GLOBAL_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
 
@@ -1634,7 +1661,7 @@
     };
 
     // $ANTLR start "function"
-    // src/main/resources/org/drools/lang/DRL.g:506: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:544: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);
@@ -1652,23 +1679,23 @@
         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_function_key=new RewriteRuleSubtreeStream(adaptor,"rule function_key");
         RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
-        RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
-        RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  
         try {
-            // src/main/resources/org/drools/lang/DRL.g:509:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:509: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:547: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:547:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            pushFollow(FOLLOW_function_key_in_function811);
+            pushFollow(FOLLOW_function_key_in_function957);
             function_key26=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:509:17: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1681,9 +1708,9 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:509:17: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function813);
+                    pushFollow(FOLLOW_data_type_in_function959);
                     data_type27=data_type();
 
                     state._fsp--;
@@ -1695,19 +1722,19 @@
 
             }
 
-            pushFollow(FOLLOW_function_id_in_function816);
+            pushFollow(FOLLOW_function_id_in_function962);
             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_function818);
+            pushFollow(FOLLOW_parameters_in_function964);
             parameters29=parameters();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function820);
+            pushFollow(FOLLOW_curly_chunk_in_function966);
             curly_chunk30=curly_chunk();
 
             state._fsp--;
@@ -1716,7 +1743,7 @@
 
 
             // AST REWRITE
-            // elements: data_type, function_key, curly_chunk, parameters, function_id
+            // elements: function_id, curly_chunk, function_key, parameters, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1726,14 +1753,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 510:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 548:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:510: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:548: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:510:21: ( data_type )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
                     adaptor.addChild(root_1, stream_data_type.nextTree());
 
@@ -1780,7 +1807,7 @@
     };
 
     // $ANTLR start "function_id"
-    // src/main/resources/org/drools/lang/DRL.g:513: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:551: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);
@@ -1793,10 +1820,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:514:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:514:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_id850); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id996); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1816,7 +1843,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 517:3: -> VT_FUNCTION_ID[$id]
+            // 555:3: -> VT_FUNCTION_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
 
@@ -1851,7 +1878,7 @@
     };
 
     // $ANTLR start "query"
-    // src/main/resources/org/drools/lang/DRL.g:520: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:558: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);
@@ -1872,23 +1899,23 @@
 
         Object SEMICOLON35_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
-        RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
         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");
-        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
          pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:523:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
-            // src/main/resources/org/drools/lang/DRL.g:523: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:561: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:561:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_query_key_in_query882);
+            pushFollow(FOLLOW_query_key_in_query1028);
             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_query884);
+            pushFollow(FOLLOW_query_id_in_query1030);
             query_id32=query_id();
 
             state._fsp--;
@@ -1897,14 +1924,14 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:525:3: ( parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:525:3: parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query892);
+                    pushFollow(FOLLOW_parameters_in_query1038);
                     parameters33=parameters();
 
                     state._fsp--;
@@ -1919,19 +1946,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query901);
+            pushFollow(FOLLOW_normal_lhs_block_in_query1047);
             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_query908);
+            pushFollow(FOLLOW_end_key_in_query1054);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:528:15: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:15: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1940,9 +1967,9 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:528:15: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:15: SEMICOLON
                     {
-                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query910); if (state.failed) return retval; 
+                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1056); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON35);
 
 
@@ -1957,7 +1984,7 @@
 
 
             // AST REWRITE
-            // elements: query_key, end_key, query_id, normal_lhs_block, parameters
+            // elements: end_key, parameters, query_key, query_id, normal_lhs_block
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1967,15 +1994,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 530:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+            // 568:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:530: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:568: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());
-                // src/main/resources/org/drools/lang/DRL.g:530:27: ( parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_parameters.nextTree());
 
@@ -2021,7 +2048,7 @@
     };
 
     // $ANTLR start "query_id"
-    // src/main/resources/org/drools/lang/DRL.g:533: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:571: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);
@@ -2031,11 +2058,11 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:534: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:572:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2054,9 +2081,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:534:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id945); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1091); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2076,7 +2103,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 536:65: -> VT_QUERY_ID[$id]
+                    // 574:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2086,9 +2113,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:537:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id961); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1107); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2108,7 +2135,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 539:65: -> VT_QUERY_ID[$id]
+                    // 577:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2145,7 +2172,7 @@
     };
 
     // $ANTLR start "parameters"
-    // src/main/resources/org/drools/lang/DRL.g:542: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:580: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);
@@ -2163,21 +2190,21 @@
         Object LEFT_PAREN36_tree=null;
         Object COMMA38_tree=null;
         Object RIGHT_PAREN40_tree=null;
-        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:543:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:543: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:581: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:581:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters980); if (state.failed) return retval; 
+            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1126); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN36);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN36, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:544:4: ( param_definition ( COMMA param_definition )* )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2186,15 +2213,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:544:6: param_definition ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters989);
+                    pushFollow(FOLLOW_param_definition_in_parameters1135);
                     param_definition37=param_definition();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_param_definition.add(param_definition37.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:544:23: ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2207,15 +2234,15 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:544:24: COMMA param_definition
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:24: COMMA param_definition
                     	    {
-                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters992); if (state.failed) return retval; 
+                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1138); 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_parameters996);
+                    	    pushFollow(FOLLOW_param_definition_in_parameters1142);
                     	    param_definition39=param_definition();
 
                     	    state._fsp--;
@@ -2236,7 +2263,7 @@
 
             }
 
-            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1005); if (state.failed) return retval; 
+            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1151); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN40);
 
             if ( state.backtracking==0 ) {
@@ -2245,7 +2272,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, param_definition
+            // elements: param_definition, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2255,14 +2282,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 546:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 584:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:546:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:546:22: ( param_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_param_definition.nextTree());
 
@@ -2304,7 +2331,7 @@
     };
 
     // $ANTLR start "param_definition"
-    // src/main/resources/org/drools/lang/DRL.g:549:1: param_definition : ( data_type )? argument ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:587: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);
@@ -2318,19 +2345,19 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:550:2: ( ( data_type )? argument )
-            // src/main/resources/org/drools/lang/DRL.g:550:4: ( data_type )? argument
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:2: ( ( data_type )? argument )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:550:4: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:550:4: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1031);
+                    pushFollow(FOLLOW_data_type_in_param_definition1177);
                     data_type41=data_type();
 
                     state._fsp--;
@@ -2342,7 +2369,7 @@
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition1034);
+            pushFollow(FOLLOW_argument_in_param_definition1180);
             argument42=argument();
 
             state._fsp--;
@@ -2377,7 +2404,7 @@
     };
 
     // $ANTLR start "argument"
-    // src/main/resources/org/drools/lang/DRL.g:553:1: argument : ID ( dimension_definition )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:591: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);
@@ -2391,12 +2418,12 @@
         Object ID43_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:554:2: ( ID ( dimension_definition )* )
-            // src/main/resources/org/drools/lang/DRL.g:554:4: ID ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592:2: ( ID ( dimension_definition )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1045); if (state.failed) return retval;
+            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1191); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ID43_tree = (Object)adaptor.create(ID43);
             adaptor.addChild(root_0, ID43_tree);
@@ -2404,7 +2431,7 @@
             if ( state.backtracking==0 ) {
               	emit(ID43, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:555:3: ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2417,9 +2444,9 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:555:3: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1051);
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1197);
             	    dimension_definition44=dimension_definition();
 
             	    state._fsp--;
@@ -2463,7 +2490,7 @@
     };
 
     // $ANTLR start "type_declaration"
-    // src/main/resources/org/drools/lang/DRL.g:558: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:596: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);
@@ -2482,28 +2509,28 @@
 
 
         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");
-        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
-        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
-        RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
          pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:561:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
-            // src/main/resources/org/drools/lang/DRL.g:561: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:599: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:599:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
             {
-            pushFollow(FOLLOW_declare_key_in_type_declaration1074);
+            pushFollow(FOLLOW_declare_key_in_type_declaration1220);
             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_declaration1077);
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1223);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:562:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2516,9 +2543,9 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:562:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1081);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1227);
             	    decl_metadata47=decl_metadata();
 
             	    state._fsp--;
@@ -2533,7 +2560,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:563:3: ( decl_field )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2552,9 +2579,9 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:563:3: decl_field
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1086);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1232);
             	    decl_field48=decl_field();
 
             	    state._fsp--;
@@ -2569,7 +2596,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_type_declaration1091);
+            pushFollow(FOLLOW_end_key_in_type_declaration1237);
             end_key49=end_key();
 
             state._fsp--;
@@ -2578,7 +2605,7 @@
 
 
             // AST REWRITE
-            // elements: decl_metadata, end_key, declare_key, decl_field, type_declare_id
+            // elements: type_declare_id, decl_field, decl_metadata, end_key, declare_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2588,21 +2615,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 565:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+            // 603:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:565: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:603: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());
-                // src/main/resources/org/drools/lang/DRL.g:565:36: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:36: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // src/main/resources/org/drools/lang/DRL.g:565:51: ( decl_field )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:51: ( decl_field )*
                 while ( stream_decl_field.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field.nextTree());
 
@@ -2647,7 +2674,7 @@
     };
 
     // $ANTLR start "type_declare_id"
-    // src/main/resources/org/drools/lang/DRL.g:568: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:606: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);
@@ -2660,10 +2687,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:569:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:569:5: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:5: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1123); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1269); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -2683,7 +2710,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 571:72: -> VT_TYPE_DECLARE_ID[$id]
+            // 609:72: -> VT_TYPE_DECLARE_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_TYPE_DECLARE_ID, id));
 
@@ -2718,7 +2745,7 @@
     };
 
     // $ANTLR start "decl_metadata"
-    // src/main/resources/org/drools/lang/DRL.g:574: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:612: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);
@@ -2736,22 +2763,22 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:575:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:575:4: AT ID ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613: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:613:4: AT ID ( paren_chunk )?
             {
-            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1142); if (state.failed) return retval; 
+            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1288); 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_metadata1150); if (state.failed) return retval; 
+            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1296); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID51);
 
             if ( state.backtracking==0 ) {
               	emit(ID51, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:579:3: ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:3: ( paren_chunk )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2760,9 +2787,9 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:579:3: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:3: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1157);
+                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1303);
                     paren_chunk52=paren_chunk();
 
                     state._fsp--;
@@ -2777,7 +2804,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID, AT
+            // elements: paren_chunk, AT, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2787,15 +2814,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 580:3: -> ^( AT ID ( paren_chunk )? )
+            // 618:3: -> ^( AT ID ( paren_chunk )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:580:6: ^( AT ID ( paren_chunk )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618: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());
-                // src/main/resources/org/drools/lang/DRL.g:580:14: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:14: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
@@ -2836,7 +2863,7 @@
     };
 
     // $ANTLR start "decl_field"
-    // src/main/resources/org/drools/lang/DRL.g:583: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:621: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);
@@ -2856,20 +2883,20 @@
         Object COLON55_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
-        RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:584:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:584: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:622: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:622:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1182); if (state.failed) return retval; 
+            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1328); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID53);
 
             if ( state.backtracking==0 ) {
               	emit(ID53, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:585:3: ( decl_field_initialization )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: ( decl_field_initialization )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -2878,9 +2905,9 @@
             }
             switch (alt22) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:585:3: decl_field_initialization
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1188);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1334);
                     decl_field_initialization54=decl_field_initialization();
 
                     state._fsp--;
@@ -2892,19 +2919,19 @@
 
             }
 
-            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1194); if (state.failed) return retval; 
+            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1340); 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_field1200);
+            pushFollow(FOLLOW_data_type_in_decl_field1346);
             data_type56=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type56.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:588:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:3: ( decl_metadata )*
             loop23:
             do {
                 int alt23=2;
@@ -2917,9 +2944,9 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:588:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1204);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1350);
             	    decl_metadata57=decl_metadata();
 
             	    state._fsp--;
@@ -2937,7 +2964,7 @@
 
 
             // AST REWRITE
-            // elements: ID, decl_field_initialization, decl_metadata, data_type
+            // elements: decl_field_initialization, data_type, decl_metadata, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2947,21 +2974,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 589:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // 627:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:589: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:627: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:589:11: ( decl_field_initialization )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627: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());
-                // src/main/resources/org/drools/lang/DRL.g:589:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
@@ -3002,7 +3029,7 @@
     };
 
     // $ANTLR start "decl_field_initialization"
-    // src/main/resources/org/drools/lang/DRL.g:592: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:630: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);
@@ -3017,16 +3044,16 @@
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:593:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:593:4: EQUALS paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:631:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:631:4: EQUALS paren_chunk
             {
-            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1232); if (state.failed) return retval; 
+            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1378); 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_initialization1238);
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1384);
             paren_chunk59=paren_chunk();
 
             state._fsp--;
@@ -3045,9 +3072,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 595:2: -> ^( EQUALS paren_chunk )
+            // 633:2: -> ^( EQUALS paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:595:5: ^( EQUALS paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:5: ^( EQUALS paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.nextNode(), root_1);
@@ -3088,7 +3115,7 @@
     };
 
     // $ANTLR start "template"
-    // src/main/resources/org/drools/lang/DRL.g:598: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:636: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);
@@ -3109,31 +3136,31 @@
         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_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
-        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:601:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
-            // src/main/resources/org/drools/lang/DRL.g:602: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:639: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:640: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_template1275);
+            pushFollow(FOLLOW_template_key_in_template1421);
             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_template1277);
+            pushFollow(FOLLOW_template_id_in_template1423);
             template_id61=template_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_template_id.add(template_id61.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:604:8: (semi1= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:8: (semi1= SEMICOLON )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -3142,9 +3169,9 @@
             }
             switch (alt24) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:604:8: semi1= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1284); if (state.failed) return retval; 
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1430); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
@@ -3156,7 +3183,7 @@
             if ( state.backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:606:3: ( template_slot )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:3: ( template_slot )+
             int cnt25=0;
             loop25:
             do {
@@ -3166,10 +3193,7 @@
                 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) ) {
+                    if ( (LA25_1==ID) ) {
                         int LA25_3 = input.LA(3);
 
                         if ( (LA25_3==ID) ) {
@@ -3187,6 +3211,9 @@
 
 
                     }
+                    else if ( (LA25_1==DOT||LA25_1==LEFT_SQUARE) ) {
+                        alt25=1;
+                    }
 
 
                 }
@@ -3194,9 +3221,9 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:606:3: template_slot
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1292);
+            	    pushFollow(FOLLOW_template_slot_in_template1438);
             	    template_slot62=template_slot();
 
             	    state._fsp--;
@@ -3216,13 +3243,13 @@
                 cnt25++;
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_template1299);
+            pushFollow(FOLLOW_end_key_in_template1445);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:607:20: (semi2= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:20: (semi2= SEMICOLON )?
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3231,9 +3258,9 @@
             }
             switch (alt26) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:607:20: semi2= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:20: semi2= SEMICOLON
                     {
-                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1303); if (state.failed) return retval; 
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1449); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
@@ -3248,7 +3275,7 @@
 
 
             // AST REWRITE
-            // elements: template_slot, end_key, template_key, template_id
+            // elements: template_id, template_key, end_key, template_slot
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3258,9 +3285,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 609:3: -> ^( template_key template_id ( template_slot )+ end_key )
+            // 647:3: -> ^( template_key template_id ( template_slot )+ end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:609: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:647: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);
@@ -3313,7 +3340,7 @@
     };
 
     // $ANTLR start "template_id"
-    // src/main/resources/org/drools/lang/DRL.g:612: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:650: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);
@@ -3323,11 +3350,11 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:613: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:651:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3346,9 +3373,9 @@
             }
             switch (alt27) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:613:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:651:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1336); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1482); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3368,7 +3395,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 615:68: -> VT_TEMPLATE_ID[$id]
+                    // 653:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3378,9 +3405,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:616:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:654:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1352); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1498); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3400,7 +3427,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 618:68: -> VT_TEMPLATE_ID[$id]
+                    // 656:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3437,7 +3464,7 @@
     };
 
     // $ANTLR start "template_slot"
-    // src/main/resources/org/drools/lang/DRL.g:621: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:659: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);
@@ -3455,22 +3482,22 @@
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:622:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:622:5: data_type slot_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660: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:660:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1372);
+            pushFollow(FOLLOW_data_type_in_template_slot1518);
             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_slot1374);
+            pushFollow(FOLLOW_slot_id_in_template_slot1520);
             slot_id64=slot_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_slot_id.add(slot_id64.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:622:23: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:23: ( SEMICOLON )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -3479,9 +3506,9 @@
             }
             switch (alt28) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:622:23: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:23: SEMICOLON
                     {
-                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1376); if (state.failed) return retval; 
+                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1522); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON65);
 
 
@@ -3506,9 +3533,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 624:3: -> ^( VT_SLOT data_type slot_id )
+            // 662:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:624:6: ^( VT_SLOT data_type slot_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662: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);
@@ -3550,7 +3577,7 @@
     };
 
     // $ANTLR start "slot_id"
-    // src/main/resources/org/drools/lang/DRL.g:627: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:665: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);
@@ -3563,10 +3590,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:628:2: (id= ID -> VT_SLOT_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:628:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1405); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1551); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -3585,7 +3612,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 630:3: -> VT_SLOT_ID[$id]
+            // 668:3: -> VT_SLOT_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
 
@@ -3620,7 +3647,7 @@
     };
 
     // $ANTLR start "rule"
-    // src/main/resources/org/drools/lang/DRL.g:633: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:671: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);
@@ -3644,28 +3671,28 @@
         DRLParser.rhs_chunk_return rhs_chunk73 = null;
 
 
-        RewriteRuleSubtreeStream stream_rule_key=new RewriteRuleSubtreeStream(adaptor,"rule rule_key");
         RewriteRuleSubtreeStream stream_rule_id=new RewriteRuleSubtreeStream(adaptor,"rule rule_id");
-        RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
+        RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
         RewriteRuleSubtreeStream stream_rule_attributes=new RewriteRuleSubtreeStream(adaptor,"rule rule_attributes");
-        RewriteRuleSubtreeStream stream_rhs_chunk=new RewriteRuleSubtreeStream(adaptor,"rule rhs_chunk");
+        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_extend_key=new RewriteRuleSubtreeStream(adaptor,"rule extend_key");
+        RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:636: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 ) )
-            // src/main/resources/org/drools/lang/DRL.g:637: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:674: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:675: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_rule1442);
+            pushFollow(FOLLOW_rule_key_in_rule1588);
             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_rule1444);
+            pushFollow(FOLLOW_rule_id_in_rule1590);
             rule_id67=rule_id();
 
             state._fsp--;
@@ -3674,20 +3701,20 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:640:3: ( extend_key rule_id )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:3: ( extend_key rule_id )?
             int alt29=2;
             alt29 = dfa29.predict(input);
             switch (alt29) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:640:4: extend_key rule_id
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1453);
+                    pushFollow(FOLLOW_extend_key_in_rule1599);
                     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_rule1455);
+                    pushFollow(FOLLOW_rule_id_in_rule1601);
                     rule_id69=rule_id();
 
                     state._fsp--;
@@ -3699,7 +3726,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:640:25: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:25: ( decl_metadata )*
             loop30:
             do {
                 int alt30=2;
@@ -3712,9 +3739,9 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:640:25: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1459);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1605);
             	    decl_metadata70=decl_metadata();
 
             	    state._fsp--;
@@ -3729,18 +3756,18 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:640:40: ( rule_attributes )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:40: ( rule_attributes )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
-            if ( (LA31_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {
+            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 :
-                    // src/main/resources/org/drools/lang/DRL.g:640:40: rule_attributes
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1462);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1608);
                     rule_attributes71=rule_attributes();
 
                     state._fsp--;
@@ -3752,7 +3779,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:640:57: ( when_part )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:57: ( when_part )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3761,9 +3788,9 @@
             }
             switch (alt32) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:640:57: when_part
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1465);
+                    pushFollow(FOLLOW_when_part_in_rule1611);
                     when_part72=when_part();
 
                     state._fsp--;
@@ -3775,7 +3802,7 @@
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1468);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1614);
             rhs_chunk73=rhs_chunk();
 
             state._fsp--;
@@ -3784,7 +3811,7 @@
 
 
             // AST REWRITE
-            // elements: rule_id, rhs_chunk, rule_id, extend_key, decl_metadata, when_part, rule_attributes, rule_key
+            // elements: rule_id, extend_key, rule_attributes, rule_id, decl_metadata, rule_key, rhs_chunk, when_part
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3794,17 +3821,17 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 641:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 679:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:641: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:679: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());
-                // src/main/resources/org/drools/lang/DRL.g:641:25: ( ^( extend_key rule_id ) )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:25: ( ^( extend_key rule_id ) )?
                 if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:641:25: ^( extend_key rule_id )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:25: ^( extend_key rule_id )
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
@@ -3817,19 +3844,19 @@
                 }
                 stream_rule_id.reset();
                 stream_extend_key.reset();
-                // src/main/resources/org/drools/lang/DRL.g:641:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // src/main/resources/org/drools/lang/DRL.g:641:63: ( rule_attributes )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:63: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
                     adaptor.addChild(root_1, stream_rule_attributes.nextTree());
 
                 }
                 stream_rule_attributes.reset();
-                // src/main/resources/org/drools/lang/DRL.g:641:80: ( when_part )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:80: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
                     adaptor.addChild(root_1, stream_when_part.nextTree());
 
@@ -3916,7 +3943,7 @@
     };
 
     // $ANTLR start "when_part"
-    // src/main/resources/org/drools/lang/DRL.g:686: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:724: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);
@@ -3934,16 +3961,16 @@
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:687:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // src/main/resources/org/drools/lang/DRL.g:687:5: WHEN ( COLON )? normal_lhs_block
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:725: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:725:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1512); if (state.failed) return retval; 
+            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1658); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_WHEN.add(WHEN74);
 
             if ( state.backtracking==0 ) {
               	emit(WHEN74, DroolsEditorType.KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:688:3: ( COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:3: ( COLON )?
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -3952,9 +3979,9 @@
             }
             switch (alt33) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:688:3: COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:3: COLON
                     {
-                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1518); if (state.failed) return retval; 
+                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1664); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON75);
 
 
@@ -3969,7 +3996,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1528);
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1674);
             normal_lhs_block76=normal_lhs_block();
 
             state._fsp--;
@@ -3978,7 +4005,7 @@
 
 
             // AST REWRITE
-            // elements: WHEN, normal_lhs_block
+            // elements: normal_lhs_block, WHEN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3988,7 +4015,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 691:2: -> WHEN normal_lhs_block
+            // 729:2: -> WHEN normal_lhs_block
             {
                 adaptor.addChild(root_0, stream_WHEN.nextNode());
                 adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
@@ -4024,7 +4051,7 @@
     };
 
     // $ANTLR start "rule_id"
-    // src/main/resources/org/drools/lang/DRL.g:694: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:732: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);
@@ -4034,11 +4061,11 @@
         Token id=null;
 
         Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:695: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:733:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -4057,9 +4084,9 @@
             }
             switch (alt34) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:695:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1549); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1695); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4079,7 +4106,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 697:64: -> VT_RULE_ID[$id]
+                    // 735:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4089,9 +4116,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:698:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:736:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1565); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1711); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4111,7 +4138,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 700:64: -> VT_RULE_ID[$id]
+                    // 738:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4148,7 +4175,7 @@
     };
 
     // $ANTLR start "rule_attributes"
-    // src/main/resources/org/drools/lang/DRL.g:703: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:741: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);
@@ -4166,19 +4193,19 @@
 
         Object COLON78_tree=null;
         Object COMMA80_tree=null;
+        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
-        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
+        RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
-        RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:704:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:704: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:742: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:742:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:704:4: ( attributes_key COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( attributes_key COLON )?
             int alt35=2;
             int LA35_0 = input.LA(1);
 
-            if ( (LA35_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validate!
 IdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {
+            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))))) {
@@ -4187,15 +4214,15 @@
             }
             switch (alt35) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:704:6: attributes_key COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1586);
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1732);
                     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_attributes1588); if (state.failed) return retval; 
+                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1734); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON78);
 
                     if ( state.backtracking==0 ) {
@@ -4207,13 +4234,13 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1598);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1744);
             rule_attribute79=rule_attribute();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:705:18: ( ( COMMA )? attr= rule_attribute )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:18: ( ( COMMA )? attr= rule_attribute )*
             loop37:
             do {
                 int alt37=2;
@@ -4226,9 +4253,9 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:705:20: ( COMMA )? attr= rule_attribute
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:705:20: ( COMMA )?
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: ( COMMA )?
             	    int alt36=2;
             	    int LA36_0 = input.LA(1);
 
@@ -4237,9 +4264,9 @@
             	    }
             	    switch (alt36) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:705:20: COMMA
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: COMMA
             	            {
-            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1602); if (state.failed) return retval; 
+            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1748); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA80);
 
 
@@ -4251,7 +4278,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1609);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1755);
             	    attr=rule_attribute();
 
             	    state._fsp--;
@@ -4279,14 +4306,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 706:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 744:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:706:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:706:27: ( attributes_key )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_attributes_key.nextTree());
 
@@ -4335,7 +4362,7 @@
     };
 
     // $ANTLR start "rule_attribute"
-    // src/main/resources/org/drools/lang/DRL.g:709:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747: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);
@@ -4366,20 +4393,26 @@
 
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:712:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
-            int alt38=12;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750: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 :
-                    // src/main/resources/org/drools/lang/DRL.g:712:4: salience
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1648);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1794);
                     salience81=salience();
 
                     state._fsp--;
@@ -4389,11 +4422,11 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:713:4: no_loop
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1654);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1800);
                     no_loop82=no_loop();
 
                     state._fsp--;
@@ -4403,11 +4436,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:714:4: agenda_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1659);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1805);
                     agenda_group83=agenda_group();
 
                     state._fsp--;
@@ -4417,11 +4450,11 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:715:4: duration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1666);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1812);
                     duration84=duration();
 
                     state._fsp--;
@@ -4431,11 +4464,11 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:716:4: activation_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1673);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1819);
                     activation_group85=activation_group();
 
                     state._fsp--;
@@ -4445,11 +4478,11 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:717:4: auto_focus
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1679);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1825);
                     auto_focus86=auto_focus();
 
                     state._fsp--;
@@ -4459,11 +4492,11 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:718:4: date_effective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1685);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1831);
                     date_effective87=date_effective();
 
                     state._fsp--;
@@ -4473,11 +4506,11 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:719:4: date_expires
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1691);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1837);
                     date_expires88=date_expires();
 
                     state._fsp--;
@@ -4487,11 +4520,11 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:720:4: enabled
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1697);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1843);
                     enabled89=enabled();
 
                     state._fsp--;
@@ -4501,11 +4534,11 @@
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DRL.g:721:4: ruleflow_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1703);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1849);
                     ruleflow_group90=ruleflow_group();
 
                     state._fsp--;
@@ -4515,11 +4548,11 @@
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DRL.g:722:4: lock_on_active
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1709);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1855);
                     lock_on_active91=lock_on_active();
 
                     state._fsp--;
@@ -4529,11 +4562,11 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DRL.g:723:4: dialect
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1714);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1860);
                     dialect92=dialect();
 
                     state._fsp--;
@@ -4542,7 +4575,49 @@
 
                     }
                     break;
+                case 13 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: prior
+                    {
+                    root_0 = (Object)adaptor.nil();
 
+                    pushFollow(FOLLOW_prior_in_rule_attribute1866);
+                    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:763:4: entail_mode
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1871);
+                    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:764:4: filter
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_filter_in_rule_attribute1876);
+                    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);
 
@@ -4581,41 +4656,41 @@
     };
 
     // $ANTLR start "date_effective"
-    // src/main/resources/org/drools/lang/DRL.g:733:1: date_effective : date_effective_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774: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 STRING94=null;
-        DRLParser.date_effective_key_return date_effective_key93 = null;
+        Token STRING97=null;
+        DRLParser.date_effective_key_return date_effective_key96 = null;
 
 
-        Object STRING94_tree=null;
+        Object STRING97_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:734:2: ( date_effective_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:734:4: date_effective_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:2: ( date_effective_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1729);
-            date_effective_key93=date_effective_key();
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1890);
+            date_effective_key96=date_effective_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key93.getTree(), root_0);
+            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);	
             }
-            STRING94=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1734); if (state.failed) return retval;
+            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1895); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING94_tree = (Object)adaptor.create(STRING94);
-            adaptor.addChild(root_0, STRING94_tree);
+            STRING97_tree = (Object)adaptor.create(STRING97);
+            adaptor.addChild(root_0, STRING97_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING94, DroolsEditorType.STRING_CONST );	
+              	emit(STRING97, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4646,41 +4721,41 @@
     };
 
     // $ANTLR start "date_expires"
-    // src/main/resources/org/drools/lang/DRL.g:738:1: date_expires : date_expires_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779: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 STRING96=null;
-        DRLParser.date_expires_key_return date_expires_key95 = null;
+        Token STRING99=null;
+        DRLParser.date_expires_key_return date_expires_key98 = null;
 
 
-        Object STRING96_tree=null;
+        Object STRING99_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:739:2: ( date_expires_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:739:4: date_expires_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:2: ( date_expires_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1748);
-            date_expires_key95=date_expires_key();
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1909);
+            date_expires_key98=date_expires_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key95.getTree(), root_0);
+            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);	
             }
-            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1753); if (state.failed) return retval;
+            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1914); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING96_tree = (Object)adaptor.create(STRING96);
-            adaptor.addChild(root_0, STRING96_tree);
+            STRING99_tree = (Object)adaptor.create(STRING99);
+            adaptor.addChild(root_0, STRING99_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING96, DroolsEditorType.STRING_CONST );	
+              	emit(STRING99, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4711,37 +4786,37 @@
     };
 
     // $ANTLR start "enabled"
-    // src/main/resources/org/drools/lang/DRL.g:743:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784: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 BOOL98=null;
-        DRLParser.enabled_key_return enabled_key97 = null;
+        Token BOOL101=null;
+        DRLParser.enabled_key_return enabled_key100 = null;
 
-        DRLParser.paren_chunk_return paren_chunk99 = null;
+        DRLParser.paren_chunk_return paren_chunk102 = null;
 
 
-        Object BOOL98_tree=null;
+        Object BOOL101_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:744:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:744:4: enabled_key ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1768);
-            enabled_key97=enabled_key();
+            pushFollow(FOLLOW_enabled_key_in_enabled1929);
+            enabled_key100=enabled_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key97.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key100.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:745:6: ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:6: ( BOOL | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4760,28 +4835,28 @@
             }
             switch (alt39) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:745:8: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:8: BOOL
                     {
-                    BOOL98=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1781); if (state.failed) return retval;
+                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1942); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL98_tree = (Object)adaptor.create(BOOL98);
-                    adaptor.addChild(root_0, BOOL98_tree);
+                    BOOL101_tree = (Object)adaptor.create(BOOL101);
+                    adaptor.addChild(root_0, BOOL101_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(BOOL98, DroolsEditorType.BOOLEAN_CONST );	
+                      	emit(BOOL101, DroolsEditorType.BOOLEAN_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:746:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1792);
-                    paren_chunk99=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1953);
+                    paren_chunk102=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk99.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk102.getTree());
 
                     }
                     break;
@@ -4817,37 +4892,37 @@
     };
 
     // $ANTLR start "salience"
-    // src/main/resources/org/drools/lang/DRL.g:750:1: salience : salience_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791: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 INT101=null;
-        DRLParser.salience_key_return salience_key100 = null;
+        Token INT104=null;
+        DRLParser.salience_key_return salience_key103 = null;
 
-        DRLParser.paren_chunk_return paren_chunk102 = null;
+        DRLParser.paren_chunk_return paren_chunk105 = null;
 
 
-        Object INT101_tree=null;
+        Object INT104_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:751:2: ( salience_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:751:4: salience_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:2: ( salience_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1812);
-            salience_key100=salience_key();
+            pushFollow(FOLLOW_salience_key_in_salience1973);
+            salience_key103=salience_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key100.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key103.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:752:3: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:3: ( INT | paren_chunk )
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4866,28 +4941,28 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:752:5: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:5: INT
                     {
-                    INT101=(Token)match(input,INT,FOLLOW_INT_in_salience1821); if (state.failed) return retval;
+                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience1982); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT101_tree = (Object)adaptor.create(INT101);
-                    adaptor.addChild(root_0, INT101_tree);
+                    INT104_tree = (Object)adaptor.create(INT104);
+                    adaptor.addChild(root_0, INT104_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT101, DroolsEditorType.NUMERIC_CONST );	
+                      	emit(INT104, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:753:5: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1830);
-                    paren_chunk102=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_salience1991);
+                    paren_chunk105=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk102.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk105.getTree());
 
                     }
                     break;
@@ -4923,35 +4998,35 @@
     };
 
     // $ANTLR start "no_loop"
-    // src/main/resources/org/drools/lang/DRL.g:757:1: no_loop : no_loop_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798: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 BOOL104=null;
-        DRLParser.no_loop_key_return no_loop_key103 = null;
+        Token BOOL107=null;
+        DRLParser.no_loop_key_return no_loop_key106 = null;
 
 
-        Object BOOL104_tree=null;
+        Object BOOL107_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:758:2: ( no_loop_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:758:4: no_loop_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:2: ( no_loop_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1845);
-            no_loop_key103=no_loop_key();
+            pushFollow(FOLLOW_no_loop_key_in_no_loop2006);
+            no_loop_key106=no_loop_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key103.getTree(), root_0);
+            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);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:758:66: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:66: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -4960,12 +5035,12 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:758:66: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:66: BOOL
                     {
-                    BOOL104=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1850); if (state.failed) return retval;
+                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop2011); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL104_tree = (Object)adaptor.create(BOOL104);
-                    adaptor.addChild(root_0, BOOL104_tree);
+                    BOOL107_tree = (Object)adaptor.create(BOOL107);
+                    adaptor.addChild(root_0, BOOL107_tree);
                     }
 
                     }
@@ -4974,7 +5049,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL104, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL107, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5005,35 +5080,35 @@
     };
 
     // $ANTLR start "auto_focus"
-    // src/main/resources/org/drools/lang/DRL.g:762:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803: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 BOOL106=null;
-        DRLParser.auto_focus_key_return auto_focus_key105 = null;
+        Token BOOL109=null;
+        DRLParser.auto_focus_key_return auto_focus_key108 = null;
 
 
-        Object BOOL106_tree=null;
+        Object BOOL109_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:763:2: ( auto_focus_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:763:4: auto_focus_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:2: ( auto_focus_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1865);
-            auto_focus_key105=auto_focus_key();
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2026);
+            auto_focus_key108=auto_focus_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key105.getTree(), root_0);
+            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);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:763:69: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:69: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5042,12 +5117,12 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:763:69: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:69: BOOL
                     {
-                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1870); if (state.failed) return retval;
+                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2031); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL106_tree = (Object)adaptor.create(BOOL106);
-                    adaptor.addChild(root_0, BOOL106_tree);
+                    BOOL109_tree = (Object)adaptor.create(BOOL109);
+                    adaptor.addChild(root_0, BOOL109_tree);
                     }
 
                     }
@@ -5056,7 +5131,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL106, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL109, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5087,41 +5162,41 @@
     };
 
     // $ANTLR start "activation_group"
-    // src/main/resources/org/drools/lang/DRL.g:767:1: activation_group : activation_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:808: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 STRING108=null;
-        DRLParser.activation_group_key_return activation_group_key107 = null;
+        Token STRING111=null;
+        DRLParser.activation_group_key_return activation_group_key110 = null;
 
 
-        Object STRING108_tree=null;
+        Object STRING111_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:768:2: ( activation_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:768:4: activation_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:2: ( activation_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1887);
-            activation_group_key107=activation_group_key();
+            pushFollow(FOLLOW_activation_group_key_in_activation_group2048);
+            activation_group_key110=activation_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key107.getTree(), root_0);
+            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);	
             }
-            STRING108=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1892); if (state.failed) return retval;
+            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2053); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING108_tree = (Object)adaptor.create(STRING108);
-            adaptor.addChild(root_0, STRING108_tree);
+            STRING111_tree = (Object)adaptor.create(STRING111);
+            adaptor.addChild(root_0, STRING111_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING108, DroolsEditorType.STRING_CONST );	
+              	emit(STRING111, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5152,41 +5227,41 @@
     };
 
     // $ANTLR start "ruleflow_group"
-    // src/main/resources/org/drools/lang/DRL.g:772:1: ruleflow_group : ruleflow_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813: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 STRING110=null;
-        DRLParser.ruleflow_group_key_return ruleflow_group_key109 = null;
+        Token STRING113=null;
+        DRLParser.ruleflow_group_key_return ruleflow_group_key112 = null;
 
 
-        Object STRING110_tree=null;
+        Object STRING113_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:773:2: ( ruleflow_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:773:4: ruleflow_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:2: ( ruleflow_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1906);
-            ruleflow_group_key109=ruleflow_group_key();
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2067);
+            ruleflow_group_key112=ruleflow_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key109.getTree(), root_0);
+            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);	
             }
-            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1911); if (state.failed) return retval;
+            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2072); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING110_tree = (Object)adaptor.create(STRING110);
-            adaptor.addChild(root_0, STRING110_tree);
+            STRING113_tree = (Object)adaptor.create(STRING113);
+            adaptor.addChild(root_0, STRING113_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING110, DroolsEditorType.STRING_CONST );	
+              	emit(STRING113, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5217,41 +5292,41 @@
     };
 
     // $ANTLR start "agenda_group"
-    // src/main/resources/org/drools/lang/DRL.g:777:1: agenda_group : agenda_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818: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 STRING112=null;
-        DRLParser.agenda_group_key_return agenda_group_key111 = null;
+        Token STRING115=null;
+        DRLParser.agenda_group_key_return agenda_group_key114 = null;
 
 
-        Object STRING112_tree=null;
+        Object STRING115_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:778:2: ( agenda_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:778:4: agenda_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:2: ( agenda_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1925);
-            agenda_group_key111=agenda_group_key();
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2086);
+            agenda_group_key114=agenda_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key111.getTree(), root_0);
+            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);	
             }
-            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1930); if (state.failed) return retval;
+            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2091); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING112_tree = (Object)adaptor.create(STRING112);
-            adaptor.addChild(root_0, STRING112_tree);
+            STRING115_tree = (Object)adaptor.create(STRING115);
+            adaptor.addChild(root_0, STRING115_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING112, DroolsEditorType.STRING_CONST );	
+              	emit(STRING115, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5282,37 +5357,37 @@
     };
 
     // $ANTLR start "duration"
-    // src/main/resources/org/drools/lang/DRL.g:782:1: duration : duration_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823: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 INT114=null;
-        DRLParser.duration_key_return duration_key113 = null;
+        Token INT117=null;
+        DRLParser.duration_key_return duration_key116 = null;
 
-        DRLParser.paren_chunk_return paren_chunk115 = null;
+        DRLParser.paren_chunk_return paren_chunk118 = null;
 
 
-        Object INT114_tree=null;
+        Object INT117_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:783:2: ( duration_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:783:4: duration_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:2: ( duration_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:4: duration_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1944);
-            duration_key113=duration_key();
+            pushFollow(FOLLOW_duration_key_in_duration2105);
+            duration_key116=duration_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key113.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key116.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:784:6: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:6: ( INT | paren_chunk )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -5331,28 +5406,28 @@
             }
             switch (alt43) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:784:8: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:8: INT
                     {
-                    INT114=(Token)match(input,INT,FOLLOW_INT_in_duration1957); if (state.failed) return retval;
+                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2118); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT114_tree = (Object)adaptor.create(INT114);
-                    adaptor.addChild(root_0, INT114_tree);
+                    INT117_tree = (Object)adaptor.create(INT117);
+                    adaptor.addChild(root_0, INT117_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT114, DroolsEditorType.NUMERIC_CONST );	
+                      	emit(INT117, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:785:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_duration1968);
-                    paren_chunk115=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_duration2129);
+                    paren_chunk118=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk115.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk118.getTree());
 
                     }
                     break;
@@ -5388,41 +5463,41 @@
     };
 
     // $ANTLR start "dialect"
-    // src/main/resources/org/drools/lang/DRL.g:789:1: dialect : dialect_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830: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 STRING117=null;
-        DRLParser.dialect_key_return dialect_key116 = null;
+        Token STRING120=null;
+        DRLParser.dialect_key_return dialect_key119 = null;
 
 
-        Object STRING117_tree=null;
+        Object STRING120_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:790:2: ( dialect_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:790:4: dialect_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:2: ( dialect_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect1988);
-            dialect_key116=dialect_key();
+            pushFollow(FOLLOW_dialect_key_in_dialect2149);
+            dialect_key119=dialect_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key116.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key119.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING117=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1993); if (state.failed) return retval;
+            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2154); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING117_tree = (Object)adaptor.create(STRING117);
-            adaptor.addChild(root_0, STRING117_tree);
+            STRING120_tree = (Object)adaptor.create(STRING120);
+            adaptor.addChild(root_0, STRING120_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING117, DroolsEditorType.STRING_CONST );	
+              	emit(STRING120, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5453,35 +5528,35 @@
     };
 
     // $ANTLR start "lock_on_active"
-    // src/main/resources/org/drools/lang/DRL.g:794: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:835: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 BOOL119=null;
-        DRLParser.lock_on_active_key_return lock_on_active_key118 = null;
+        Token BOOL122=null;
+        DRLParser.lock_on_active_key_return lock_on_active_key121 = null;
 
 
-        Object BOOL119_tree=null;
+        Object BOOL122_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:795:2: ( lock_on_active_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:795:4: lock_on_active_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:2: ( lock_on_active_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2011);
-            lock_on_active_key118=lock_on_active_key();
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2172);
+            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_key118.getTree(), root_0);
+            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);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:795:73: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:73: ( BOOL )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -5490,12 +5565,12 @@
             }
             switch (alt44) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:795:73: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:73: BOOL
                     {
-                    BOOL119=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2016); if (state.failed) return retval;
+                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2177); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL119_tree = (Object)adaptor.create(BOOL119);
-                    adaptor.addChild(root_0, BOOL119_tree);
+                    BOOL122_tree = (Object)adaptor.create(BOOL122);
+                    adaptor.addChild(root_0, BOOL122_tree);
                     }
 
                     }
@@ -5504,7 +5579,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL119, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL122, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5529,28 +5604,221 @@
     }
     // $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:840: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:841:3: ( prior_key paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:5: prior_key paren_chunk
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_prior_key_in_prior2194);
+            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_prior2199);
+            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:844: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:845:3: ( entail_mode_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:5: entail_mode_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2216);
+            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_mode2221); 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:849: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:850:3: ( filter_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:5: filter_key STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_filter_key_in_filter2243);
+            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_filter2248); 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"
-    // src/main/resources/org/drools/lang/DRL.g:799: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:858: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 lhs120 = null;
+        DRLParser.lhs_return lhs129 = null;
 
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:800:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:800:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: ( lhs )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:800:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: ( lhs )*
             loop45:
             do {
                 int alt45=2;
@@ -5572,14 +5840,14 @@
 
                 switch (alt45) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:800:4: lhs
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2031);
-            	    lhs120=lhs();
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2268);
+            	    lhs129=lhs();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_lhs.add(lhs120.getTree());
+            	    if ( state.backtracking==0 ) stream_lhs.add(lhs129.getTree());
 
             	    }
             	    break;
@@ -5602,14 +5870,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 801:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 860:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:801:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:801:23: ( lhs )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.nextTree());
 
@@ -5650,29 +5918,29 @@
     };
 
     // $ANTLR start "lhs"
-    // src/main/resources/org/drools/lang/DRL.g:804:1: lhs : lhs_or ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863: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_or121 = null;
+        DRLParser.lhs_or_return lhs_or130 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:804:5: ( lhs_or )
-            // src/main/resources/org/drools/lang/DRL.g:804:7: lhs_or
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:5: ( lhs_or )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2052);
-            lhs_or121=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_lhs2289);
+            lhs_or130=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or121.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or130.getTree());
 
             }
 
@@ -5702,7 +5970,7 @@
     };
 
     // $ANTLR start "lhs_or"
-    // src/main/resources/org/drools/lang/DRL.g:807:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866: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 ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | 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);
@@ -5710,127 +5978,208 @@
         Object root_0 = null;
 
         Token pipe=null;
-        Token LEFT_PAREN122=null;
-        Token RIGHT_PAREN124=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.lhs_and_return lhs_and123 = null;
+        DRLParser.constr_parameters_return constr_parameters132 = null;
 
-        DRLParser.lhs_and_return lhs_and125 = null;
+        DRLParser.lhs_and_return lhs_and133 = null;
 
-        DRLParser.lhs_and_return lhs_and126 = null;
+        DRLParser.constr_parameters_return constr_parameters136 = null;
 
+        DRLParser.lhs_and_return lhs_and137 = null;
 
+        DRLParser.lhs_and_return lhs_and138 = null;
+
+        DRLParser.constr_parameters_return constr_parameters141 = null;
+
+        DRLParser.lhs_and_return lhs_and142 = null;
+
+        DRLParser.lhs_and_return lhs_and143 = null;
+
+        DRLParser.lhs_and_return lhs_and145 = null;
+
+        DRLParser.square_chunk_return square_chunk146 = 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_PAREN122_tree=null;
-        Object RIGHT_PAREN124_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_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
+        RewriteRuleSubtreeStream stream_hedge=new RewriteRuleSubtreeStream(adaptor,"rule hedge");
         RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
+        RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
+        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");
 
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:810:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
-            int alt49=2;
-            int LA49_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869: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 ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
+            int alt53=5;
+            int LA53_0 = input.LA(1);
 
-            if ( (LA49_0==LEFT_PAREN) ) {
-                int LA49_1 = input.LA(2);
+            if ( (LA53_0==LEFT_PAREN) ) {
+                int LA53_1 = input.LA(2);
 
                 if ( (synpred1_DRL()) ) {
-                    alt49=1;
+                    alt53=1;
                 }
+                else if ( (synpred2_DRL()) ) {
+                    alt53=2;
+                }
+                else if ( (synpred3_DRL()) ) {
+                    alt53=3;
+                }
                 else if ( (true) ) {
-                    alt49=2;
+                    alt53=4;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 49, 1, input);
+                        new NoViableAltException("", 53, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA49_0==ID) ) {
-                alt49=2;
+            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("", 49, 0, input);
+                    new NoViableAltException("", 53, 0, input);
 
                 throw nvae;
             }
-            switch (alt49) {
+            switch (alt53) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:810:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:5: ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN122=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2076); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN122);
+                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2316); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN131);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN122, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN131, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2086);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2326);
                     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:872:4: ( constr_parameters )?
+                    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:872:4: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2335);
+                            constr_parameters132=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters132.getTree());
+
+                            }
+                            break;
+
+                    }
+
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:814:4: ( lhs_and )+
-                    int cnt46=0;
-                    loop46:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( lhs_and )+
+                    int cnt47=0;
+                    loop47:
                     do {
-                        int alt46=2;
-                        int LA46_0 = input.LA(1);
+                        int alt47=2;
+                        int LA47_0 = input.LA(1);
 
-                        if ( (LA46_0==ID||LA46_0==LEFT_PAREN) ) {
-                            alt46=1;
+                        if ( (LA47_0==ID||LA47_0==LEFT_PAREN) ) {
+                            alt47=1;
                         }
 
 
-                        switch (alt46) {
+                        switch (alt47) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:814:4: lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2094);
-                    	    lhs_and123=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2344);
+                    	    lhs_and133=lhs_and();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and123.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and133.getTree());
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt46 >= 1 ) break loop46;
+                    	    if ( cnt47 >= 1 ) break loop47;
                     	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(46, input);
+                                    new EarlyExitException(47, input);
                                 throw eee;
                         }
-                        cnt46++;
+                        cnt47++;
                     } while (true);
 
-                    RIGHT_PAREN124=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2100); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN124);
+                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2350); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN134);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN124, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN134, DroolsEditorType.SYMBOL);	
                     }
 
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, lhs_and
+                    // elements: constr_parameters, RIGHT_PAREN, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -5840,13 +6189,19 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 816:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                    // 876:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:816:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876: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:876:32: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.reset();
                         if ( !(stream_lhs_and.hasNext()) ) {
                             throw new RewriteEarlyExitException();
                         }
@@ -5866,20 +6221,214 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:817:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:817:4: ( lhs_and -> lhs_and )
-                    // src/main/resources/org/drools/lang/DRL.g:817:5: lhs_and
+                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2394); 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_or2407);
+                    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:882:7: ( constr_parameters )?
+                    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:882:7: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2421);
+                            constr_parameters136=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters136.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
+                    }
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2434);
+                    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_or2442);
+                    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_or2454); 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: RIGHT_PAREN, constr_parameters, lhs_and, 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();
+                    // 887:5: -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2123);
-                    lhs_and125=lhs_and();
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887: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:887:33: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.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:889: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_or2499); 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_or2512);
+                    xor=xor_key();
+
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and125.getTree());
+                    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:892:7: ( constr_parameters )?
+                    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:892:7: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2526);
+                            constr_parameters141=constr_parameters();
 
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters141.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
+                    }
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2539);
+                    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_or2547);
+                    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_or2559); 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: lhs_and, constr_parameters, lhs_and, 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();
+                    // 897: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:897: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:897:29: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.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:900:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | 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:900:4: ( lhs_and -> lhs_and )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:5: lhs_and
+                    {
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2592);
+                    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
@@ -5890,7 +6439,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 817:13: -> lhs_and
+                    // 900:13: -> lhs_and
                     {
                         adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
@@ -5899,63 +6448,86 @@
                     retval.tree = root_0;}
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:818:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
-                    loop48:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:3: ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    loop52:
                     do {
-                        int alt48=2;
-                        int LA48_0 = input.LA(1);
+                        int alt52=2;
+                        int LA52_0 = input.LA(1);
 
-                        if ( (LA48_0==ID) ) {
-                            int LA48_1 = input.LA(2);
+                        if ( (LA52_0==ID) ) {
+                            int LA52_1 = input.LA(2);
 
-                            if ( ((synpred2_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
-                                alt48=1;
+                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
+                                alt52=1;
                             }
 
 
                         }
-                        else if ( (LA48_0==DOUBLE_PIPE) ) {
-                            int LA48_3 = input.LA(2);
+                        else if ( (LA52_0==DOUBLE_PIPE) ) {
+                            int LA52_3 = input.LA(2);
 
-                            if ( (synpred2_DRL()) ) {
-                                alt48=1;
+                            if ( (synpred4_DRL()) ) {
+                                alt52=1;
                             }
 
 
                         }
 
 
-                        switch (alt48) {
+                        switch (alt52) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:818:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:818:28: (value= or_key | pipe= DOUBLE_PIPE )
-                    	    int alt47=2;
-                    	    int LA47_0 = input.LA(1);
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:49: (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE )
+                    	    int alt51=2;
+                    	    int LA51_0 = input.LA(1);
 
-                    	    if ( (LA47_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-                    	        alt47=1;
+                    	    if ( (LA51_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    	        alt51=1;
                     	    }
-                    	    else if ( (LA47_0==DOUBLE_PIPE) ) {
-                    	        alt47=2;
+                    	    else if ( (LA51_0==DOUBLE_PIPE) ) {
+                    	        alt51=2;
                     	    }
                     	    else {
                     	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("", 47, 0, input);
+                    	            new NoViableAltException("", 51, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt47) {
+                    	    switch (alt51) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:818:29: value= or_key
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:50: value= or_key ( square_chunk )?
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2145);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2619);
                     	            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:901:63: ( square_chunk )?
+                    	            int alt50=2;
+                    	            int LA50_0 = input.LA(1);
+
+                    	            if ( (LA50_0==LEFT_SQUARE) ) {
+                    	                alt50=1;
+                    	            }
+                    	            switch (alt50) {
+                    	                case 1 :
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:63: square_chunk
+                    	                    {
+                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_or2621);
+                    	                    square_chunk146=square_chunk();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return retval;
+                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk146.getTree());
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
                     	            if ( state.backtracking==0 ) {
                     	              orToken = (value!=null?((Token)value.start):null);
                     	            }
@@ -5963,9 +6535,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:818:69: pipe= DOUBLE_PIPE
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:902:6: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2152); if (state.failed) return retval; 
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2634); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( state.backtracking==0 ) {
@@ -5980,16 +6552,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2163);
-                    	    lhs_and126=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2645);
+                    	    lhs_and147=lhs_and();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and126.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and147.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_and, lhs_or
+                    	    // elements: constr_parameters, lhs_and, lhs_or
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -5999,13 +6571,17 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 821:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	    // 905:3: -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:821:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905: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:905:30: ( constr_parameters )?
+                    	        if ( stream_constr_parameters.hasNext() ) {
+                    	        }
+                    	        stream_constr_parameters.reset();
                     	        adaptor.addChild(root_1, stream_retval.nextTree());
                     	        adaptor.addChild(root_1, stream_lhs_and.nextTree());
 
@@ -6019,14 +6595,59 @@
                     	    break;
 
                     	default :
-                    	    break loop48;
+                    	    break loop52;
                         }
                     } while (true);
 
 
                     }
                     break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:5: hedge lhs_or
+                    {
+                    pushFollow(FOLLOW_hedge_in_lhs_or2675);
+                    hedge148=hedge();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_hedge.add(hedge148.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_or2677);
+                    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();
+                    // 908:5: -> ^( hedge lhs_or )
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908: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);
 
@@ -6048,13 +6669,88 @@
     }
     // $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:913: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:917:3: (value= very_key -> VT_HEDGE[type] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:5: value= very_key
+            {
+            pushFollow(FOLLOW_very_key_in_hedge2719);
+            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();
+            // 917: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"
-    // src/main/resources/org/drools/lang/DRL.g:824:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:1: lhs_and : ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( 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);
@@ -6062,127 +6758,183 @@
         Object root_0 = null;
 
         Token amper=null;
-        Token LEFT_PAREN127=null;
-        Token RIGHT_PAREN129=null;
+        Token LEFT_PAREN150=null;
+        Token RIGHT_PAREN154=null;
         DRLParser.and_key_return and = null;
 
         DRLParser.and_key_return value = null;
 
-        DRLParser.lhs_unary_return lhs_unary128 = null;
+        DRLParser.square_chunk_return square_chunk151 = null;
 
-        DRLParser.lhs_unary_return lhs_unary130 = null;
+        DRLParser.constr_parameters_return constr_parameters152 = null;
 
-        DRLParser.lhs_unary_return lhs_unary131 = null;
+        DRLParser.lhs_unary_return lhs_unary153 = null;
 
+        DRLParser.lhs_unary_return lhs_unary155 = null;
 
+        DRLParser.constr_parameters_return constr_parameters156 = null;
+
+        DRLParser.square_chunk_return square_chunk157 = null;
+
+        DRLParser.lhs_unary_return lhs_unary158 = null;
+
+
         Object amper_tree=null;
-        Object LEFT_PAREN127_tree=null;
-        Object RIGHT_PAREN129_tree=null;
-        RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
+        Object LEFT_PAREN150_tree=null;
+        Object RIGHT_PAREN154_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_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_and_key=new RewriteRuleSubtreeStream(adaptor,"rule and_key");
-        RewriteRuleSubtreeStream stream_lhs_unary=new RewriteRuleSubtreeStream(adaptor,"rule lhs_unary");
+        RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
 
         	Token andToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:827:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
-            int alt53=2;
-            int LA53_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:3: ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )* )
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            if ( (LA53_0==LEFT_PAREN) ) {
-                int LA53_1 = input.LA(2);
+            if ( (LA61_0==LEFT_PAREN) ) {
+                int LA61_1 = input.LA(2);
 
-                if ( (synpred3_DRL()) ) {
-                    alt53=1;
+                if ( (synpred5_DRL()) ) {
+                    alt61=1;
                 }
                 else if ( (true) ) {
-                    alt53=2;
+                    alt61=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 53, 1, input);
+                        new NoViableAltException("", 61, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA53_0==ID) ) {
-                alt53=2;
+            else if ( (LA61_0==ID) ) {
+                alt61=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 53, 0, input);
+                    new NoViableAltException("", 61, 0, input);
 
                 throw nvae;
             }
-            switch (alt53) {
+            switch (alt61) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:827:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:5: ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN127=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2204); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN127);
+                    LEFT_PAREN150=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2755); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN150);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN127, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN150, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2214);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2765);
                     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:927:4: ( square_chunk )?
+                    int alt54=2;
+                    int LA54_0 = input.LA(1);
+
+                    if ( (LA54_0==LEFT_SQUARE) ) {
+                        alt54=1;
+                    }
+                    switch (alt54) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:4: square_chunk
+                            {
+                            pushFollow(FOLLOW_square_chunk_in_lhs_and2770);
+                            square_chunk151=square_chunk();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk151.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:4: ( constr_parameters )?
+                    int alt55=2;
+                    int LA55_0 = input.LA(1);
+
+                    if ( (LA55_0==AT) ) {
+                        alt55=1;
+                    }
+                    switch (alt55) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:4: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_and2776);
+                            constr_parameters152=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters152.getTree());
+
+                            }
+                            break;
+
+                    }
+
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:831:4: ( lhs_unary )+
-                    int cnt50=0;
-                    loop50:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:4: ( lhs_unary )+
+                    int cnt56=0;
+                    loop56:
                     do {
-                        int alt50=2;
-                        int LA50_0 = input.LA(1);
+                        int alt56=2;
+                        int LA56_0 = input.LA(1);
 
-                        if ( (LA50_0==ID||LA50_0==LEFT_PAREN) ) {
-                            alt50=1;
+                        if ( (LA56_0==ID||LA56_0==LEFT_PAREN) ) {
+                            alt56=1;
                         }
 
 
-                        switch (alt50) {
+                        switch (alt56) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:831:4: lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2222);
-                    	    lhs_unary128=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2785);
+                    	    lhs_unary153=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary128.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary153.getTree());
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt50 >= 1 ) break loop50;
+                    	    if ( cnt56 >= 1 ) break loop56;
                     	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(50, input);
+                                    new EarlyExitException(56, input);
                                 throw eee;
                         }
-                        cnt50++;
+                        cnt56++;
                     } while (true);
 
-                    RIGHT_PAREN129=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2228); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN129);
+                    RIGHT_PAREN154=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2791); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN154);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN129, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN154, DroolsEditorType.SYMBOL);	
                     }
 
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, lhs_unary
+                    // elements: square_chunk, constr_parameters, RIGHT_PAREN, lhs_unary
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6192,13 +6944,25 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 833:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                    // 932:3: -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:833:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:6: ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( 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:932:34: ( 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:932:48: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.reset();
                         if ( !(stream_lhs_unary.hasNext()) ) {
                             throw new RewriteEarlyExitException();
                         }
@@ -6218,17 +6982,17 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:834:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:834:4: ( lhs_unary -> lhs_unary )
-                    // src/main/resources/org/drools/lang/DRL.g:834:5: lhs_unary
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:2: ( lhs_unary -> lhs_unary )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:3: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2252);
-                    lhs_unary130=lhs_unary();
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2828);
+                    lhs_unary155=lhs_unary();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary130.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary155.getTree());
 
 
                     // AST REWRITE
@@ -6242,7 +7006,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 834:15: -> lhs_unary
+                    // 936:13: -> lhs_unary
                     {
                         adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
@@ -6251,73 +7015,119 @@
                     retval.tree = root_0;}
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:835:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
-                    loop52:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:3: ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
+                    loop60:
                     do {
-                        int alt52=2;
-                        int LA52_0 = input.LA(1);
+                        int alt60=2;
+                        int LA60_0 = input.LA(1);
 
-                        if ( (LA52_0==ID) ) {
-                            int LA52_2 = input.LA(2);
+                        if ( (LA60_0==ID) ) {
+                            int LA60_2 = input.LA(2);
 
-                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
-                                alt52=1;
+                            if ( ((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
+                                alt60=1;
                             }
 
 
                         }
-                        else if ( (LA52_0==DOUBLE_AMPER) ) {
-                            int LA52_3 = input.LA(2);
+                        else if ( (LA60_0==DOUBLE_AMPER) ) {
+                            int LA60_3 = input.LA(2);
 
-                            if ( (synpred4_DRL()) ) {
-                                alt52=1;
+                            if ( (synpred6_DRL()) ) {
+                                alt60=1;
                             }
 
 
                         }
 
 
-                        switch (alt52) {
+                        switch (alt60) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:835:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:835:30: (value= and_key | amper= DOUBLE_AMPER )
-                    	    int alt51=2;
-                    	    int LA51_0 = input.LA(1);
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:3: (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER )
+                    	    int alt59=2;
+                    	    int LA59_0 = input.LA(1);
 
-                    	    if ( (LA51_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
-                    	        alt51=1;
+                    	    if ( (LA59_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+                    	        alt59=1;
                     	    }
-                    	    else if ( (LA51_0==DOUBLE_AMPER) ) {
-                    	        alt51=2;
+                    	    else if ( (LA59_0==DOUBLE_AMPER) ) {
+                    	        alt59=2;
                     	    }
                     	    else {
                     	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("", 51, 0, input);
+                    	            new NoViableAltException("", 59, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt51) {
+                    	    switch (alt59) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:835:31: value= and_key
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:5: value= and_key ( constr_parameters )? ( square_chunk )?
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2274);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2858);
                     	            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:938:19: ( constr_parameters )?
+                    	            int alt57=2;
+                    	            int LA57_0 = input.LA(1);
+
+                    	            if ( (LA57_0==AT) ) {
+                    	                alt57=1;
+                    	            }
+                    	            switch (alt57) {
+                    	                case 1 :
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:19: constr_parameters
+                    	                    {
+                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_and2860);
+                    	                    constr_parameters156=constr_parameters();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return retval;
+                    	                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters156.getTree());
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:38: ( square_chunk )?
+                    	            int alt58=2;
+                    	            int LA58_0 = input.LA(1);
+
+                    	            if ( (LA58_0==LEFT_SQUARE) ) {
+                    	                alt58=1;
+                    	            }
+                    	            switch (alt58) {
+                    	                case 1 :
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:38: square_chunk
+                    	                    {
+                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_and2863);
+                    	                    square_chunk157=square_chunk();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return retval;
+                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk157.getTree());
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
                     	            if ( state.backtracking==0 ) {
-                    	              andToken = (value!=null?((Token)value.start):null);
+                    	              andToken = (value!=null?((Token)value.start):null); 
                     	            }
 
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:835:73: amper= DOUBLE_AMPER
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:6: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2281); if (state.failed) return retval; 
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2876); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( state.backtracking==0 ) {
@@ -6332,16 +7142,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2292);
-                    	    lhs_unary131=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2890);
+                    	    lhs_unary158=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary131.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary158.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_and, lhs_unary
+                    	    // elements: lhs_and, lhs_unary, constr_parameters, square_chunk
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -6351,13 +7161,25 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 838:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	    // 943:3: -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:838:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:6: ^( VT_AND_INFIX[andToken] ( square_chunk )? ( 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:943:31: ( 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:943:45: ( constr_parameters )?
+                    	        if ( stream_constr_parameters.hasNext() ) {
+                    	            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                    	        }
+                    	        stream_constr_parameters.reset();
                     	        adaptor.addChild(root_1, stream_retval.nextTree());
                     	        adaptor.addChild(root_1, stream_lhs_unary.nextTree());
 
@@ -6371,7 +7193,7 @@
                     	    break;
 
                     	default :
-                    	    break loop52;
+                    	    break loop60;
                         }
                     } while (true);
 
@@ -6406,206 +7228,180 @@
     };
 
     // $ANTLR start "lhs_unary"
-    // src/main/resources/org/drools/lang/DRL.g:841:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | 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:946: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_PAREN137=null;
-        Token RIGHT_PAREN139=null;
-        Token SEMICOLON141=null;
-        DRLParser.lhs_exist_return lhs_exist132 = null;
+        Token LEFT_PAREN165=null;
+        Token RIGHT_PAREN167=null;
+        Token SEMICOLON169=null;
+        DRLParser.lhs_exist_return lhs_exist159 = null;
 
-        DRLParser.lhs_not_binding_return lhs_not_binding133 = null;
+        DRLParser.lhs_not_binding_return lhs_not_binding160 = null;
 
-        DRLParser.lhs_not_return lhs_not134 = null;
+        DRLParser.lhs_not_return lhs_not161 = null;
 
-        DRLParser.lhs_eval_return lhs_eval135 = null;
+        DRLParser.lhs_eval_return lhs_eval162 = null;
 
-        DRLParser.lhs_forall_return lhs_forall136 = null;
+        DRLParser.lhs_forall_return lhs_forall163 = null;
 
-        DRLParser.lhs_or_return lhs_or138 = null;
+        DRLParser.lhs_forany_return lhs_forany164 = null;
 
-        DRLParser.pattern_source_return pattern_source140 = null;
+        DRLParser.lhs_or_return lhs_or166 = null;
 
+        DRLParser.pattern_source_return pattern_source168 = null;
 
-        Object LEFT_PAREN137_tree=null;
-        Object RIGHT_PAREN139_tree=null;
-        Object SEMICOLON141_tree=null;
 
+        Object LEFT_PAREN165_tree=null;
+        Object RIGHT_PAREN167_tree=null;
+        Object SEMICOLON169_tree=null;
+
         try {
-            // src/main/resources/org/drools/lang/DRL.g:842:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:842:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | 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:947: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:947: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();
 
-            // src/main/resources/org/drools/lang/DRL.g:842:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
-            int alt54=7;
-            int LA54_0 = input.LA(1);
-
-            if ( (LA54_0==ID) ) {
-                int LA54_1 = input.LA(2);
-
-                if ( (((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
-                    alt54=1;
-                }
-                else if ( (((validateNotWithBinding())&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))) ) {
-                    alt54=2;
-                }
-                else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
-                    alt54=3;
-                }
-                else if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
-                    alt54=4;
-                }
-                else if ( (((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
-                    alt54=5;
-                }
-                else if ( (true) ) {
-                    alt54=7;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return retval;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 54, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else if ( (LA54_0==LEFT_PAREN) ) {
-                alt54=6;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 54, 0, input);
-
-                throw nvae;
-            }
-            switch (alt54) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            int alt62=8;
+            alt62 = dfa62.predict(input);
+            switch (alt62) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:842:6: lhs_exist
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2323);
-                    lhs_exist132=lhs_exist();
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2934);
+                    lhs_exist159=lhs_exist();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist132.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist159.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:843:4: {...}? => lhs_not_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948: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_unary2331);
-                    lhs_not_binding133=lhs_not_binding();
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2942);
+                    lhs_not_binding160=lhs_not_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding133.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding160.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:844:5: lhs_not
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2337);
-                    lhs_not134=lhs_not();
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2948);
+                    lhs_not161=lhs_not();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not134.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not161.getTree());
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:845:5: lhs_eval
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2343);
-                    lhs_eval135=lhs_eval();
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2954);
+                    lhs_eval162=lhs_eval();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval135.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval162.getTree());
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:846:5: lhs_forall
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2349);
-                    lhs_forall136=lhs_forall();
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2960);
+                    lhs_forall163=lhs_forall();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall136.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall163.getTree());
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:847:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: lhs_forany
                     {
-                    LEFT_PAREN137=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2355); if (state.failed) return retval;
+                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary2966);
+                    lhs_forany164=lhs_forany();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forany164.getTree());
+
+                    }
+                    break;
+                case 7 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    {
+                    LEFT_PAREN165=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2972); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN137, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN165, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2366);
-                    lhs_or138=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2983);
+                    lhs_or166=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or138.getTree());
-                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2372); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or166.getTree());
+                    RIGHT_PAREN167=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2989); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN139_tree = (Object)adaptor.create(RIGHT_PAREN139);
-                    adaptor.addChild(root_0, RIGHT_PAREN139_tree);
+                    RIGHT_PAREN167_tree = (Object)adaptor.create(RIGHT_PAREN167);
+                    adaptor.addChild(root_0, RIGHT_PAREN167_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN139, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN167, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
-                case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:850:5: pattern_source
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2380);
-                    pattern_source140=pattern_source();
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2997);
+                    pattern_source168=pattern_source();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source140.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source168.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:852:3: ( ( SEMICOLON )=> SEMICOLON )?
-            int alt55=2;
-            int LA55_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:3: ( ( SEMICOLON )=> SEMICOLON )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
 
-            if ( (LA55_0==SEMICOLON) ) {
-                int LA55_1 = input.LA(2);
+            if ( (LA63_0==SEMICOLON) ) {
+                int LA63_1 = input.LA(2);
 
-                if ( (synpred5_DRL()) ) {
-                    alt55=1;
+                if ( (synpred7_DRL()) ) {
+                    alt63=1;
                 }
             }
-            switch (alt55) {
+            switch (alt63) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:852:4: ( SEMICOLON )=> SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON141=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2394); if (state.failed) return retval;
+                    SEMICOLON169=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary3011); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(SEMICOLON141, DroolsEditorType.SYMBOL);	
+                      	emit(SEMICOLON169, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -6642,78 +7438,78 @@
     };
 
     // $ANTLR start "lhs_exist"
-    // src/main/resources/org/drools/lang/DRL.g:855: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:961: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_PAREN144=null;
-        Token RIGHT_PAREN146=null;
-        DRLParser.exists_key_return exists_key142 = null;
+        Token LEFT_PAREN172=null;
+        Token RIGHT_PAREN174=null;
+        DRLParser.exists_key_return exists_key170 = null;
 
-        DRLParser.lhs_or_return lhs_or143 = null;
+        DRLParser.lhs_or_return lhs_or171 = null;
 
-        DRLParser.lhs_or_return lhs_or145 = null;
+        DRLParser.lhs_or_return lhs_or173 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern147 = null;
+        DRLParser.lhs_pattern_return lhs_pattern175 = null;
 
 
-        Object LEFT_PAREN144_tree=null;
-        Object RIGHT_PAREN146_tree=null;
+        Object LEFT_PAREN172_tree=null;
+        Object RIGHT_PAREN174_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");
-        RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:856: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 )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:856: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:962: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:962: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_exist2410);
-            exists_key142=exists_key();
+            pushFollow(FOLLOW_exists_key_in_lhs_exist3027);
+            exists_key170=exists_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_exists_key.add(exists_key142.getTree());
+            if ( state.backtracking==0 ) stream_exists_key.add(exists_key170.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:858:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt56=3;
-            int LA56_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:10: ( ( 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);
 
-            if ( (LA56_0==LEFT_PAREN) ) {
-                int LA56_1 = input.LA(2);
+            if ( (LA64_0==LEFT_PAREN) ) {
+                int LA64_1 = input.LA(2);
 
-                if ( (synpred6_DRL()) ) {
-                    alt56=1;
+                if ( (synpred8_DRL()) ) {
+                    alt64=1;
                 }
                 else if ( (true) ) {
-                    alt56=2;
+                    alt64=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 1, input);
+                        new NoViableAltException("", 64, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA56_0==ID) ) {
-                int LA56_2 = input.LA(2);
+            else if ( (LA64_0==ID) ) {
+                int LA64_2 = input.LA(2);
 
-                if ( ((((synpred6_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||synpred6_DRL()||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
-                    alt56=1;
+                if ( (((synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY))))||synpred8_DRL()||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||((synpred8_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
+                    alt64=1;
                 }
                 else if ( (true) ) {
-                    alt56=3;
+                    alt64=3;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 56, 2, input);
+                        new NoViableAltException("", 64, 2, input);
 
                     throw nvae;
                 }
@@ -6721,56 +7517,56 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 56, 0, input);
+                    new NoViableAltException("", 64, 0, input);
 
                 throw nvae;
             }
-            switch (alt56) {
+            switch (alt64) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:858: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:964:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2437);
-                    lhs_or143=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3054);
+                    lhs_or171=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or143.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or171.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:859:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN144=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2444); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN144);
+                    LEFT_PAREN172=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3061); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN172);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN144, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN172, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2452);
-                    lhs_or145=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3069);
+                    lhs_or173=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or145.getTree());
-                    RIGHT_PAREN146=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2459); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN146);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or173.getTree());
+                    RIGHT_PAREN174=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3076); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN174);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN146, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN174, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:862:12: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2474);
-                    lhs_pattern147=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3091);
+                    lhs_pattern175=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern147.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern175.getTree());
 
                     }
                     break;
@@ -6780,7 +7576,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, exists_key, lhs_pattern, lhs_or
+            // elements: RIGHT_PAREN, lhs_pattern, exists_key, lhs_or
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -6790,26 +7586,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 864:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 970:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:864: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:970: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:864:26: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:864:34: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:864:47: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -6850,36 +7646,36 @@
     };
 
     // $ANTLR start "lhs_not_binding"
-    // src/main/resources/org/drools/lang/DRL.g:867: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:973: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_key148 = null;
+        DRLParser.not_key_return not_key176 = null;
 
-        DRLParser.fact_binding_return fact_binding149 = null;
+        DRLParser.fact_binding_return fact_binding177 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:868:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // src/main/resources/org/drools/lang/DRL.g:868:4: not_key fact_binding
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974: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:974:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2520);
-            not_key148=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding3137);
+            not_key176=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key148.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2522);
-            fact_binding149=fact_binding();
+            if ( state.backtracking==0 ) stream_not_key.add(not_key176.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3139);
+            fact_binding177=fact_binding();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding149.getTree());
+            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding177.getTree());
 
 
             // AST REWRITE
@@ -6893,14 +7689,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 869:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 975:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:869:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:869:15: ^( VT_PATTERN fact_binding )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975: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);
@@ -6944,78 +7740,78 @@
     };
 
     // $ANTLR start "lhs_not"
-    // src/main/resources/org/drools/lang/DRL.g:872: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:978: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_PAREN152=null;
-        Token RIGHT_PAREN154=null;
-        DRLParser.not_key_return not_key150 = null;
+        Token LEFT_PAREN180=null;
+        Token RIGHT_PAREN182=null;
+        DRLParser.not_key_return not_key178 = null;
 
-        DRLParser.lhs_or_return lhs_or151 = null;
+        DRLParser.lhs_or_return lhs_or179 = null;
 
-        DRLParser.lhs_or_return lhs_or153 = null;
+        DRLParser.lhs_or_return lhs_or181 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern155 = null;
+        DRLParser.lhs_pattern_return lhs_pattern183 = null;
 
 
-        Object LEFT_PAREN152_tree=null;
-        Object RIGHT_PAREN154_tree=null;
+        Object LEFT_PAREN180_tree=null;
+        Object RIGHT_PAREN182_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_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:872: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 )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:872: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:978: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:978: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_not2545);
-            not_key150=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not3162);
+            not_key178=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key150.getTree());
+            if ( state.backtracking==0 ) stream_not_key.add(not_key178.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:874:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt57=3;
-            int LA57_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt65=3;
+            int LA65_0 = input.LA(1);
 
-            if ( (LA57_0==LEFT_PAREN) ) {
-                int LA57_1 = input.LA(2);
+            if ( (LA65_0==LEFT_PAREN) ) {
+                int LA65_1 = input.LA(2);
 
-                if ( (synpred7_DRL()) ) {
-                    alt57=1;
+                if ( (synpred9_DRL()) ) {
+                    alt65=1;
                 }
                 else if ( (true) ) {
-                    alt57=2;
+                    alt65=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 57, 1, input);
+                        new NoViableAltException("", 65, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA57_0==ID) ) {
-                int LA57_2 = input.LA(2);
+            else if ( (LA65_0==ID) ) {
+                int LA65_2 = input.LA(2);
 
-                if ( (synpred7_DRL()) ) {
-                    alt57=1;
+                if ( (synpred9_DRL()) ) {
+                    alt65=1;
                 }
                 else if ( (true) ) {
-                    alt57=3;
+                    alt65=3;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 57, 2, input);
+                        new NoViableAltException("", 65, 2, input);
 
                     throw nvae;
                 }
@@ -7023,59 +7819,59 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 57, 0, input);
+                    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
-            switch (alt57) {
+            switch (alt65) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:874: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:980: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_not2567);
-                    lhs_or151=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3184);
+                    lhs_or179=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or151.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or179.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:875:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN152=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2574); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN152);
+                    LEFT_PAREN180=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3191); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN180);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN152, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN180, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2583);
-                    lhs_or153=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3200);
+                    lhs_or181=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or153.getTree());
-                    RIGHT_PAREN154=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2589); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN154);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or181.getTree());
+                    RIGHT_PAREN182=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3206); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN182);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN154, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN182, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:878:6: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2599);
-                    lhs_pattern155=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3216);
+                    lhs_pattern183=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern155.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern183.getTree());
 
                     }
                     break;
@@ -7085,7 +7881,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_pattern, lhs_or, RIGHT_PAREN, not_key
+            // elements: not_key, lhs_pattern, lhs_or, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7095,26 +7891,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 879:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 985:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:879: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:985: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:879:23: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:879:31: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:879:44: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7155,7 +7951,7 @@
     };
 
     // $ANTLR start "lhs_eval"
-    // src/main/resources/org/drools/lang/DRL.g:882: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:988: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);
@@ -7167,13 +7963,13 @@
         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");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:883:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:883:4: ev= eval_key pc= paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989: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:989:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2638);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval3255);
             ev=eval_key();
 
             state._fsp--;
@@ -7182,7 +7978,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2647);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3264);
             pc=paren_chunk();
 
             state._fsp--;
@@ -7201,7 +7997,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, eval_key
+            // elements: eval_key, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7211,9 +8007,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 892:3: -> ^( eval_key paren_chunk )
+            // 998:3: -> ^( eval_key paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:892:6: ^( eval_key paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -7254,88 +8050,88 @@
     };
 
     // $ANTLR start "lhs_forall"
-    // src/main/resources/org/drools/lang/DRL.g:895: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:1001: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_PAREN157=null;
-        Token RIGHT_PAREN159=null;
-        DRLParser.forall_key_return forall_key156 = null;
+        Token LEFT_PAREN185=null;
+        Token RIGHT_PAREN187=null;
+        DRLParser.forall_key_return forall_key184 = null;
 
-        DRLParser.pattern_source_return pattern_source158 = null;
+        DRLParser.pattern_source_return pattern_source186 = null;
 
 
-        Object LEFT_PAREN157_tree=null;
-        Object RIGHT_PAREN159_tree=null;
+        Object LEFT_PAREN185_tree=null;
+        Object RIGHT_PAREN187_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 {
-            // src/main/resources/org/drools/lang/DRL.g:896:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:896: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:1002: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:1002:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2674);
-            forall_key156=forall_key();
+            pushFollow(FOLLOW_forall_key_in_lhs_forall3291);
+            forall_key184=forall_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_forall_key.add(forall_key156.getTree());
-            LEFT_PAREN157=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2679); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN157);
+            if ( state.backtracking==0 ) stream_forall_key.add(forall_key184.getTree());
+            LEFT_PAREN185=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3296); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN185);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN157, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN185, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:898:4: ( pattern_source )+
-            int cnt58=0;
-            loop58:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:4: ( pattern_source )+
+            int cnt66=0;
+            loop66:
             do {
-                int alt58=2;
-                int LA58_0 = input.LA(1);
+                int alt66=2;
+                int LA66_0 = input.LA(1);
 
-                if ( (LA58_0==ID) ) {
-                    alt58=1;
+                if ( (LA66_0==ID) ) {
+                    alt66=1;
                 }
 
 
-                switch (alt58) {
+                switch (alt66) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:898:4: pattern_source
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:4: pattern_source
             	    {
-            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall2687);
-            	    pattern_source158=pattern_source();
+            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3304);
+            	    pattern_source186=pattern_source();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source158.getTree());
+            	    if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source186.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt58 >= 1 ) break loop58;
+            	    if ( cnt66 >= 1 ) break loop66;
             	    if (state.backtracking>0) {state.failed=true; return retval;}
                         EarlyExitException eee =
-                            new EarlyExitException(58, input);
+                            new EarlyExitException(66, input);
                         throw eee;
                 }
-                cnt58++;
+                cnt66++;
             } while (true);
 
-            RIGHT_PAREN159=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2693); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN159);
+            RIGHT_PAREN187=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3310); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN187);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN159, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN187, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: forall_key, RIGHT_PAREN, pattern_source
+            // elements: RIGHT_PAREN, pattern_source, forall_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7345,9 +8141,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 900:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+            // 1006:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:900:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7390,118 +8186,319 @@
     }
     // $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:1011: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_PAREN189=null;
+        Token RIGHT_PAREN193=null;
+        DRLParser.lhs_or_return s = null;
+
+        DRLParser.lhs_or_return w = null;
+
+        DRLParser.forany_key_return forany_key188 = null;
+
+        DRLParser.lhs_or_return lhs_or190 = null;
+
+        DRLParser.subject_key_return subject_key191 = null;
+
+        DRLParser.weight_key_return weight_key192 = null;
+
+
+        Object LEFT_PAREN189_tree=null;
+        Object RIGHT_PAREN193_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:1012: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:1012: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_forany3341);
+            forany_key188=forany_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_forany_key.add(forany_key188.getTree());
+            LEFT_PAREN189=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3348); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN189);
+
+            if ( state.backtracking==0 ) {
+                emit(LEFT_PAREN189, DroolsEditorType.SYMBOL); 
+            }
+            pushFollow(FOLLOW_lhs_or_in_lhs_forany3359);
+            lhs_or190=lhs_or();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or190.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015: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:1016: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:1016:7: ( subject_key s= lhs_or )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))||((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))))) {
+                int LA67_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
+                    alt67=1;
+                }
+            }
+            switch (alt67) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:8: subject_key s= lhs_or
+                    {
+                    pushFollow(FOLLOW_subject_key_in_lhs_forany3378);
+                    subject_key191=subject_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_subject_key.add(subject_key191.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3382);
+                    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:1017:7: ( weight_key w= lhs_or )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WEIGHT))))) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:8: weight_key w= lhs_or
+                    {
+                    pushFollow(FOLLOW_weight_key_in_lhs_forany3393);
+                    weight_key192=weight_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_weight_key.add(weight_key192.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3397);
+                    w=lhs_or();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_or.add(w.getTree());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            RIGHT_PAREN193=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3413); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN193);
+
+            if ( state.backtracking==0 ) {
+               emit(RIGHT_PAREN193, DroolsEditorType.SYMBOL);  
+            }
+
+
+            // AST REWRITE
+            // elements: forany_key, w, lhs_or, RIGHT_PAREN, weight_key, subject_key, s
+            // 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();
+            // 1020: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:1020: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:1020: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());
+
+                }
+                stream_subject_key.reset();
+                stream_s.reset();
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020: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());
+
+                }
+                stream_w.reset();
+                stream_weight_key.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"
-    // src/main/resources/org/drools/lang/DRL.g:903: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:1024: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 FROM162=null;
-        DRLParser.lhs_pattern_return lhs_pattern160 = null;
+        Token FROM196=null;
+        DRLParser.lhs_pattern_return lhs_pattern194 = null;
 
-        DRLParser.over_clause_return over_clause161 = null;
+        DRLParser.over_clause_return over_clause195 = null;
 
-        DRLParser.accumulate_statement_return accumulate_statement163 = null;
+        DRLParser.accumulate_statement_return accumulate_statement197 = null;
 
-        DRLParser.collect_statement_return collect_statement164 = null;
+        DRLParser.collect_statement_return collect_statement198 = null;
 
-        DRLParser.entrypoint_statement_return entrypoint_statement165 = null;
+        DRLParser.entrypoint_statement_return entrypoint_statement199 = null;
 
-        DRLParser.from_source_return from_source166 = null;
+        DRLParser.from_source_return from_source200 = null;
 
 
-        Object FROM162_tree=null;
+        Object FROM196_tree=null;
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:906:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // src/main/resources/org/drools/lang/DRL.g:906: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:1027: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:1028: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_source2729);
-            lhs_pattern160=lhs_pattern();
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3474);
+            lhs_pattern194=lhs_pattern();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern160.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:907:3: ( over_clause )?
-            int alt59=2;
-            int LA59_0 = input.LA(1);
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern194.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:3: ( over_clause )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
 
-            if ( (LA59_0==OVER) ) {
-                alt59=1;
+            if ( (LA69_0==OVER) ) {
+                alt69=1;
             }
-            switch (alt59) {
+            switch (alt69) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:907:3: over_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2733);
-                    over_clause161=over_clause();
+                    pushFollow(FOLLOW_over_clause_in_pattern_source3478);
+                    over_clause195=over_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause161.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause195.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:908:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
 
-            if ( (LA61_0==FROM) ) {
-                alt61=1;
+            if ( (LA71_0==FROM) ) {
+                alt71=1;
             }
-            switch (alt61) {
+            switch (alt71) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:909: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:1031:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM162=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2743); if (state.failed) return retval;
+                    FROM196=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3488); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FROM162_tree = (Object)adaptor.create(FROM162);
-                    root_0 = (Object)adaptor.becomeRoot(FROM162_tree, root_0);
+                    FROM196_tree = (Object)adaptor.create(FROM196);
+                    root_0 = (Object)adaptor.becomeRoot(FROM196_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FROM162, DroolsEditorType.KEYWORD);
+                      	emit(FROM196, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:912:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
-                    int alt60=4;
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    int alt70=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
                         {
-                        alt60=1;
+                        alt70=1;
                         }
                         break;
                     case COLLECT:
                         {
-                        alt60=2;
+                        alt70=2;
                         }
                         break;
                     case ID:
                         {
-                        int LA60_3 = input.LA(2);
+                        int LA70_3 = input.LA(2);
 
-                        if ( (LA60_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
-                            alt60=3;
+                        if ( (LA70_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
+                            alt70=3;
                         }
-                        else if ( ((LA60_3>=SEMICOLON && LA60_3<=DOT)||(LA60_3>=LEFT_PAREN && LA60_3<=RIGHT_PAREN)||(LA60_3>=DOUBLE_PIPE && LA60_3<=DOUBLE_AMPER)||LA60_3==THEN) ) {
-                            alt60=4;
+                        else if ( ((LA70_3>=SEMICOLON && LA70_3<=DOT)||(LA70_3>=LEFT_PAREN && LA70_3<=RIGHT_PAREN)||(LA70_3>=DOUBLE_PIPE && LA70_3<=DOUBLE_AMPER)||LA70_3==THEN) ) {
+                            alt70=4;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 60, 3, input);
+                                new NoViableAltException("", 70, 3, input);
 
                             throw nvae;
                         }
@@ -7510,57 +8507,57 @@
                     default:
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 60, 0, input);
+                            new NoViableAltException("", 70, 0, input);
 
                         throw nvae;
                     }
 
-                    switch (alt60) {
+                    switch (alt70) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:912:14: accumulate_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2763);
-                            accumulate_statement163=accumulate_statement();
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3508);
+                            accumulate_statement197=accumulate_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement163.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement197.getTree());
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:913:15: collect_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2779);
-                            collect_statement164=collect_statement();
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source3524);
+                            collect_statement198=collect_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement164.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement198.getTree());
 
                             }
                             break;
                         case 3 :
-                            // src/main/resources/org/drools/lang/DRL.g:914:15: entrypoint_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2796);
-                            entrypoint_statement165=entrypoint_statement();
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3541);
+                            entrypoint_statement199=entrypoint_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement165.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement199.getTree());
 
                             }
                             break;
                         case 4 :
-                            // src/main/resources/org/drools/lang/DRL.g:915:15: from_source
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1037:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2812);
-                            from_source166=from_source();
+                            pushFollow(FOLLOW_from_source_in_pattern_source3557);
+                            from_source200=from_source();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source166.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source200.getTree());
 
                             }
                             break;
@@ -7618,57 +8615,57 @@
     };
 
     // $ANTLR start "over_clause"
-    // src/main/resources/org/drools/lang/DRL.g:933: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:1055: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 OVER167=null;
-        Token COMMA169=null;
-        DRLParser.over_elements_return over_elements168 = null;
+        Token OVER201=null;
+        Token COMMA203=null;
+        DRLParser.over_elements_return over_elements202 = null;
 
-        DRLParser.over_elements_return over_elements170 = null;
+        DRLParser.over_elements_return over_elements204 = null;
 
 
-        Object OVER167_tree=null;
-        Object COMMA169_tree=null;
+        Object OVER201_tree=null;
+        Object COMMA203_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:934:2: ( OVER over_elements ( COMMA over_elements )* )
-            // src/main/resources/org/drools/lang/DRL.g:934:4: OVER over_elements ( COMMA over_elements )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER167=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2844); if (state.failed) return retval;
+            OVER201=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3589); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            OVER167_tree = (Object)adaptor.create(OVER167);
-            root_0 = (Object)adaptor.becomeRoot(OVER167_tree, root_0);
+            OVER201_tree = (Object)adaptor.create(OVER201);
+            root_0 = (Object)adaptor.becomeRoot(OVER201_tree, root_0);
             }
             if ( state.backtracking==0 ) {
-              	emit(OVER167, DroolsEditorType.KEYWORD);	
+              	emit(OVER201, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2849);
-            over_elements168=over_elements();
+            pushFollow(FOLLOW_over_elements_in_over_clause3594);
+            over_elements202=over_elements();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements168.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:935:4: ( COMMA over_elements )*
-            loop62:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements202.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:4: ( COMMA over_elements )*
+            loop72:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt72=2;
+                int LA72_0 = input.LA(1);
 
-                if ( (LA62_0==COMMA) ) {
-                    int LA62_2 = input.LA(2);
+                if ( (LA72_0==COMMA) ) {
+                    int LA72_2 = input.LA(2);
 
-                    if ( (LA62_2==ID) ) {
-                        int LA62_3 = input.LA(3);
+                    if ( (LA72_2==ID) ) {
+                        int LA72_3 = input.LA(3);
 
-                        if ( (LA62_3==COLON) ) {
-                            alt62=1;
+                        if ( (LA72_3==COLON) ) {
+                            alt72=1;
                         }
 
 
@@ -7678,26 +8675,26 @@
                 }
 
 
-                switch (alt62) {
+                switch (alt72) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:935:5: COMMA over_elements
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:5: COMMA over_elements
             	    {
-            	    COMMA169=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2856); if (state.failed) return retval;
+            	    COMMA203=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3601); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA169, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA203, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2861);
-            	    over_elements170=over_elements();
+            	    pushFollow(FOLLOW_over_elements_in_over_clause3606);
+            	    over_elements204=over_elements();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements170.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements204.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop72;
                 }
             } while (true);
 
@@ -7730,7 +8727,7 @@
     };
 
     // $ANTLR start "over_elements"
-    // src/main/resources/org/drools/lang/DRL.g:938: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:1060: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);
@@ -7739,62 +8736,62 @@
 
         Token id1=null;
         Token id2=null;
-        Token COLON171=null;
-        DRLParser.paren_chunk_return paren_chunk172 = null;
+        Token COLON205=null;
+        DRLParser.paren_chunk_return paren_chunk206 = null;
 
 
         Object id1_tree=null;
         Object id2_tree=null;
-        Object COLON171_tree=null;
+        Object COLON205_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 {
-            // src/main/resources/org/drools/lang/DRL.g:939:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:939:4: id1= ID COLON id2= ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061: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:1061:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2876); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3621); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
             if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON171=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2883); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON171);
+            COLON205=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3628); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON205);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON171, DroolsEditorType.SYMBOL);	
+              	emit(COLON205, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2892); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3637); 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_elements2899);
-            paren_chunk172=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_over_elements3644);
+            paren_chunk206=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk172.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk206.getTree());
 
 
             // AST REWRITE
-            // elements: id2, id1, paren_chunk
-            // token labels: id1, id2
+            // elements: id2, paren_chunk, 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);
-            RewriteRuleTokenStream stream_id2=new RewriteRuleTokenStream(adaptor,"token id2",id2);
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 943:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 1065:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:943:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065: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);
@@ -7837,73 +8834,73 @@
     };
 
     // $ANTLR start "accumulate_statement"
-    // src/main/resources/org/drools/lang/DRL.g:946: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:1068: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 ACCUMULATE173=null;
-        Token LEFT_PAREN174=null;
-        Token COMMA176=null;
-        Token RIGHT_PAREN179=null;
-        DRLParser.lhs_or_return lhs_or175 = null;
+        Token ACCUMULATE207=null;
+        Token LEFT_PAREN208=null;
+        Token COMMA210=null;
+        Token RIGHT_PAREN213=null;
+        DRLParser.lhs_or_return lhs_or209 = null;
 
-        DRLParser.accumulate_init_clause_return accumulate_init_clause177 = null;
+        DRLParser.accumulate_init_clause_return accumulate_init_clause211 = null;
 
-        DRLParser.accumulate_id_clause_return accumulate_id_clause178 = null;
+        DRLParser.accumulate_id_clause_return accumulate_id_clause212 = null;
 
 
-        Object ACCUMULATE173_tree=null;
-        Object LEFT_PAREN174_tree=null;
-        Object COMMA176_tree=null;
-        Object RIGHT_PAREN179_tree=null;
-        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+        Object ACCUMULATE207_tree=null;
+        Object LEFT_PAREN208_tree=null;
+        Object COMMA210_tree=null;
+        Object RIGHT_PAREN213_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");
-        RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
+        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 {
-            // src/main/resources/org/drools/lang/DRL.g:947: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 ) )
-            // src/main/resources/org/drools/lang/DRL.g:947: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:1069: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:1069:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE173=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2925); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE173);
+            ACCUMULATE207=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3670); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE207);
 
             if ( state.backtracking==0 ) {
-              	emit(ACCUMULATE173, DroolsEditorType.KEYWORD);	
+              	emit(ACCUMULATE207, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN174=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2934); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN174);
+            LEFT_PAREN208=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3679); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN208);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN174, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN208, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2942);
-            lhs_or175=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3687);
+            lhs_or209=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or175.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:951:3: ( COMMA )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or209.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:3: ( COMMA )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
 
-            if ( (LA63_0==COMMA) ) {
-                alt63=1;
+            if ( (LA73_0==COMMA) ) {
+                alt73=1;
             }
-            switch (alt63) {
+            switch (alt73) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:951:3: COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:3: COMMA
                     {
-                    COMMA176=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2947); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA176);
+                    COMMA210=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3692); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA210);
 
 
                     }
@@ -7912,25 +8909,25 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(COMMA176, DroolsEditorType.SYMBOL);	
+              	emit(COMMA210, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:952:3: ( accumulate_init_clause | accumulate_id_clause )
-            int alt64=2;
-            int LA64_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:3: ( accumulate_init_clause | accumulate_id_clause )
+            int alt74=2;
+            int LA74_0 = input.LA(1);
 
-            if ( (LA64_0==ID) ) {
-                int LA64_1 = input.LA(2);
+            if ( (LA74_0==ID) ) {
+                int LA74_1 = input.LA(2);
 
                 if ( (((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
-                    alt64=1;
+                    alt74=1;
                 }
                 else if ( (true) ) {
-                    alt64=2;
+                    alt74=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 64, 1, input);
+                        new NoViableAltException("", 74, 1, input);
 
                     throw nvae;
                 }
@@ -7938,43 +8935,43 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 64, 0, input);
+                    new NoViableAltException("", 74, 0, input);
 
                 throw nvae;
             }
-            switch (alt64) {
+            switch (alt74) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:952:5: accumulate_init_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2957);
-                    accumulate_init_clause177=accumulate_init_clause();
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3702);
+                    accumulate_init_clause211=accumulate_init_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause177.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause211.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:953:5: accumulate_id_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2963);
-                    accumulate_id_clause178=accumulate_id_clause();
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3708);
+                    accumulate_id_clause212=accumulate_id_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause178.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause212.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN179=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2971); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN179);
+            RIGHT_PAREN213=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3716); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN213);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN179, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN213, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -7982,7 +8979,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_or, accumulate_id_clause, ACCUMULATE, RIGHT_PAREN, accumulate_init_clause
+            // elements: RIGHT_PAREN, ACCUMULATE, accumulate_id_clause, lhs_or, accumulate_init_clause
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7992,21 +8989,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 957:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 1079:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:957: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:1079: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());
-                // src/main/resources/org/drools/lang/DRL.g:957:26: ( accumulate_init_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // src/main/resources/org/drools/lang/DRL.g:957:50: ( accumulate_id_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
@@ -8048,7 +9045,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // src/main/resources/org/drools/lang/DRL.g:961: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:1083: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);
@@ -8068,54 +9065,54 @@
 
         DRLParser.accumulate_paren_chunk_return pc4 = null;
 
-        DRLParser.init_key_return init_key180 = null;
+        DRLParser.init_key_return init_key214 = null;
 
-        DRLParser.action_key_return action_key181 = null;
+        DRLParser.action_key_return action_key215 = null;
 
-        DRLParser.reverse_key_return reverse_key182 = null;
+        DRLParser.reverse_key_return reverse_key216 = 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");
-        RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:964: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) ) )
-            // src/main/resources/org/drools/lang/DRL.g:964: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:1086: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:1086: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_clause3017);
-            init_key180=init_key();
+            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3762);
+            init_key214=init_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_init_key.add(init_key180.getTree());
+            if ( state.backtracking==0 ) stream_init_key.add(init_key214.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3027);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3772);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:966:84: (cm1= COMMA )?
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:84: (cm1= COMMA )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
 
-            if ( (LA65_0==COMMA) ) {
-                alt65=1;
+            if ( (LA75_0==COMMA) ) {
+                alt75=1;
             }
-            switch (alt65) {
+            switch (alt75) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:966:84: cm1= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:84: cm1= COMMA
                     {
-                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3032); if (state.failed) return retval; 
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3777); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -8130,30 +9127,30 @@
             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_clause3043);
-            action_key181=action_key();
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3788);
+            action_key215=action_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_action_key.add(action_key181.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3047);
+            if ( state.backtracking==0 ) stream_action_key.add(action_key215.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:968:97: (cm2= COMMA )?
-            int alt66=2;
-            int LA66_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:97: (cm2= COMMA )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
 
-            if ( (LA66_0==COMMA) ) {
-                alt66=1;
+            if ( (LA76_0==COMMA) ) {
+                alt76=1;
             }
-            switch (alt66) {
+            switch (alt76) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:968:97: cm2= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:97: cm2= COMMA
                     {
-                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3052); if (state.failed) return retval; 
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3797); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -8168,45 +9165,45 @@
             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);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:970:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
-            int alt68=2;
-            int LA68_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
 
-            if ( (LA68_0==ID) ) {
-                int LA68_1 = input.LA(2);
+            if ( (LA78_0==ID) ) {
+                int LA78_1 = input.LA(2);
 
                 if ( (((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
-                    alt68=1;
+                    alt78=1;
                 }
             }
-            switch (alt68) {
+            switch (alt78) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:970: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:1092:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3064);
-                    reverse_key182=reverse_key();
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3809);
+                    reverse_key216=reverse_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key182.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3068);
+                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key216.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3813);
                     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());
-                    // src/main/resources/org/drools/lang/DRL.g:970:100: (cm3= COMMA )?
-                    int alt67=2;
-                    int LA67_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:100: (cm3= COMMA )?
+                    int alt77=2;
+                    int LA77_0 = input.LA(1);
 
-                    if ( (LA67_0==COMMA) ) {
-                        alt67=1;
+                    if ( (LA77_0==COMMA) ) {
+                        alt77=1;
                     }
-                    switch (alt67) {
+                    switch (alt77) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:970:100: cm3= COMMA
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:100: cm3= COMMA
                             {
-                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3073); if (state.failed) return retval; 
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3818); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -8232,7 +9229,7 @@
               		}	
               	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3089);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3834);
             res1=result_key();
 
             state._fsp--;
@@ -8241,7 +9238,7 @@
             if ( state.backtracking==0 ) {
               	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3095);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3840);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
 
             state._fsp--;
@@ -8250,28 +9247,28 @@
 
 
             // AST REWRITE
-            // elements: pc1, action_key, result_key, reverse_key, pc4, pc2, init_key, pc3
+            // elements: action_key, result_key, pc2, pc4, pc3, pc1, reverse_key, init_key
             // token labels: 
-            // rule labels: pc2, pc3, pc4, pc1, retval
+            // rule labels: pc4, pc3, retval, pc1, pc2
             // token list labels: 
             // rule list labels: 
             if ( state.backtracking==0 ) {
             retval.tree = root_0;
-            RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
+            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_pc4=new RewriteRuleSubtreeStream(adaptor,"token pc4",pc4!=null?pc4.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_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 979:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 1101:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:979: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:1101: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:979:33: ^( init_key $pc1)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:33: ^( init_key $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_init_key.nextNode(), root_2);
@@ -8280,7 +9277,7 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:979:50: ^( action_key $pc2)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:50: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -8289,9 +9286,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:979:69: ( ^( reverse_key $pc3) )?
-                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:979:69: ^( reverse_key $pc3)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101: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:1101:69: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -8302,9 +9299,9 @@
                     }
 
                 }
+                stream_pc3.reset();
                 stream_reverse_key.reset();
-                stream_pc3.reset();
-                // src/main/resources/org/drools/lang/DRL.g:979:90: ^( result_key $pc4)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:90: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -8361,7 +9358,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:992: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:1114: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);
@@ -8376,10 +9373,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:995:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:995:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117: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:1117:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3153);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3898);
             pc=accumulate_paren_chunk_data(false, locationType);
 
             state._fsp--;
@@ -8401,7 +9398,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 996:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1118:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -8436,7 +9433,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:999: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:1121: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);
@@ -8446,7 +9443,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data183 = null;
+        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data217 = null;
 
 
         Object lp1_tree=null;
@@ -8454,12 +9451,12 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1000:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1000: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:1122: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:1122: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_data3177); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3922); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -8473,23 +9470,23 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1008:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
-            loop69:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            loop79:
             do {
-                int alt69=3;
-                int LA69_0 = input.LA(1);
+                int alt79=3;
+                int LA79_0 = input.LA(1);
 
-                if ( ((LA69_0>=VT_COMPILATION_UNIT && LA69_0<=STRING)||LA69_0==COMMA||(LA69_0>=AT && LA69_0<=MULTI_LINE_COMMENT)) ) {
-                    alt69=1;
+                if ( ((LA79_0>=VT_COMPILATION_UNIT && LA79_0<=STRING)||LA79_0==COMMA||(LA79_0>=AT && LA79_0<=MULTI_LINE_COMMENT)) ) {
+                    alt79=1;
                 }
-                else if ( (LA69_0==LEFT_PAREN) ) {
-                    alt69=2;
+                else if ( (LA79_0==LEFT_PAREN) ) {
+                    alt79=2;
                 }
 
 
-                switch (alt69) {
+                switch (alt79) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1008:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130: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) ) {
@@ -8510,24 +9507,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1008:87: accumulate_paren_chunk_data[true,-1]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3205);
-            	    accumulate_paren_chunk_data183=accumulate_paren_chunk_data(true, -1);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3950);
+            	    accumulate_paren_chunk_data217=accumulate_paren_chunk_data(true, -1);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data183.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data217.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop69;
+            	    break loop79;
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3216); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3961); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -8569,40 +9566,40 @@
     };
 
     // $ANTLR start "accumulate_id_clause"
-    // src/main/resources/org/drools/lang/DRL.g:1018: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:1140: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 ID184=null;
-        DRLParser.paren_chunk_return paren_chunk185 = null;
+        Token ID218=null;
+        DRLParser.paren_chunk_return paren_chunk219 = null;
 
 
-        Object ID184_tree=null;
+        Object ID218_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1019:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1019:4: ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141: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:1141:4: ID paren_chunk
             {
-            ID184=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3232); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID184);
+            ID218=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3977); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID218);
 
             if ( state.backtracking==0 ) {
-              	emit(ID184, DroolsEditorType.IDENTIFIER);	
+              	emit(ID218, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3238);
-            paren_chunk185=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3983);
+            paren_chunk219=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk185.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk219.getTree());
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID
+            // elements: ID, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8612,9 +9609,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1021:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1143:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1021:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1143: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);
@@ -8656,56 +9653,56 @@
     };
 
     // $ANTLR start "collect_statement"
-    // src/main/resources/org/drools/lang/DRL.g:1024: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:1146: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 COLLECT186=null;
-        Token LEFT_PAREN187=null;
-        Token RIGHT_PAREN189=null;
-        DRLParser.pattern_source_return pattern_source188 = null;
+        Token COLLECT220=null;
+        Token LEFT_PAREN221=null;
+        Token RIGHT_PAREN223=null;
+        DRLParser.pattern_source_return pattern_source222 = null;
 
 
-        Object COLLECT186_tree=null;
-        Object LEFT_PAREN187_tree=null;
-        Object RIGHT_PAREN189_tree=null;
+        Object COLLECT220_tree=null;
+        Object LEFT_PAREN221_tree=null;
+        Object RIGHT_PAREN223_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 {
-            // src/main/resources/org/drools/lang/DRL.g:1025:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1025:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147: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:1147:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT186=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3260); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT186);
+            COLLECT220=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement4005); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT220);
 
             if ( state.backtracking==0 ) {
-              	emit(COLLECT186, DroolsEditorType.KEYWORD);	
+              	emit(COLLECT220, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN187=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3269); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN187);
+            LEFT_PAREN221=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement4014); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN221);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN187, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN221, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3276);
-            pattern_source188=pattern_source();
+            pushFollow(FOLLOW_pattern_source_in_collect_statement4021);
+            pattern_source222=pattern_source();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source188.getTree());
-            RIGHT_PAREN189=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3281); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN189);
+            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source222.getTree());
+            RIGHT_PAREN223=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement4026); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN223);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN189, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN223, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -8723,9 +9720,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1031:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1153:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1031:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
@@ -8767,39 +9764,39 @@
     };
 
     // $ANTLR start "entrypoint_statement"
-    // src/main/resources/org/drools/lang/DRL.g:1034: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:1156: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_key190 = null;
+        DRLParser.entry_point_key_return entry_point_key224 = null;
 
-        DRLParser.entrypoint_id_return entrypoint_id191 = null;
+        DRLParser.entrypoint_id_return entrypoint_id225 = null;
 
 
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1035:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:1035:4: entry_point_key entrypoint_id
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157: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:1157:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3308);
-            entry_point_key190=entry_point_key();
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4053);
+            entry_point_key224=entry_point_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key190.getTree());
+            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key224.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3316);
-            entrypoint_id191=entrypoint_id();
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4061);
+            entrypoint_id225=entrypoint_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id191.getTree());
+            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id225.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
@@ -8816,9 +9813,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1039:2: -> ^( entry_point_key entrypoint_id )
+            // 1161:2: -> ^( entry_point_key entrypoint_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1039:5: ^( entry_point_key entrypoint_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -8859,7 +9856,7 @@
     };
 
     // $ANTLR start "entrypoint_id"
-    // src/main/resources/org/drools/lang/DRL.g:1042: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:1164: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);
@@ -8869,32 +9866,32 @@
         Token value=null;
 
         Object value_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1043:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
-            int alt70=2;
-            int LA70_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            int alt80=2;
+            int LA80_0 = input.LA(1);
 
-            if ( (LA70_0==ID) ) {
-                alt70=1;
+            if ( (LA80_0==ID) ) {
+                alt80=1;
             }
-            else if ( (LA70_0==STRING) ) {
-                alt70=2;
+            else if ( (LA80_0==STRING) ) {
+                alt80=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 70, 0, input);
+                    new NoViableAltException("", 80, 0, input);
 
                 throw nvae;
             }
-            switch (alt70) {
+            switch (alt80) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1043:5: value= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:5: value= ID
                     {
-                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3342); if (state.failed) return retval; 
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4087); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8913,7 +9910,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1044:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1166:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8923,9 +9920,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1045:5: value= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:5: value= STRING
                     {
-                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3359); if (state.failed) return retval; 
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4104); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8944,7 +9941,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1046:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1168:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8981,41 +9978,41 @@
     };
 
     // $ANTLR start "from_source"
-    // src/main/resources/org/drools/lang/DRL.g:1049: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:1171: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 ID192=null;
+        Token ID226=null;
         DRLParser.paren_chunk_return args = null;
 
-        DRLParser.expression_chain_return expression_chain193 = null;
+        DRLParser.expression_chain_return expression_chain227 = null;
 
 
-        Object ID192_tree=null;
+        Object ID226_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");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1050:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1050: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:1172: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:1172:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID192=(Token)match(input,ID,FOLLOW_ID_in_from_source3379); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID192);
+            ID226=(Token)match(input,ID,FOLLOW_ID_in_from_source4124); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID226);
 
             if ( state.backtracking==0 ) {
-              	emit(ID192, DroolsEditorType.IDENTIFIER);	
+              	emit(ID226, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1051:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
-            int alt71=2;
-            alt71 = dfa71.predict(input);
-            switch (alt71) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            int alt81=2;
+            alt81 = dfa81.predict(input);
+            switch (alt81) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1051:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3394);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source4139);
                     args=paren_chunk();
 
                     state._fsp--;
@@ -9027,23 +10024,23 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1052:3: ( expression_chain )?
-            int alt72=2;
-            int LA72_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:3: ( expression_chain )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( (LA72_0==DOT) ) {
-                alt72=1;
+            if ( (LA82_0==DOT) ) {
+                alt82=1;
             }
-            switch (alt72) {
+            switch (alt82) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1052:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3401);
-                    expression_chain193=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_from_source4146);
+                    expression_chain227=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain193.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain227.getTree());
 
                     }
                     break;
@@ -9060,7 +10057,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID, expression_chain
+            // elements: ID, paren_chunk, expression_chain
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9070,21 +10067,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1058:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1180:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1058: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:1180: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());
-                // src/main/resources/org/drools/lang/DRL.g:1058:25: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1058:38: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9125,97 +10122,97 @@
     };
 
     // $ANTLR start "expression_chain"
-    // src/main/resources/org/drools/lang/DRL.g:1061: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:1183: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 DOT194=null;
-        Token ID195=null;
-        DRLParser.paren_chunk_return paren_chunk196 = null;
+        Token DOT228=null;
+        Token ID229=null;
+        DRLParser.paren_chunk_return paren_chunk230 = null;
 
-        DRLParser.square_chunk_return square_chunk197 = null;
+        DRLParser.square_chunk_return square_chunk231 = null;
 
-        DRLParser.expression_chain_return expression_chain198 = null;
+        DRLParser.expression_chain_return expression_chain232 = null;
 
 
-        Object DOT194_tree=null;
-        Object ID195_tree=null;
+        Object DOT228_tree=null;
+        Object ID229_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");
-        RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1062:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1063: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:1184: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:1185:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT194=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3434); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_DOT.add(DOT194);
+            DOT228=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4179); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_DOT.add(DOT228);
 
             if ( state.backtracking==0 ) {
-              	emit(DOT194, DroolsEditorType.IDENTIFIER);	
+              	emit(DOT228, DroolsEditorType.IDENTIFIER);	
             }
-            ID195=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3441); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID195);
+            ID229=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4186); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID229);
 
             if ( state.backtracking==0 ) {
-              	emit(ID195, DroolsEditorType.IDENTIFIER);	
+              	emit(ID229, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1065:4: ({...}? paren_chunk | square_chunk )?
-            int alt73=3;
-            alt73 = dfa73.predict(input);
-            switch (alt73) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: ({...}? paren_chunk | square_chunk )?
+            int alt83=3;
+            alt83 = dfa83.predict(input);
+            switch (alt83) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1066:6: {...}? paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188: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_chain3457);
-                    paren_chunk196=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4202);
+                    paren_chunk230=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk196.getTree());
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk230.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1068:6: square_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1190:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3471);
-                    square_chunk197=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain4216);
+                    square_chunk231=square_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk197.getTree());
+                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk231.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1070:4: ( expression_chain )?
-            int alt74=2;
-            int LA74_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:4: ( expression_chain )?
+            int alt84=2;
+            int LA84_0 = input.LA(1);
 
-            if ( (LA74_0==DOT) ) {
-                alt74=1;
+            if ( (LA84_0==DOT) ) {
+                alt84=1;
             }
-            switch (alt74) {
+            switch (alt84) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1070:4: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3482);
-                    expression_chain198=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain4227);
+                    expression_chain232=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain198.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain232.getTree());
 
                     }
                     break;
@@ -9225,7 +10222,7 @@
 
 
             // AST REWRITE
-            // elements: expression_chain, ID, square_chunk, paren_chunk
+            // elements: paren_chunk, ID, expression_chain, square_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9235,27 +10232,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1071:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1193:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1071: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:1193: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, DOT194), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT228), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // src/main/resources/org/drools/lang/DRL.g:1071:38: ( square_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1071:52: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1071:65: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9296,38 +10293,38 @@
     };
 
     // $ANTLR start "lhs_pattern"
-    // src/main/resources/org/drools/lang/DRL.g:1074: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:1197: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);
 
         Object root_0 = null;
 
-        DRLParser.fact_binding_return fact_binding199 = null;
+        DRLParser.fact_binding_return fact_binding233 = null;
 
-        DRLParser.fact_return fact200 = null;
+        DRLParser.fact_return fact234 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1075:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            int alt85=2;
+            int LA85_0 = input.LA(1);
 
-            if ( (LA75_0==ID) ) {
-                int LA75_1 = input.LA(2);
+            if ( (LA85_0==ID) ) {
+                int LA85_1 = input.LA(2);
 
-                if ( (LA75_1==DOT||LA75_1==LEFT_PAREN||LA75_1==LEFT_SQUARE) ) {
-                    alt75=2;
+                if ( (LA85_1==COLON) ) {
+                    alt85=1;
                 }
-                else if ( (LA75_1==COLON) ) {
-                    alt75=1;
+                else if ( (LA85_1==DOT||LA85_1==LEFT_PAREN||LA85_1==LEFT_SQUARE) ) {
+                    alt85=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 75, 1, input);
+                        new NoViableAltException("", 85, 1, input);
 
                     throw nvae;
                 }
@@ -9335,20 +10332,20 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 75, 0, input);
+                    new NoViableAltException("", 85, 0, input);
 
                 throw nvae;
             }
-            switch (alt75) {
+            switch (alt85) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1075:4: fact_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:5: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3515);
-                    fact_binding199=fact_binding();
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4263);
+                    fact_binding233=fact_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding199.getTree());
+                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding233.getTree());
 
 
                     // AST REWRITE
@@ -9362,9 +10359,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1075:17: -> ^( VT_PATTERN fact_binding )
+                    // 1198:18: -> ^( VT_PATTERN fact_binding )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1075:20: ^( VT_PATTERN fact_binding )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198: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);
@@ -9380,14 +10377,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1076:4: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3528);
-                    fact200=fact();
+                    pushFollow(FOLLOW_fact_in_lhs_pattern4278);
+                    fact234=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact200.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact234.getTree());
 
 
                     // AST REWRITE
@@ -9401,9 +10398,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1076:9: -> ^( VT_PATTERN fact )
+                    // 1199:11: -> ^( VT_PATTERN fact )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1076:12: ^( VT_PATTERN fact )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:14: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9446,89 +10443,89 @@
     };
 
     // $ANTLR start "fact_binding"
-    // src/main/resources/org/drools/lang/DRL.g:1079: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:1204: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_PAREN203=null;
-        Token RIGHT_PAREN205=null;
-        DRLParser.label_return label201 = null;
+        Token LEFT_PAREN237=null;
+        Token RIGHT_PAREN239=null;
+        DRLParser.label_return label235 = null;
 
-        DRLParser.fact_return fact202 = null;
+        DRLParser.fact_return fact236 = null;
 
-        DRLParser.fact_binding_expression_return fact_binding_expression204 = null;
+        DRLParser.fact_binding_expression_return fact_binding_expression238 = null;
 
 
-        Object LEFT_PAREN203_tree=null;
-        Object RIGHT_PAREN205_tree=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");
-        RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
-        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1080:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1080: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:1205: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:1205:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3548);
-            label201=label();
+            pushFollow(FOLLOW_label_in_fact_binding4306);
+            label235=label();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_label.add(label201.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1081:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
-            int alt76=2;
-            int LA76_0 = input.LA(1);
+            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:1206:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( (LA76_0==ID) ) {
-                alt76=1;
+            if ( (LA86_0==ID) ) {
+                alt86=1;
             }
-            else if ( (LA76_0==LEFT_PAREN) ) {
-                alt76=2;
+            else if ( (LA86_0==LEFT_PAREN) ) {
+                alt86=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 76, 0, input);
+                    new NoViableAltException("", 86, 0, input);
 
                 throw nvae;
             }
-            switch (alt76) {
+            switch (alt86) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1081:5: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3554);
-                    fact202=fact();
+                    pushFollow(FOLLOW_fact_in_fact_binding4312);
+                    fact236=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact202.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact236.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1082:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN203=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3561); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN203);
+                    LEFT_PAREN237=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4319); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN237);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN203, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN237, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3569);
-                    fact_binding_expression204=fact_binding_expression();
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4327);
+                    fact_binding_expression238=fact_binding_expression();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression204.getTree());
-                    RIGHT_PAREN205=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3577); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN205);
+                    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_binding4335); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN239);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN205, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN239, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -9539,7 +10536,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, fact_binding_expression, label, fact
+            // elements: fact, RIGHT_PAREN, fact_binding_expression, label
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9549,27 +10546,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1086:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1211:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1086: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:1211: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());
-                // src/main/resources/org/drools/lang/DRL.g:1086:30: ( fact )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1086:36: ( fact_binding_expression )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1086:61: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -9610,7 +10607,7 @@
     };
 
     // $ANTLR start "fact_binding_expression"
-    // src/main/resources/org/drools/lang/DRL.g:1089: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:1214: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);
@@ -9620,31 +10617,31 @@
         Token pipe=null;
         DRLParser.or_key_return value = null;
 
-        DRLParser.fact_return fact206 = null;
+        DRLParser.fact_return fact240 = null;
 
-        DRLParser.fact_return fact207 = 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");
-        RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
 
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1092:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // src/main/resources/org/drools/lang/DRL.g:1092: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:1217: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:1217:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:1092:5: ( fact -> fact )
-            // src/main/resources/org/drools/lang/DRL.g:1092:6: fact
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:5: ( fact -> fact )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3618);
-            fact206=fact();
+            pushFollow(FOLLOW_fact_in_fact_binding_expression4376);
+            fact240=fact();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact.add(fact206.getTree());
+            if ( state.backtracking==0 ) stream_fact.add(fact240.getTree());
 
 
             // AST REWRITE
@@ -9658,7 +10655,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1092:11: -> fact
+            // 1217:11: -> fact
             {
                 adaptor.addChild(root_0, stream_fact.nextTree());
 
@@ -9667,46 +10664,46 @@
             retval.tree = root_0;}
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1092:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
-            loop78:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            loop88:
             do {
-                int alt78=2;
-                int LA78_0 = input.LA(1);
+                int alt88=2;
+                int LA88_0 = input.LA(1);
 
-                if ( (LA78_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-                    alt78=1;
+                if ( (LA88_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    alt88=1;
                 }
-                else if ( (LA78_0==DOUBLE_PIPE) ) {
-                    alt78=1;
+                else if ( (LA88_0==DOUBLE_PIPE) ) {
+                    alt88=1;
                 }
 
 
-                switch (alt78) {
+                switch (alt88) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1092:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:1092:22: (value= or_key | pipe= DOUBLE_PIPE )
-            	    int alt77=2;
-            	    int LA77_0 = input.LA(1);
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    int alt87=2;
+            	    int LA87_0 = input.LA(1);
 
-            	    if ( (LA77_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            	        alt77=1;
+            	    if ( (LA87_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            	        alt87=1;
             	    }
-            	    else if ( (LA77_0==DOUBLE_PIPE) ) {
-            	        alt77=2;
+            	    else if ( (LA87_0==DOUBLE_PIPE) ) {
+            	        alt87=2;
             	    }
             	    else {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 77, 0, input);
+            	            new NoViableAltException("", 87, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt77) {
+            	    switch (alt87) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1092:23: value= or_key
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3630);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4388);
             	            value=or_key();
 
             	            state._fsp--;
@@ -9719,9 +10716,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1092:62: pipe= DOUBLE_PIPE
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3636); if (state.failed) return retval; 
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4394); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( state.backtracking==0 ) {
@@ -9733,16 +10730,16 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3641);
-            	    fact207=fact();
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4399);
+            	    fact241=fact();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_fact.add(fact207.getTree());
+            	    if ( state.backtracking==0 ) stream_fact.add(fact241.getTree());
 
 
             	    // AST REWRITE
-            	    // elements: fact, fact_binding_expression
+            	    // elements: fact_binding_expression, fact
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -9752,9 +10749,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1093:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1218:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // src/main/resources/org/drools/lang/DRL.g:1093: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:1218: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);
@@ -9772,7 +10769,7 @@
             	    break;
 
             	default :
-            	    break loop78;
+            	    break loop88;
                 }
             } while (true);
 
@@ -9805,85 +10802,111 @@
     };
 
     // $ANTLR start "fact"
-    // src/main/resources/org/drools/lang/DRL.g:1096:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1221: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);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN209=null;
-        Token RIGHT_PAREN211=null;
-        DRLParser.pattern_type_return pattern_type208 = null;
+        Token LEFT_PAREN243=null;
+        Token RIGHT_PAREN245=null;
+        DRLParser.pattern_type_return pattern_type242 = null;
 
-        DRLParser.constraints_return constraints210 = null;
+        DRLParser.constraints_return constraints244 = null;
 
+        DRLParser.constr_parameters_return constr_parameters246 = null;
 
-        Object LEFT_PAREN209_tree=null;
-        Object RIGHT_PAREN211_tree=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_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
+        RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
         RewriteRuleSubtreeStream stream_pattern_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
-        RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1099:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1099:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1224: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:1224:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )?
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3681);
-            pattern_type208=pattern_type();
+            pushFollow(FOLLOW_pattern_type_in_fact4439);
+            pattern_type242=pattern_type();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type208.getTree());
-            LEFT_PAREN209=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3686); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN209);
+            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type242.getTree());
+            LEFT_PAREN243=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4444); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN243);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN209, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN243, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1102:4: ( constraints )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:4: ( constraints )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
 
-            if ( (LA79_0==ID||LA79_0==LEFT_PAREN) ) {
-                alt79=1;
+            if ( (LA89_0==ID||LA89_0==LEFT_PAREN) ) {
+                alt89=1;
             }
-            switch (alt79) {
+            switch (alt89) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1102:4: constraints
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3697);
-                    constraints210=constraints();
+                    pushFollow(FOLLOW_constraints_in_fact4455);
+                    constraints244=constraints();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_constraints.add(constraints210.getTree());
+                    if ( state.backtracking==0 ) stream_constraints.add(constraints244.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN211=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3703); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN211);
+            RIGHT_PAREN245=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4461); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN245);
 
             if ( state.backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:4: ( constr_parameters )?
+            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:1229:4: constr_parameters
+                    {
+                    pushFollow(FOLLOW_constr_parameters_in_fact4468);
+                    constr_parameters246=constr_parameters();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters246.getTree());
+
+                    }
+                    break;
+
+            }
+
             if ( state.backtracking==0 ) {
-              	if ((RIGHT_PAREN211!=null?RIGHT_PAREN211.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
-              			emit(RIGHT_PAREN211, DroolsEditorType.SYMBOL);
+              	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);
               		}	
             }
 
 
             // AST REWRITE
-            // elements: pattern_type, constraints, RIGHT_PAREN
+            // elements: constr_parameters, pattern_type, constraints, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9893,20 +10916,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1108:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+            // 1237:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1108:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237: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());
-                // src/main/resources/org/drools/lang/DRL.g:1108:28: ( constraints )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237: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:1237:41: ( constr_parameters )?
+                if ( stream_constr_parameters.hasNext() ) {
+                    adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                }
+                stream_constr_parameters.reset();
                 adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
                 adaptor.addChild(root_0, root_1);
@@ -9953,65 +10982,65 @@
     };
 
     // $ANTLR start "constraints"
-    // src/main/resources/org/drools/lang/DRL.g:1118:1: constraints : constraint ( COMMA constraint )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247: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 COMMA213=null;
-        DRLParser.constraint_return constraint212 = null;
+        Token COMMA248=null;
+        DRLParser.constraint_return constraint247 = null;
 
-        DRLParser.constraint_return constraint214 = null;
+        DRLParser.constraint_return constraint249 = null;
 
 
-        Object COMMA213_tree=null;
+        Object COMMA248_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1119:2: ( constraint ( COMMA constraint )* )
-            // src/main/resources/org/drools/lang/DRL.g:1119:4: constraint ( COMMA constraint )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:2: ( constraint ( COMMA constraint )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3737);
-            constraint212=constraint();
+            pushFollow(FOLLOW_constraint_in_constraints4514);
+            constraint247=constraint();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint212.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1119:15: ( COMMA constraint )*
-            loop80:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint247.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:15: ( COMMA constraint )*
+            loop91:
             do {
-                int alt80=2;
-                int LA80_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA80_0==COMMA) ) {
-                    alt80=1;
+                if ( (LA91_0==COMMA) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt80) {
+                switch (alt91) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1119:17: COMMA constraint
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:17: COMMA constraint
             	    {
-            	    COMMA213=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3741); if (state.failed) return retval;
+            	    COMMA248=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4518); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA213, DroolsEditorType.SYMBOL);
+            	      	emit(COMMA248, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3748);
-            	    constraint214=constraint();
+            	    pushFollow(FOLLOW_constraint_in_constraints4525);
+            	    constraint249=constraint();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint214.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint249.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop80;
+            	    break loop91;
                 }
             } while (true);
 
@@ -10044,29 +11073,29 @@
     };
 
     // $ANTLR start "constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1124:1: constraint : or_constr ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253: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_constr215 = null;
+        DRLParser.or_constr_return or_constr250 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1125:2: ( or_constr )
-            // src/main/resources/org/drools/lang/DRL.g:1125:4: or_constr
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:2: ( or_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3762);
-            or_constr215=or_constr();
+            pushFollow(FOLLOW_or_constr_in_constraint4539);
+            or_constr250=or_constr();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr215.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr250.getTree());
 
             }
 
@@ -10096,68 +11125,65 @@
     };
 
     // $ANTLR start "or_constr"
-    // src/main/resources/org/drools/lang/DRL.g:1128:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260: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_PIPE217=null;
-        DRLParser.and_constr_return and_constr216 = null;
+        Token DOUBLE_PIPE252=null;
+        DRLParser.or_constr_config_return or_constr_config251 = null;
 
-        DRLParser.and_constr_return and_constr218 = null;
+        DRLParser.and_constr_return and_constr253 = null;
 
 
-        Object DOUBLE_PIPE217_tree=null;
+        Object DOUBLE_PIPE252_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1129:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1129:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:3: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:6: or_constr_config ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3773);
-            and_constr216=and_constr();
+            pushFollow(FOLLOW_or_constr_config_in_or_constr4572);
+            or_constr_config251=or_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr216.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1129:15: ( DOUBLE_PIPE and_constr )*
-            loop81:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr_config251.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:9: ( DOUBLE_PIPE and_constr )*
+            loop92:
             do {
-                int alt81=2;
-                int LA81_0 = input.LA(1);
+                int alt92=2;
+                int LA92_0 = input.LA(1);
 
-                if ( (LA81_0==DOUBLE_PIPE) ) {
-                    alt81=1;
+                if ( (LA92_0==DOUBLE_PIPE) ) {
+                    alt92=1;
                 }
 
 
-                switch (alt81) {
+                switch (alt92) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1129:17: DOUBLE_PIPE and_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:10: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE217=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3777); if (state.failed) return retval;
+            	    DOUBLE_PIPE252=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4594); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE217_tree = (Object)adaptor.create(DOUBLE_PIPE217);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE217_tree, root_0);
+            	    DOUBLE_PIPE252_tree = (Object)adaptor.create(DOUBLE_PIPE252);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE252_tree, root_0);
             	    }
-            	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE217, DroolsEditorType.SYMBOL);	
-            	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3784);
-            	    and_constr218=and_constr();
+            	    pushFollow(FOLLOW_and_constr_in_or_constr4630);
+            	    and_constr253=and_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr218.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr253.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop81;
+            	    break loop92;
                 }
             } while (true);
 
@@ -10184,74 +11210,242 @@
     }
     // $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:1270: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);
+
+        Object root_0 = null;
+
+        Token SINGLE_PIPE255=null;
+        DRLParser.and_constr_return and_constr254 = null;
+
+        DRLParser.constr_parameters_return constr_parameters256 = null;
+
+        DRLParser.and_constr_return and_constr257 = null;
+
+        DRLParser.and_constr_return and_constr258 = null;
+
+
+        Object SINGLE_PIPE255_tree=null;
+        RewriteRuleTokenStream stream_SINGLE_PIPE=new RewriteRuleTokenStream(adaptor,"token SINGLE_PIPE");
+        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:1271:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr )
+            int alt93=2;
+            int LA93_0 = input.LA(1);
+
+            if ( (LA93_0==ID) ) {
+                int LA93_1 = input.LA(2);
+
+                if ( ((synpred11_DRL()||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL)))))) ) {
+                    alt93=1;
+                }
+                else if ( (true) ) {
+                    alt93=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 93, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA93_0==LEFT_PAREN) ) {
+                int LA93_2 = input.LA(2);
+
+                if ( (synpred11_DRL()) ) {
+                    alt93=1;
+                }
+                else if ( (true) ) {
+                    alt93=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 93, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 93, 0, input);
+
+                throw nvae;
+            }
+            switch (alt93) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr
+                    {
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4688);
+                    and_constr254=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr254.getTree());
+                    SINGLE_PIPE255=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4699); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_PIPE.add(SINGLE_PIPE255);
+
+                    pushFollow(FOLLOW_constr_parameters_in_or_constr_config4748);
+                    constr_parameters256=constr_parameters();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters256.getTree());
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4774);
+                    and_constr257=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr257.getTree());
+
+
+                    // AST REWRITE
+                    // elements: and_constr, constr_parameters, 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();
+                    // 1280: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:1280: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:1282:13: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.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:1285:5: and_constr
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4844);
+                    and_constr258=and_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr258.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"
-    // src/main/resources/org/drools/lang/DRL.g:1133:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288: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_AMPER220=null;
-        DRLParser.unary_constr_return unary_constr219 = null;
+        Token DOUBLE_AMPER260=null;
+        DRLParser.and_constr_config_return and_constr_config259 = null;
 
-        DRLParser.unary_constr_return unary_constr221 = null;
+        DRLParser.unary_constr_return unary_constr261 = null;
 
 
-        Object DOUBLE_AMPER220_tree=null;
+        Object DOUBLE_AMPER260_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1134:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1134:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:3: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3799);
-            unary_constr219=unary_constr();
+            pushFollow(FOLLOW_and_constr_config_in_and_constr4886);
+            and_constr_config259=and_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr219.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1134:17: ( DOUBLE_AMPER unary_constr )*
-            loop82:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr_config259.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:11: ( DOUBLE_AMPER unary_constr )*
+            loop94:
             do {
-                int alt82=2;
-                int LA82_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA82_0==DOUBLE_AMPER) ) {
-                    alt82=1;
+                if ( (LA94_0==DOUBLE_AMPER) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt82) {
+                switch (alt94) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1134:19: DOUBLE_AMPER unary_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:12: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER220=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3803); if (state.failed) return retval;
+            	    DOUBLE_AMPER260=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr4910); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER220_tree = (Object)adaptor.create(DOUBLE_AMPER220);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER220_tree, root_0);
+            	    DOUBLE_AMPER260_tree = (Object)adaptor.create(DOUBLE_AMPER260);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER260_tree, root_0);
             	    }
-            	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER220, DroolsEditorType.SYMBOL);;	
-            	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3810);
-            	    unary_constr221=unary_constr();
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr4949);
+            	    unary_constr261=unary_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr221.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr261.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop82;
+            	    break loop94;
                 }
             } while (true);
 
@@ -10278,95 +11472,283 @@
     }
     // $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:1300: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);
+
+        Object root_0 = null;
+
+        Token SINGLE_AMPER263=null;
+        DRLParser.unary_constr_return unary_constr262 = null;
+
+        DRLParser.constr_parameters_return constr_parameters264 = null;
+
+        DRLParser.unary_constr_return unary_constr265 = null;
+
+        DRLParser.unary_constr_return unary_constr266 = null;
+
+
+        Object SINGLE_AMPER263_tree=null;
+        RewriteRuleTokenStream stream_SINGLE_AMPER=new RewriteRuleTokenStream(adaptor,"token SINGLE_AMPER");
+        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:1301:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr )
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==ID) ) {
+                int LA96_1 = input.LA(2);
+
+                if ( (((synpred12_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred12_DRL())) ) {
+                    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 ( (synpred12_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:1302:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr
+                    {
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5029);
+                    unary_constr262=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr262.getTree());
+                    SINGLE_AMPER263=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5040); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_AMPER.add(SINGLE_AMPER263);
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:12: ( constr_parameters )?
+                    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:1308:12: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_and_constr_config5089);
+                            constr_parameters264=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters264.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5120);
+                    unary_constr265=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr265.getTree());
+
+
+                    // AST REWRITE
+                    // elements: constr_parameters, unary_constr, unary_constr, SINGLE_AMPER
+                    // 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();
+                    // 1310: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:1310: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:1312:13: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.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:1315:5: unary_constr
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5201);
+                    unary_constr266=unary_constr();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr266.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"
-    // src/main/resources/org/drools/lang/DRL.g:1138: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:1375: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_PAREN225=null;
-        Token RIGHT_PAREN227=null;
-        DRLParser.eval_key_return eval_key222 = null;
+        Token LEFT_PAREN270=null;
+        Token RIGHT_PAREN272=null;
+        DRLParser.eval_key_return eval_key267 = null;
 
-        DRLParser.paren_chunk_return paren_chunk223 = null;
+        DRLParser.paren_chunk_return paren_chunk268 = null;
 
-        DRLParser.field_constraint_return field_constraint224 = null;
+        DRLParser.field_constraint_return field_constraint269 = null;
 
-        DRLParser.or_constr_return or_constr226 = null;
+        DRLParser.or_constr_return or_constr271 = null;
 
 
-        Object LEFT_PAREN225_tree=null;
-        Object RIGHT_PAREN227_tree=null;
+        Object LEFT_PAREN270_tree=null;
+        Object RIGHT_PAREN272_tree=null;
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1142:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
-            int alt83=3;
-            alt83 = dfa83.predict(input);
-            switch (alt83) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1379:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            int alt97=3;
+            alt97 = dfa97.predict(input);
+            switch (alt97) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1142:4: eval_key paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1379:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3843);
-                    eval_key222=eval_key();
+                    pushFollow(FOLLOW_eval_key_in_unary_constr5250);
+                    eval_key267=eval_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key222.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3846);
-                    paren_chunk223=paren_chunk();
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key267.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5253);
+                    paren_chunk268=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk223.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk268.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1143:4: field_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3851);
-                    field_constraint224=field_constraint();
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr5258);
+                    field_constraint269=field_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint224.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint269.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1144:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1381:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN225=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3857); if (state.failed) return retval;
+                    LEFT_PAREN270=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5264); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN225, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN270, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3867);
-                    or_constr226=or_constr();
+                    pushFollow(FOLLOW_or_constr_in_unary_constr5274);
+                    or_constr271=or_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr226.getTree());
-                    RIGHT_PAREN227=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3872); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr271.getTree());
+                    RIGHT_PAREN272=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5279); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN227_tree = (Object)adaptor.create(RIGHT_PAREN227);
-                    adaptor.addChild(root_0, RIGHT_PAREN227_tree);
+                    RIGHT_PAREN272_tree = (Object)adaptor.create(RIGHT_PAREN272);
+                    adaptor.addChild(root_0, RIGHT_PAREN272_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN227, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN272, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -10410,7 +11792,7 @@
     };
 
     // $ANTLR start "field_constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1157: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:1394: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);
@@ -10418,46 +11800,46 @@
         Object root_0 = null;
 
         Token arw=null;
-        DRLParser.label_return label228 = null;
+        DRLParser.label_return label273 = null;
 
-        DRLParser.accessor_path_return accessor_path229 = null;
+        DRLParser.accessor_path_return accessor_path274 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective230 = null;
+        DRLParser.or_restr_connective_return or_restr_connective275 = null;
 
-        DRLParser.paren_chunk_return paren_chunk231 = null;
+        DRLParser.paren_chunk_return paren_chunk276 = null;
 
-        DRLParser.accessor_path_return accessor_path232 = null;
+        DRLParser.accessor_path_return accessor_path277 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective233 = null;
+        DRLParser.or_restr_connective_return or_restr_connective278 = null;
 
 
         Object arw_tree=null;
         RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
-        RewriteRuleSubtreeStream stream_accessor_path=new RewriteRuleSubtreeStream(adaptor,"rule accessor_path");
-        RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         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 {
-            // src/main/resources/org/drools/lang/DRL.g:1160: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 alt85=2;
-            int LA85_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397: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 alt99=2;
+            int LA99_0 = input.LA(1);
 
-            if ( (LA85_0==ID) ) {
-                int LA85_1 = input.LA(2);
+            if ( (LA99_0==ID) ) {
+                int LA99_1 = input.LA(2);
 
-                if ( ((LA85_1>=ID && LA85_1<=DOT)||LA85_1==LEFT_PAREN||(LA85_1>=EQUAL && LA85_1<=NOT_EQUAL)||LA85_1==LEFT_SQUARE) ) {
-                    alt85=2;
+                if ( (LA99_1==COLON) ) {
+                    alt99=1;
                 }
-                else if ( (LA85_1==COLON) ) {
-                    alt85=1;
+                else if ( ((LA99_1>=ID && LA99_1<=DOT)||LA99_1==LEFT_PAREN||(LA99_1>=EQUAL && LA99_1<=NOT_EQUAL)||LA99_1==LEFT_SQUARE||LA99_1==APPROX) ) {
+                    alt99=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 85, 1, input);
+                        new NoViableAltException("", 99, 1, input);
 
                     throw nvae;
                 }
@@ -10465,67 +11847,67 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 85, 0, input);
+                    new NoViableAltException("", 99, 0, input);
 
                 throw nvae;
             }
-            switch (alt85) {
+            switch (alt99) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1160: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:1397:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3892);
-                    label228=label();
+                    pushFollow(FOLLOW_label_in_field_constraint5299);
+                    label273=label();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_label.add(label228.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3894);
-                    accessor_path229=accessor_path();
+                    if ( state.backtracking==0 ) stream_label.add(label273.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5301);
+                    accessor_path274=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path229.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:1161:3: ( or_restr_connective | arw= ARROW paren_chunk )?
-                    int alt84=3;
-                    int LA84_0 = input.LA(1);
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path274.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    int alt98=3;
+                    int LA98_0 = input.LA(1);
 
-                    if ( (LA84_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {
-                        alt84=1;
+                    if ( (LA98_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                        alt98=1;
                     }
-                    else if ( (LA84_0==LEFT_PAREN||(LA84_0>=EQUAL && LA84_0<=NOT_EQUAL)) ) {
-                        alt84=1;
+                    else if ( (LA98_0==LEFT_PAREN||(LA98_0>=EQUAL && LA98_0<=NOT_EQUAL)||LA98_0==APPROX) ) {
+                        alt98=1;
                     }
-                    else if ( (LA84_0==ARROW) ) {
-                        alt84=2;
+                    else if ( (LA98_0==ARROW) ) {
+                        alt98=2;
                     }
-                    switch (alt84) {
+                    switch (alt98) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1161:5: or_restr_connective
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3901);
-                            or_restr_connective230=or_restr_connective();
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5308);
+                            or_restr_connective275=or_restr_connective();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective230.getTree());
+                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective275.getTree());
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:1161:27: arw= ARROW paren_chunk
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3907); if (state.failed) return retval; 
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5314); 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_constraint3911);
-                            paren_chunk231=paren_chunk();
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5318);
+                            paren_chunk276=paren_chunk();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk231.getTree());
+                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk276.getTree());
                             if ( state.backtracking==0 ) {
                               isArrow = true;
                             }
@@ -10538,7 +11920,7 @@
 
 
                     // AST REWRITE
-                    // elements: accessor_path, accessor_path, label, label, or_restr_connective, paren_chunk
+                    // elements: accessor_path, accessor_path, label, or_restr_connective, label, paren_chunk
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10548,15 +11930,15 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1162:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1400:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // src/main/resources/org/drools/lang/DRL.g:1162: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:1400: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1162:39: ^( VT_FIELD accessor_path )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400: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);
@@ -10568,9 +11950,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // src/main/resources/org/drools/lang/DRL.g:1162:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // src/main/resources/org/drools/lang/DRL.g:1162:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400: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);
@@ -10584,21 +11966,21 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1163:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1401:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1163: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:1401: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1163:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1163:53: ( or_restr_connective )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
@@ -10617,24 +11999,24 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1164:4: accessor_path or_restr_connective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3965);
-                    accessor_path232=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5376);
+                    accessor_path277=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path232.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3967);
-                    or_restr_connective233=or_restr_connective();
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path277.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5378);
+                    or_restr_connective278=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective233.getTree());
+                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective278.getTree());
 
 
                     // AST REWRITE
-                    // elements: or_restr_connective, accessor_path
+                    // elements: accessor_path, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10644,9 +12026,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1165:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1403:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1165:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1403: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);
@@ -10690,7 +12072,7 @@
     };
 
     // $ANTLR start "label"
-    // src/main/resources/org/drools/lang/DRL.g:1168:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406: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);
@@ -10698,28 +12080,28 @@
         Object root_0 = null;
 
         Token value=null;
-        Token COLON234=null;
+        Token COLON279=null;
 
         Object value_tree=null;
-        Object COLON234_tree=null;
+        Object COLON279_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1169:2: (value= ID COLON -> VT_LABEL[$value] )
-            // src/main/resources/org/drools/lang/DRL.g:1169:4: value= ID COLON
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:4: value= ID COLON
             {
-            value=(Token)match(input,ID,FOLLOW_ID_in_label3992); if (state.failed) return retval; 
+            value=(Token)match(input,ID,FOLLOW_ID_in_label5405); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(value);
 
             if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON234=(Token)match(input,COLON,FOLLOW_COLON_in_label3999); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON234);
+            COLON279=(Token)match(input,COLON,FOLLOW_COLON_in_label5412); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON279);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON234, DroolsEditorType.SYMBOL);	
+              	emit(COLON279, DroolsEditorType.SYMBOL);	
             }
 
 
@@ -10734,7 +12116,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1171:3: -> VT_LABEL[$value]
+            // 1409:3: -> VT_LABEL[$value]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
@@ -10769,78 +12151,78 @@
     };
 
     // $ANTLR start "or_restr_connective"
-    // src/main/resources/org/drools/lang/DRL.g:1174: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:1412: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_PIPE236=null;
-        DRLParser.and_restr_connective_return and_restr_connective235 = null;
+        Token DOUBLE_PIPE281=null;
+        DRLParser.and_restr_connective_return and_restr_connective280 = null;
 
-        DRLParser.and_restr_connective_return and_restr_connective237 = null;
+        DRLParser.and_restr_connective_return and_restr_connective282 = null;
 
 
-        Object DOUBLE_PIPE236_tree=null;
+        Object DOUBLE_PIPE281_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1175:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // src/main/resources/org/drools/lang/DRL.g:1175: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:1413: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:1413:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4020);
-            and_restr_connective235=and_restr_connective();
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5433);
+            and_restr_connective280=and_restr_connective();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective235.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1175:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
-            loop86:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective280.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            loop100:
             do {
-                int alt86=2;
-                int LA86_0 = input.LA(1);
+                int alt100=2;
+                int LA100_0 = input.LA(1);
 
-                if ( (LA86_0==DOUBLE_PIPE) ) {
-                    int LA86_2 = input.LA(2);
+                if ( (LA100_0==DOUBLE_PIPE) ) {
+                    int LA100_3 = input.LA(2);
 
                     if ( (((validateRestr()))) ) {
-                        alt86=1;
+                        alt100=1;
                     }
 
 
                 }
 
 
-                switch (alt86) {
+                switch (alt100) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1175:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413: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_PIPE236=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4026); if (state.failed) return retval;
+            	    DOUBLE_PIPE281=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5439); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE236_tree = (Object)adaptor.create(DOUBLE_PIPE236);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE236_tree, root_0);
+            	    DOUBLE_PIPE281_tree = (Object)adaptor.create(DOUBLE_PIPE281);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE281_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE236, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE281, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4034);
-            	    and_restr_connective237=and_restr_connective();
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5449);
+            	    and_restr_connective282=and_restr_connective();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective237.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective282.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop86;
+            	    break loop100;
                 }
             } while (true);
 
@@ -10878,78 +12260,78 @@
     };
 
     // $ANTLR start "and_restr_connective"
-    // src/main/resources/org/drools/lang/DRL.g:1188: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:1426: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_AMPER239=null;
-        DRLParser.constraint_expression_return constraint_expression238 = null;
+        Token DOUBLE_AMPER284=null;
+        DRLParser.constraint_expression_return constraint_expression283 = null;
 
-        DRLParser.constraint_expression_return constraint_expression240 = null;
+        DRLParser.constraint_expression_return constraint_expression285 = null;
 
 
-        Object DOUBLE_AMPER239_tree=null;
+        Object DOUBLE_AMPER284_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1189:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // src/main/resources/org/drools/lang/DRL.g:1189:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4055);
-            constraint_expression238=constraint_expression();
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5470);
+            constraint_expression283=constraint_expression();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression238.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1189:26: ({...}? => DOUBLE_AMPER constraint_expression )*
-            loop87:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression283.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            loop101:
             do {
-                int alt87=2;
-                int LA87_0 = input.LA(1);
+                int alt101=2;
+                int LA101_0 = input.LA(1);
 
-                if ( (LA87_0==DOUBLE_AMPER) ) {
-                    int LA87_2 = input.LA(2);
+                if ( (LA101_0==DOUBLE_AMPER) ) {
+                    int LA101_5 = input.LA(2);
 
                     if ( (((validateRestr()))) ) {
-                        alt87=1;
+                        alt101=1;
                     }
 
 
                 }
 
 
-                switch (alt87) {
+                switch (alt101) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1189:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427: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_AMPER239=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4061); if (state.failed) return retval;
+            	    DOUBLE_AMPER284=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5476); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER239_tree = (Object)adaptor.create(DOUBLE_AMPER239);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER239_tree, root_0);
+            	    DOUBLE_AMPER284_tree = (Object)adaptor.create(DOUBLE_AMPER284);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER284_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER239, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_AMPER284, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4068);
-            	    constraint_expression240=constraint_expression();
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5483);
+            	    constraint_expression285=constraint_expression();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression240.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression285.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop87;
+            	    break loop101;
                 }
             } while (true);
 
@@ -10987,80 +12369,259 @@
     };
 
     // $ANTLR start "constraint_expression"
-    // src/main/resources/org/drools/lang/DRL.g:1202:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440: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);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN243=null;
-        Token RIGHT_PAREN245=null;
-        DRLParser.compound_operator_return compound_operator241 = null;
+        Token LEFT_PAREN291=null;
+        Token RIGHT_PAREN293=null;
+        DRLParser.constr_parameters_return ans = null;
 
-        DRLParser.simple_operator_return simple_operator242 = null;
+        DRLParser.compound_operator_return compound_operator286 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective244 = null;
+        DRLParser.simple_operator_return simple_operator287 = null;
 
+        DRLParser.expression_value_return expression_value288 = null;
 
-        Object LEFT_PAREN243_tree=null;
-        Object RIGHT_PAREN245_tree=null;
+        DRLParser.custom_operator_return custom_operator289 = null;
 
+        DRLParser.expression_value_return expression_value290 = null;
+
+        DRLParser.or_restr_connective_return or_restr_connective292 = null;
+
+
+        Object LEFT_PAREN291_tree=null;
+        Object RIGHT_PAREN293_tree=null;
+        RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
+        RewriteRuleSubtreeStream stream_expression_value=new RewriteRuleSubtreeStream(adaptor,"rule expression_value");
+        RewriteRuleSubtreeStream stream_custom_operator=new RewriteRuleSubtreeStream(adaptor,"rule custom_operator");
+        RewriteRuleSubtreeStream stream_simple_operator=new RewriteRuleSubtreeStream(adaptor,"rule simple_operator");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1205:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
-            int alt88=3;
-            alt88 = dfa88.predict(input);
-            switch (alt88) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443: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 alt105=4;
+            alt105 = dfa105.predict(input);
+            switch (alt105) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1205:5: compound_operator
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4096);
-                    compound_operator241=compound_operator();
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5511);
+                    compound_operator286=compound_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator241.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator286.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1206:4: simple_operator
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:4: simple_operator (ans= constr_parameters )? expression_value
                     {
-                    root_0 = (Object)adaptor.nil();
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5516);
+                    simple_operator287=simple_operator();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4101);
-                    simple_operator242=simple_operator();
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_simple_operator.add(simple_operator287.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:23: (ans= constr_parameters )?
+                    int alt102=2;
+                    int LA102_0 = input.LA(1);
 
+                    if ( (LA102_0==AT) ) {
+                        alt102=1;
+                    }
+                    switch (alt102) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:23: ans= constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5520);
+                            ans=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(ans.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_expression_value_in_constraint_expression5523);
+                    expression_value288=expression_value();
+
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_operator242.getTree());
+                    if ( state.backtracking==0 ) stream_expression_value.add(expression_value288.getTree());
 
+
+                    // AST REWRITE
+                    // elements: constr_parameters, expression_value, 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();
+                    // 1445:5: -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )?
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:8: ^( simple_operator expression_value )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_simple_operator.nextNode(), root_1);
+
+                        adaptor.addChild(root_1, stream_expression_value.nextTree());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:44: ( ^( constr_parameters ) )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:44: ^( constr_parameters )
+                            {
+                            Object root_1 = (Object)adaptor.nil();
+                            root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
+
+                            adaptor.addChild(root_0, root_1);
+                            }
+
+                        }
+                        stream_constr_parameters.reset();
+
                     }
+
+                    retval.tree = root_0;}
+                    }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1207:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:4: custom_operator (ans= constr_parameters )? ( expression_value )?
                     {
+                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5545);
+                    custom_operator289=custom_operator();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_custom_operator.add(custom_operator289.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:23: (ans= constr_parameters )?
+                    int alt103=2;
+                    int LA103_0 = input.LA(1);
+
+                    if ( (LA103_0==AT) ) {
+                        alt103=1;
+                    }
+                    switch (alt103) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:23: ans= constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5549);
+                            ans=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(ans.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:43: ( expression_value )?
+                    int alt104=2;
+                    int LA104_0 = input.LA(1);
+
+                    if ( (LA104_0==ID||(LA104_0>=STRING && LA104_0<=LEFT_PAREN)||(LA104_0>=BOOL && LA104_0<=INT)||(LA104_0>=FLOAT && LA104_0<=NULL)) ) {
+                        alt104=1;
+                    }
+                    switch (alt104) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:43: expression_value
+                            {
+                            pushFollow(FOLLOW_expression_value_in_constraint_expression5552);
+                            expression_value290=expression_value();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_expression_value.add(expression_value290.getTree());
+
+                            }
+                            break;
+
+                    }
+
+
+
+                    // AST REWRITE
+                    // elements: constr_parameters, expression_value, custom_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();
+                    // 1447:5: -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )?
+                    {
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:8: ^( custom_operator ( expression_value )? )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot(stream_custom_operator.nextNode(), root_1);
 
-                    LEFT_PAREN243=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4106); if (state.failed) return retval;
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:26: ( 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);
+                        }
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:45: ( ^( constr_parameters ) )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:45: ^( constr_parameters )
+                            {
+                            Object root_1 = (Object)adaptor.nil();
+                            root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
+
+                            adaptor.addChild(root_0, root_1);
+                            }
+
+                        }
+                        stream_constr_parameters.reset();
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1448:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    LEFT_PAREN291=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5576); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN243, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN291, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4115);
-                    or_restr_connective244=or_restr_connective();
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5585);
+                    or_restr_connective292=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective244.getTree());
-                    RIGHT_PAREN245=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4120); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective292.getTree());
+                    RIGHT_PAREN293=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5590); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN245_tree = (Object)adaptor.create(RIGHT_PAREN245);
-                    adaptor.addChild(root_0, RIGHT_PAREN245_tree);
+                    RIGHT_PAREN293_tree = (Object)adaptor.create(RIGHT_PAREN293);
+                    adaptor.addChild(root_0, RIGHT_PAREN293_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN245, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN293, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -11130,240 +12691,338 @@
     };
 
     // $ANTLR start "simple_operator"
-    // src/main/resources/org/drools/lang/DRL.g:1253:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1494: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 EQUAL246=null;
-        Token GREATER247=null;
-        Token GREATER_EQUAL248=null;
-        Token LESS249=null;
-        Token LESS_EQUAL250=null;
-        Token NOT_EQUAL251=null;
-        DRLParser.not_key_return not_key252 = null;
+        Token EQUAL294=null;
+        Token GREATER295=null;
+        Token GREATER_EQUAL296=null;
+        Token LESS297=null;
+        Token LESS_EQUAL298=null;
+        Token NOT_EQUAL299=null;
 
-        DRLParser.operator_key_return operator_key253 = null;
+        Object EQUAL294_tree=null;
+        Object GREATER295_tree=null;
+        Object GREATER_EQUAL296_tree=null;
+        Object LESS297_tree=null;
+        Object LESS_EQUAL298_tree=null;
+        Object NOT_EQUAL299_tree=null;
 
-        DRLParser.square_chunk_return square_chunk254 = null;
 
-        DRLParser.expression_value_return expression_value255 = null;
+          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
 
-
-        Object EQUAL246_tree=null;
-        Object GREATER247_tree=null;
-        Object GREATER_EQUAL248_tree=null;
-        Object LESS249_tree=null;
-        Object LESS_EQUAL250_tree=null;
-        Object NOT_EQUAL251_tree=null;
-
-        if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1255:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
-            // src/main/resources/org/drools/lang/DRL.g:1256:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1498: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:1499:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1256:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
-            int alt91=7;
-            int LA91_0 = input.LA(1);
-
-            if ( (LA91_0==EQUAL) ) {
-                alt91=1;
-            }
-            else if ( (LA91_0==GREATER) ) {
-                alt91=2;
-            }
-            else if ( (LA91_0==GREATER_EQUAL) ) {
-                alt91=3;
-            }
-            else if ( (LA91_0==LESS) ) {
-                alt91=4;
-            }
-            else if ( (LA91_0==LESS_EQUAL) ) {
-                alt91=5;
-            }
-            else if ( (LA91_0==NOT_EQUAL) ) {
-                alt91=6;
-            }
-            else if ( (LA91_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
-                alt91=7;
-            }
-            else {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            int alt106=6;
+            switch ( input.LA(1) ) {
+            case EQUAL:
+                {
+                alt106=1;
+                }
+                break;
+            case GREATER:
+                {
+                alt106=2;
+                }
+                break;
+            case GREATER_EQUAL:
+                {
+                alt106=3;
+                }
+                break;
+            case LESS:
+                {
+                alt106=4;
+                }
+                break;
+            case LESS_EQUAL:
+                {
+                alt106=5;
+                }
+                break;
+            case NOT_EQUAL:
+                {
+                alt106=6;
+                }
+                break;
+            default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 91, 0, input);
+                    new NoViableAltException("", 106, 0, input);
 
                 throw nvae;
             }
-            switch (alt91) {
+
+            switch (alt106) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1257:3: EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1500:7: EQUAL
                     {
-                    EQUAL246=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4155); if (state.failed) return retval;
+                    EQUAL294=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5633); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    EQUAL246_tree = (Object)adaptor.create(EQUAL246);
-                    root_0 = (Object)adaptor.becomeRoot(EQUAL246_tree, root_0);
+                    EQUAL294_tree = (Object)adaptor.create(EQUAL294);
+                    root_0 = (Object)adaptor.becomeRoot(EQUAL294_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(EQUAL246, DroolsEditorType.SYMBOL);	
+                      	emit(EQUAL294, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      		    
+                    }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1258:4: GREATER
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:7: GREATER
                     {
-                    GREATER247=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4163); if (state.failed) return retval;
+                    GREATER295=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator5692); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER247_tree = (Object)adaptor.create(GREATER247);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER247_tree, root_0);
+                    GREATER295_tree = (Object)adaptor.create(GREATER295);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER295_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER247, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER295, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+                      	      
+                      	      
+                    }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1259:4: GREATER_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:7: GREATER_EQUAL
                     {
-                    GREATER_EQUAL248=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4171); if (state.failed) return retval;
+                    GREATER_EQUAL296=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator5731); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER_EQUAL248_tree = (Object)adaptor.create(GREATER_EQUAL248);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL248_tree, root_0);
+                    GREATER_EQUAL296_tree = (Object)adaptor.create(GREATER_EQUAL296);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL296_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER_EQUAL248, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER_EQUAL296, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1260:4: LESS
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:7: LESS
                     {
-                    LESS249=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4179); if (state.failed) return retval;
+                    LESS297=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator5766); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS249_tree = (Object)adaptor.create(LESS249);
-                    root_0 = (Object)adaptor.becomeRoot(LESS249_tree, root_0);
+                    LESS297_tree = (Object)adaptor.create(LESS297);
+                    root_0 = (Object)adaptor.becomeRoot(LESS297_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS249, DroolsEditorType.SYMBOL);	
+                      	emit(LESS297, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1261:4: LESS_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1524:7: LESS_EQUAL
                     {
-                    LESS_EQUAL250=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4187); if (state.failed) return retval;
+                    LESS_EQUAL298=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator5801); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS_EQUAL250_tree = (Object)adaptor.create(LESS_EQUAL250);
-                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL250_tree, root_0);
+                    LESS_EQUAL298_tree = (Object)adaptor.create(LESS_EQUAL298);
+                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL298_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS_EQUAL250, DroolsEditorType.SYMBOL);	
+                      	emit(LESS_EQUAL298, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:1262:4: NOT_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:7: NOT_EQUAL
                     {
-                    NOT_EQUAL251=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4195); if (state.failed) return retval;
+                    NOT_EQUAL299=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator5836); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NOT_EQUAL251_tree = (Object)adaptor.create(NOT_EQUAL251);
-                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL251_tree, root_0);
+                    NOT_EQUAL299_tree = (Object)adaptor.create(NOT_EQUAL299);
+                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL299_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NOT_EQUAL251, DroolsEditorType.SYMBOL);	
+                      	emit(NOT_EQUAL299, DroolsEditorType.SYMBOL);	
                     }
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+                      	      
+                      	      
+                    }
 
                     }
                     break;
-                case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:1263:4: ( not_key )? ( operator_key ( square_chunk )? )
-                    {
-                    // src/main/resources/org/drools/lang/DRL.g:1263:4: ( not_key )?
-                    int alt89=2;
-                    int LA89_0 = input.LA(1);
 
-                    if ( (LA89_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
-                        int LA89_1 = input.LA(2);
+            }
 
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
-                            alt89=1;
-                        }
-                    }
-                    switch (alt89) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1263:4: not_key
-                            {
-                            pushFollow(FOLLOW_not_key_in_simple_operator4203);
-                            not_key252=not_key();
 
-                            state._fsp--;
-                            if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key252.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 "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:1541: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_key300 = null;
+
+        DRLParser.approx_symb_return approx_symb301 = null;
+
+        DRLParser.operator_key_return operator_key302 = null;
+
+        DRLParser.square_chunk_return square_chunk303 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1542: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:1543: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:1543:6: ( not_key )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                int LA107_1 = input.LA(2);
+
+                if ( (LA107_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt107=1;
+                }
+                else if ( (LA107_1==ID) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                    int LA107_4 = input.LA(3);
+
+                    if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
+                        alt107=1;
                     }
-
-                    // src/main/resources/org/drools/lang/DRL.g:1264:3: ( operator_key ( square_chunk )? )
-                    // src/main/resources/org/drools/lang/DRL.g:1264:5: operator_key ( square_chunk )?
+                }
+            }
+            switch (alt107) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1543:6: not_key
                     {
-                    pushFollow(FOLLOW_operator_key_in_simple_operator4210);
-                    operator_key253=operator_key();
+                    pushFollow(FOLLOW_not_key_in_custom_operator5908);
+                    not_key300=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key253.getTree(), root_0);
-                    // src/main/resources/org/drools/lang/DRL.g:1264:19: ( square_chunk )?
-                    int alt90=2;
-                    int LA90_0 = input.LA(1);
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key300.getTree());
 
-                    if ( (LA90_0==LEFT_SQUARE) ) {
-                        alt90=1;
                     }
-                    switch (alt90) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1264:19: square_chunk
-                            {
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4213);
-                            square_chunk254=square_chunk();
+                    break;
 
-                            state._fsp--;
-                            if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk254.getTree());
+            }
 
-                            }
-                            break;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:6: ( approx_symb )?
+            int alt108=2;
+            int LA108_0 = input.LA(1);
 
-                    }
+            if ( (LA108_0==APPROX) ) {
+                alt108=1;
+            }
+            switch (alt108) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:6: approx_symb
+                    {
+                    pushFollow(FOLLOW_approx_symb_in_custom_operator5916);
+                    approx_symb301=approx_symb();
 
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, approx_symb301.getTree());
 
                     }
+                    break;
 
+            }
 
+            pushFollow(FOLLOW_operator_key_in_custom_operator5919);
+            operator_key302=operator_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key302.getTree(), root_0);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:6: ( square_chunk )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==LEFT_SQUARE) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:6: square_chunk
+                    {
+                    pushFollow(FOLLOW_square_chunk_in_custom_operator5927);
+                    square_chunk303=square_chunk();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk303.getTree());
+
                     }
                     break;
 
             }
 
             if ( state.backtracking==0 ) {
-              	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
+               emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+                      
+                  
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4225);
-            expression_value255=expression_value();
 
-            state._fsp--;
-            if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value255.getTree());
-
             }
 
             retval.stop = input.LT(-1);
@@ -11384,7 +13043,7 @@
         }
         return retval;
     }
-    // $ANTLR end "simple_operator"
+    // $ANTLR end "custom_operator"
 
     public static class compound_operator_return extends ParserRuleReturnScope {
         Object tree;
@@ -11392,55 +13051,55 @@
     };
 
     // $ANTLR start "compound_operator"
-    // src/main/resources/org/drools/lang/DRL.g:1271: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:1552: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_PAREN259=null;
-        Token COMMA261=null;
-        Token RIGHT_PAREN263=null;
-        DRLParser.in_key_return in_key256 = null;
+        Token LEFT_PAREN307=null;
+        Token COMMA309=null;
+        Token RIGHT_PAREN311=null;
+        DRLParser.in_key_return in_key304 = null;
 
-        DRLParser.not_key_return not_key257 = null;
+        DRLParser.not_key_return not_key305 = null;
 
-        DRLParser.in_key_return in_key258 = null;
+        DRLParser.in_key_return in_key306 = null;
 
-        DRLParser.expression_value_return expression_value260 = null;
+        DRLParser.expression_value_return expression_value308 = null;
 
-        DRLParser.expression_value_return expression_value262 = null;
+        DRLParser.expression_value_return expression_value310 = null;
 
 
-        Object LEFT_PAREN259_tree=null;
-        Object COMMA261_tree=null;
-        Object RIGHT_PAREN263_tree=null;
+        Object LEFT_PAREN307_tree=null;
+        Object COMMA309_tree=null;
+        Object RIGHT_PAREN311_tree=null;
 
          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1273:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1274: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:1554: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:1555:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1274:2: ( in_key | not_key in_key )
-            int alt92=2;
-            int LA92_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:2: ( in_key | not_key in_key )
+            int alt110=2;
+            int LA110_0 = input.LA(1);
 
-            if ( (LA92_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((validateIdentifierKey(DroolsSoftKeywords.IN)))))) {
-                int LA92_1 = input.LA(2);
+            if ( (LA110_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                int LA110_1 = input.LA(2);
 
-                if ( (LA92_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
-                    alt92=1;
+                if ( (LA110_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
+                    alt110=1;
                 }
-                else if ( (LA92_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
-                    alt92=2;
+                else if ( (LA110_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt110=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 92, 1, input);
+                        new NoViableAltException("", 110, 1, input);
 
                     throw nvae;
                 }
@@ -11448,38 +13107,38 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 92, 0, input);
+                    new NoViableAltException("", 110, 0, input);
 
                 throw nvae;
             }
-            switch (alt92) {
+            switch (alt110) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1274:4: in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4247);
-                    in_key256=in_key();
+                    pushFollow(FOLLOW_in_key_in_compound_operator5972);
+                    in_key304=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key256.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key304.getTree(), root_0);
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1274:14: not_key in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4252);
-                    not_key257=not_key();
+                    pushFollow(FOLLOW_not_key_in_compound_operator5977);
+                    not_key305=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key257.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4254);
-                    in_key258=in_key();
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key305.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator5979);
+                    in_key306=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key258.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key306.getTree(), root_0);
 
                     }
                     break;
@@ -11489,57 +13148,57 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN259=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4265); if (state.failed) return retval;
+            LEFT_PAREN307=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator5990); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN259, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN307, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4273);
-            expression_value260=expression_value();
+            pushFollow(FOLLOW_expression_value_in_compound_operator5998);
+            expression_value308=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value260.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1277:21: ( COMMA expression_value )*
-            loop93:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value308.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:21: ( COMMA expression_value )*
+            loop111:
             do {
-                int alt93=2;
-                int LA93_0 = input.LA(1);
+                int alt111=2;
+                int LA111_0 = input.LA(1);
 
-                if ( (LA93_0==COMMA) ) {
-                    alt93=1;
+                if ( (LA111_0==COMMA) ) {
+                    alt111=1;
                 }
 
 
-                switch (alt93) {
+                switch (alt111) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1277:23: COMMA expression_value
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:23: COMMA expression_value
             	    {
-            	    COMMA261=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4277); if (state.failed) return retval;
+            	    COMMA309=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6002); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA261, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA309, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4282);
-            	    expression_value262=expression_value();
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator6007);
+            	    expression_value310=expression_value();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value262.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value310.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop93;
+            	    break loop111;
                 }
             } while (true);
 
-            RIGHT_PAREN263=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4290); if (state.failed) return retval;
+            RIGHT_PAREN311=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6015); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_PAREN263_tree = (Object)adaptor.create(RIGHT_PAREN263);
-            adaptor.addChild(root_0, RIGHT_PAREN263_tree);
+            RIGHT_PAREN311_tree = (Object)adaptor.create(RIGHT_PAREN311);
+            adaptor.addChild(root_0, RIGHT_PAREN311_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN263, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN311, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
@@ -11573,13 +13232,625 @@
     }
     // $ANTLR end "compound_operator"
 
+    public static class constr_parameters_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "constr_parameters"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578: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);
+
+        Object root_0 = null;
+
+        Token AT312=null;
+        Token LEFT_PAREN313=null;
+        Token RIGHT_PAREN315=null;
+        DRLParser.constr_attr_return constr_attr314 = null;
+
+
+        Object AT312_tree=null;
+        Object LEFT_PAREN313_tree=null;
+        Object RIGHT_PAREN315_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:1579: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:1580:3: AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN
+            {
+            AT312=(Token)match(input,AT,FOLLOW_AT_in_constr_parameters6050); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT312);
+
+            LEFT_PAREN313=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_parameters6055); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN313);
+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:5: ( constr_attr )*
+            loop112:
+            do {
+                int alt112=2;
+                int LA112_0 = input.LA(1);
+
+                if ( (LA112_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    alt112=1;
+                }
+
+
+                switch (alt112) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:5: constr_attr
+            	    {
+            	    pushFollow(FOLLOW_constr_attr_in_constr_parameters6062);
+            	    constr_attr314=constr_attr();
+
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) stream_constr_attr.add(constr_attr314.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop112;
+                }
+            } while (true);
+
+            RIGHT_PAREN315=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_parameters6067); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN315);
+
+
+
+            // 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();
+            // 1584:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
+            {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1584: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:1584:29: ( constr_attr )*
+                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_parameters"
+
+    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:1590: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_id316 = null;
+
+        DRLParser.c_param_type_return c_param_type317 = null;
+
+        DRLParser.c_param_args_return c_param_args318 = null;
+
+        DRLParser.c_param_cut_return c_param_cut319 = null;
+
+        DRLParser.c_param_prior_return c_param_prior320 = null;
+
+
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1591:3: ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior )
+            int alt113=5;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                int LA113_1 = input.LA(2);
+
+                if ( (LA113_1==EQUALS) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    int LA113_2 = input.LA(3);
+
+                    if ( (LA113_2==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                        int LA113_3 = input.LA(4);
+
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
+                            alt113=1;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.TYPE)))) ) {
+                            alt113=2;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
+                            alt113=3;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
+                            alt113=4;
+                        }
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
+                            alt113=5;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return retval;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 113, 3, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return retval;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 113, 2, input);
+
+                        throw nvae;
+                    }
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 113, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 113, 0, input);
+
+                throw nvae;
+            }
+            switch (alt113) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:5: c_param_id
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_id_in_constr_attr6103);
+                    c_param_id316=c_param_id();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_id316.getTree());
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:7: c_param_type
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_type_in_constr_attr6115);
+                    c_param_type317=c_param_type();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_type317.getTree());
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:7: c_param_args
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_args_in_constr_attr6123);
+                    c_param_args318=c_param_args();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_args318.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:7: c_param_cut
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_cut_in_constr_attr6131);
+                    c_param_cut319=c_param_cut();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_cut319.getTree());
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:7: c_param_prior
+                    {
+                    root_0 = (Object)adaptor.nil();
+
+                    pushFollow(FOLLOW_c_param_prior_in_constr_attr6139);
+                    c_param_prior320=c_param_prior();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_prior320.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:1600: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);
+
+        Object root_0 = null;
+
+        Token cid=null;
+        Token EQUALS322=null;
+        DRLParser.id_key_return id_key321 = null;
+
+
+        Object cid_tree=null;
+        Object EQUALS322_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:3: ( id_key EQUALS cid= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:5: id_key EQUALS cid= STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_id_key_in_c_param_id6161);
+            id_key321=id_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(id_key321.getTree(), root_0);
+            EQUALS322=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id6168); if (state.failed) return retval;
+            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id6177); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            cid_tree = (Object)adaptor.create(cid);
+            adaptor.addChild(root_0, cid_tree);
+            }
+
+            }
+
+            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:1607:1: c_param_type : type_key EQUALS type= STRING ;
+    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 EQUALS324=null;
+        DRLParser.type_key_return type_key323 = null;
+
+
+        Object type_tree=null;
+        Object EQUALS324_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:3: ( type_key EQUALS type= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:5: type_key EQUALS type= STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_type_key_in_c_param_type6198);
+            type_key323=type_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(type_key323.getTree(), root_0);
+            EQUALS324=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_type6205); if (state.failed) return retval;
+            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_type6214); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            type_tree = (Object)adaptor.create(type);
+            adaptor.addChild(root_0, type_tree);
+            }
+
+            }
+
+            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:1614: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);
+
+        Object root_0 = null;
+
+        Token kut=null;
+        Token EQUALS326=null;
+        DRLParser.kut_key_return kut_key325 = null;
+
+
+        Object kut_tree=null;
+        Object EQUALS326_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:3: ( kut_key EQUALS kut= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1616:5: kut_key EQUALS kut= STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_kut_key_in_c_param_cut6237);
+            kut_key325=kut_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(kut_key325.getTree(), root_0);
+            EQUALS326=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut6244); if (state.failed) return retval;
+            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut6253); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            kut_tree = (Object)adaptor.create(kut);
+            adaptor.addChild(root_0, kut_tree);
+            }
+
+            }
+
+            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:1621: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);
+
+        Object root_0 = null;
+
+        Token pms=null;
+        Token EQUALS328=null;
+        DRLParser.args_key_return args_key327 = null;
+
+
+        Object pms_tree=null;
+        Object EQUALS328_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1622:3: ( args_key EQUALS pms= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:5: args_key EQUALS pms= STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_args_key_in_c_param_args6275);
+            args_key327=args_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(args_key327.getTree(), root_0);
+            EQUALS328=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args6282); if (state.failed) return retval;
+            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args6291); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            pms_tree = (Object)adaptor.create(pms);
+            adaptor.addChild(root_0, pms_tree);
+            }
+
+            }
+
+            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:1628: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);
+
+        Object root_0 = null;
+
+        Token pri=null;
+        Token EQUALS330=null;
+        DRLParser.prior_key_return prior_key329 = null;
+
+
+        Object pri_tree=null;
+        Object EQUALS330_tree=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:3: ( prior_key EQUALS pri= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:5: prior_key EQUALS pri= STRING
+            {
+            root_0 = (Object)adaptor.nil();
+
+            pushFollow(FOLLOW_prior_key_in_c_param_prior6314);
+            prior_key329=prior_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(prior_key329.getTree(), root_0);
+            EQUALS330=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior6321); if (state.failed) return retval;
+            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior6331); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            pri_tree = (Object)adaptor.create(pri);
+            adaptor.addChild(root_0, pri_tree);
+            }
+
+            }
+
+            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 operator_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
     // $ANTLR start "operator_key"
-    // src/main/resources/org/drools/lang/DRL.g:1288:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638: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);
@@ -11592,14 +13863,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1289:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1289:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1639:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1639: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_key4321); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6371); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11618,7 +13889,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1291:9: -> VK_OPERATOR[$id]
+            // 1641:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11653,7 +13924,7 @@
     };
 
     // $ANTLR start "neg_operator_key"
-    // src/main/resources/org/drools/lang/DRL.g:1294: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:1644: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);
@@ -11666,14 +13937,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1295:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1295:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645: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_key4366); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6416); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11692,7 +13963,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1297:9: -> VK_OPERATOR[$id]
+            // 1647:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11727,33 +13998,33 @@
     };
 
     // $ANTLR start "expression_value"
-    // src/main/resources/org/drools/lang/DRL.g:1300: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:1650: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_path264 = null;
+        DRLParser.accessor_path_return accessor_path331 = null;
 
-        DRLParser.literal_constraint_return literal_constraint265 = null;
+        DRLParser.literal_constraint_return literal_constraint332 = null;
 
-        DRLParser.paren_chunk_return paren_chunk266 = null;
+        DRLParser.paren_chunk_return paren_chunk333 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1301:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1301:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1301:4: ( accessor_path | literal_constraint | paren_chunk )
-            int alt94=3;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:4: ( accessor_path | literal_constraint | paren_chunk )
+            int alt114=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt94=1;
+                alt114=1;
                 }
                 break;
             case STRING:
@@ -11762,56 +14033,56 @@
             case FLOAT:
             case NULL:
                 {
-                alt94=2;
+                alt114=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt94=3;
+                alt114=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 94, 0, input);
+                    new NoViableAltException("", 114, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt94) {
+            switch (alt114) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1301:5: accessor_path
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4403);
-                    accessor_path264=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_expression_value6453);
+                    accessor_path331=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path264.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path331.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1302:4: literal_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1652:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4408);
-                    literal_constraint265=literal_constraint();
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value6458);
+                    literal_constraint332=literal_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint265.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint332.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1303:4: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4414);
-                    paren_chunk266=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value6464);
+                    paren_chunk333=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk266.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk333.getTree());
 
                     }
                     break;
@@ -11860,139 +14131,139 @@
     };
 
     // $ANTLR start "literal_constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1317:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1667: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 STRING267=null;
-        Token INT268=null;
-        Token FLOAT269=null;
-        Token BOOL270=null;
-        Token NULL271=null;
+        Token STRING334=null;
+        Token INT335=null;
+        Token FLOAT336=null;
+        Token BOOL337=null;
+        Token NULL338=null;
 
-        Object STRING267_tree=null;
-        Object INT268_tree=null;
-        Object FLOAT269_tree=null;
-        Object BOOL270_tree=null;
-        Object NULL271_tree=null;
+        Object STRING334_tree=null;
+        Object INT335_tree=null;
+        Object FLOAT336_tree=null;
+        Object BOOL337_tree=null;
+        Object NULL338_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1318:2: ( STRING | INT | FLOAT | BOOL | NULL )
-            int alt95=5;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            int alt115=5;
             switch ( input.LA(1) ) {
             case STRING:
                 {
-                alt95=1;
+                alt115=1;
                 }
                 break;
             case INT:
                 {
-                alt95=2;
+                alt115=2;
                 }
                 break;
             case FLOAT:
                 {
-                alt95=3;
+                alt115=3;
                 }
                 break;
             case BOOL:
                 {
-                alt95=4;
+                alt115=4;
                 }
                 break;
             case NULL:
                 {
-                alt95=5;
+                alt115=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 95, 0, input);
+                    new NoViableAltException("", 115, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt95) {
+            switch (alt115) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1318:4: STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING267=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4433); if (state.failed) return retval;
+                    STRING334=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6483); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    STRING267_tree = (Object)adaptor.create(STRING267);
-                    adaptor.addChild(root_0, STRING267_tree);
+                    STRING334_tree = (Object)adaptor.create(STRING334);
+                    adaptor.addChild(root_0, STRING334_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(STRING267, DroolsEditorType.STRING_CONST);	
+                      	emit(STRING334, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1319:4: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT268=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4440); if (state.failed) return retval;
+                    INT335=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6490); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT268_tree = (Object)adaptor.create(INT268);
-                    adaptor.addChild(root_0, INT268_tree);
+                    INT335_tree = (Object)adaptor.create(INT335);
+                    adaptor.addChild(root_0, INT335_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT268, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(INT335, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1320:4: FLOAT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT269=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4447); if (state.failed) return retval;
+                    FLOAT336=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6497); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FLOAT269_tree = (Object)adaptor.create(FLOAT269);
-                    adaptor.addChild(root_0, FLOAT269_tree);
+                    FLOAT336_tree = (Object)adaptor.create(FLOAT336);
+                    adaptor.addChild(root_0, FLOAT336_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FLOAT269, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(FLOAT336, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1321:4: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL270=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4454); if (state.failed) return retval;
+                    BOOL337=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6504); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL270_tree = (Object)adaptor.create(BOOL270);
-                    adaptor.addChild(root_0, BOOL270_tree);
+                    BOOL337_tree = (Object)adaptor.create(BOOL337);
+                    adaptor.addChild(root_0, BOOL337_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(BOOL270, DroolsEditorType.BOOLEAN_CONST);	
+                      	emit(BOOL337, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1322:4: NULL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL271=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4461); if (state.failed) return retval;
+                    NULL338=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6511); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NULL271_tree = (Object)adaptor.create(NULL271);
-                    adaptor.addChild(root_0, NULL271_tree);
+                    NULL338_tree = (Object)adaptor.create(NULL338);
+                    adaptor.addChild(root_0, NULL338_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NULL271, DroolsEditorType.NULL_CONST);	
+                      	emit(NULL338, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -12025,7 +14296,7 @@
     };
 
     // $ANTLR start "pattern_type"
-    // src/main/resources/org/drools/lang/DRL.g:1325: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:1675: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);
@@ -12034,7 +14305,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition272 = null;
+        DRLParser.dimension_definition_return dimension_definition339 = null;
 
 
         Object id_tree=null;
@@ -12042,37 +14313,37 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1326:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1326: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:1676: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:1676:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4476); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6526); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:1326:11: (id+= DOT id+= ID )*
-            loop96:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:11: (id+= DOT id+= ID )*
+            loop116:
             do {
-                int alt96=2;
-                int LA96_0 = input.LA(1);
+                int alt116=2;
+                int LA116_0 = input.LA(1);
 
-                if ( (LA96_0==DOT) ) {
-                    alt96=1;
+                if ( (LA116_0==DOT) ) {
+                    alt116=1;
                 }
 
 
-                switch (alt96) {
+                switch (alt116) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1326:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4482); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6532); 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_type4486); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6536); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12083,7 +14354,7 @@
             	    break;
 
             	default :
-            	    break loop96;
+            	    break loop116;
                 }
             } while (true);
 
@@ -12091,33 +14362,33 @@
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1329:6: ( dimension_definition )*
-            loop97:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:6: ( dimension_definition )*
+            loop117:
             do {
-                int alt97=2;
-                int LA97_0 = input.LA(1);
+                int alt117=2;
+                int LA117_0 = input.LA(1);
 
-                if ( (LA97_0==LEFT_SQUARE) ) {
-                    alt97=1;
+                if ( (LA117_0==LEFT_SQUARE) ) {
+                    alt117=1;
                 }
 
 
-                switch (alt97) {
+                switch (alt117) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1329:6: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4501);
-            	    dimension_definition272=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6551);
+            	    dimension_definition339=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition272.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition339.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop97;
+            	    break loop117;
                 }
             } while (true);
 
@@ -12134,9 +14405,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1330:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1680:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1330:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680: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);
@@ -12149,7 +14420,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1330:28: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12190,7 +14461,7 @@
     };
 
     // $ANTLR start "data_type"
-    // src/main/resources/org/drools/lang/DRL.g:1333: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:1683: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);
@@ -12199,7 +14470,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition273 = null;
+        DRLParser.dimension_definition_return dimension_definition340 = null;
 
 
         Object id_tree=null;
@@ -12207,37 +14478,37 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1334:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1334: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:1684: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:1684:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4529); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6579); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:1334:11: (id+= DOT id+= ID )*
-            loop98:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:11: (id+= DOT id+= ID )*
+            loop118:
             do {
-                int alt98=2;
-                int LA98_0 = input.LA(1);
+                int alt118=2;
+                int LA118_0 = input.LA(1);
 
-                if ( (LA98_0==DOT) ) {
-                    alt98=1;
+                if ( (LA118_0==DOT) ) {
+                    alt118=1;
                 }
 
 
-                switch (alt98) {
+                switch (alt118) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1334:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4535); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6585); 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_type4539); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6589); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12248,37 +14519,37 @@
             	    break;
 
             	default :
-            	    break loop98;
+            	    break loop118;
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:1334:31: ( dimension_definition )*
-            loop99:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:31: ( dimension_definition )*
+            loop119:
             do {
-                int alt99=2;
-                int LA99_0 = input.LA(1);
+                int alt119=2;
+                int LA119_0 = input.LA(1);
 
-                if ( (LA99_0==LEFT_SQUARE) ) {
-                    alt99=1;
+                if ( (LA119_0==LEFT_SQUARE) ) {
+                    alt119=1;
                 }
 
 
-                switch (alt99) {
+                switch (alt119) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1334:31: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4544);
-            	    dimension_definition273=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type6594);
+            	    dimension_definition340=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition273.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition340.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop99;
+            	    break loop119;
                 }
             } while (true);
 
@@ -12298,9 +14569,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1336:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1686:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1336:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686: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);
@@ -12313,7 +14584,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1336:25: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12354,40 +14625,40 @@
     };
 
     // $ANTLR start "dimension_definition"
-    // src/main/resources/org/drools/lang/DRL.g:1339:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689: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_SQUARE274=null;
-        Token RIGHT_SQUARE275=null;
+        Token LEFT_SQUARE341=null;
+        Token RIGHT_SQUARE342=null;
 
-        Object LEFT_SQUARE274_tree=null;
-        Object RIGHT_SQUARE275_tree=null;
+        Object LEFT_SQUARE341_tree=null;
+        Object RIGHT_SQUARE342_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1340:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1340:4: LEFT_SQUARE RIGHT_SQUARE
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE274=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4573); if (state.failed) return retval;
+            LEFT_SQUARE341=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6623); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            LEFT_SQUARE274_tree = (Object)adaptor.create(LEFT_SQUARE274);
-            adaptor.addChild(root_0, LEFT_SQUARE274_tree);
+            LEFT_SQUARE341_tree = (Object)adaptor.create(LEFT_SQUARE341);
+            adaptor.addChild(root_0, LEFT_SQUARE341_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(LEFT_SQUARE274, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_SQUARE341, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE275=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4580); if (state.failed) return retval;
+            RIGHT_SQUARE342=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6630); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_SQUARE275_tree = (Object)adaptor.create(RIGHT_SQUARE275);
-            adaptor.addChild(root_0, RIGHT_SQUARE275_tree);
+            RIGHT_SQUARE342_tree = (Object)adaptor.create(RIGHT_SQUARE342);
+            adaptor.addChild(root_0, RIGHT_SQUARE342_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_SQUARE275, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_SQUARE342, DroolsEditorType.SYMBOL);	
             }
 
             }
@@ -12418,65 +14689,65 @@
     };
 
     // $ANTLR start "accessor_path"
-    // src/main/resources/org/drools/lang/DRL.g:1344: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:1694: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 DOT277=null;
-        DRLParser.accessor_element_return accessor_element276 = null;
+        Token DOT344=null;
+        DRLParser.accessor_element_return accessor_element343 = null;
 
-        DRLParser.accessor_element_return accessor_element278 = null;
+        DRLParser.accessor_element_return accessor_element345 = null;
 
 
-        Object DOT277_tree=null;
+        Object DOT344_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1345:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:1345:4: accessor_element ( DOT accessor_element )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695: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:1695:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4594);
-            accessor_element276=accessor_element();
+            pushFollow(FOLLOW_accessor_element_in_accessor_path6644);
+            accessor_element343=accessor_element();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element276.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1345:21: ( DOT accessor_element )*
-            loop100:
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element343.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:21: ( DOT accessor_element )*
+            loop120:
             do {
-                int alt100=2;
-                int LA100_0 = input.LA(1);
+                int alt120=2;
+                int LA120_0 = input.LA(1);
 
-                if ( (LA100_0==DOT) ) {
-                    alt100=1;
+                if ( (LA120_0==DOT) ) {
+                    alt120=1;
                 }
 
 
-                switch (alt100) {
+                switch (alt120) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1345:23: DOT accessor_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:23: DOT accessor_element
             	    {
-            	    DOT277=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4598); if (state.failed) return retval; 
-            	    if ( state.backtracking==0 ) stream_DOT.add(DOT277);
+            	    DOT344=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6648); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT344);
 
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOT277, DroolsEditorType.IDENTIFIER);	
+            	      	emit(DOT344, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4602);
-            	    accessor_element278=accessor_element();
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6652);
+            	    accessor_element345=accessor_element();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element278.getTree());
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element345.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop100;
+            	    break loop120;
                 }
             } while (true);
 
@@ -12493,9 +14764,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1346:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1696:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1346:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696: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);
@@ -12543,64 +14814,64 @@
     };
 
     // $ANTLR start "accessor_element"
-    // src/main/resources/org/drools/lang/DRL.g:1349: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:1699: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 ID279=null;
-        DRLParser.square_chunk_return square_chunk280 = null;
+        Token ID346=null;
+        DRLParser.square_chunk_return square_chunk347 = null;
 
 
-        Object ID279_tree=null;
+        Object ID346_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1350:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1350:4: ID ( square_chunk )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700: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:1700:4: ID ( square_chunk )*
             {
-            ID279=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4626); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID279);
+            ID346=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6676); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID346);
 
             if ( state.backtracking==0 ) {
-              	emit(ID279, DroolsEditorType.IDENTIFIER);	
+              	emit(ID346, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1351:3: ( square_chunk )*
-            loop101:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:3: ( square_chunk )*
+            loop121:
             do {
-                int alt101=2;
-                int LA101_0 = input.LA(1);
+                int alt121=2;
+                int LA121_0 = input.LA(1);
 
-                if ( (LA101_0==LEFT_SQUARE) ) {
-                    alt101=1;
+                if ( (LA121_0==LEFT_SQUARE) ) {
+                    alt121=1;
                 }
 
 
-                switch (alt101) {
+                switch (alt121) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1351:3: square_chunk
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4632);
-            	    square_chunk280=square_chunk();
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6682);
+            	    square_chunk347=square_chunk();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk280.getTree());
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk347.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop121;
                 }
             } while (true);
 
 
 
             // AST REWRITE
-            // elements: ID, square_chunk
+            // elements: square_chunk, ID
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -12610,15 +14881,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1352:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1702:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1352:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702: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());
-                // src/main/resources/org/drools/lang/DRL.g:1352:30: ( square_chunk )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
@@ -12659,7 +14930,7 @@
     };
 
     // $ANTLR start "rhs_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1355: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:1705: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);
@@ -12674,10 +14945,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1358:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1358:5: rc= rhs_chunk_data
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1708: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:1708:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4661);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6711);
             rc=rhs_chunk_data();
 
             state._fsp--;
@@ -12699,7 +14970,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1359:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1709:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
@@ -12734,100 +15005,100 @@
     };
 
     // $ANTLR start "rhs_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1362: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:1712: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 THEN281=null;
-        Token SEMICOLON284=null;
-        DRLParser.not_end_key_return not_end_key282 = null;
+        Token THEN348=null;
+        Token SEMICOLON351=null;
+        DRLParser.not_end_key_return not_end_key349 = null;
 
-        DRLParser.end_key_return end_key283 = null;
+        DRLParser.end_key_return end_key350 = null;
 
 
-        Object THEN281_tree=null;
-        Object SEMICOLON284_tree=null;
+        Object THEN348_tree=null;
+        Object SEMICOLON351_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1363:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:1363:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN281=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4680); if (state.failed) return retval;
+            THEN348=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6730); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            THEN281_tree = (Object)adaptor.create(THEN281);
-            adaptor.addChild(root_0, THEN281_tree);
+            THEN348_tree = (Object)adaptor.create(THEN348);
+            adaptor.addChild(root_0, THEN348_tree);
             }
             if ( state.backtracking==0 ) {
-              	if ((THEN281!=null?THEN281.getText():null).equalsIgnoreCase("then")){
-              			emit(THEN281, DroolsEditorType.KEYWORD);
+              	if ((THEN348!=null?THEN348.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN348, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1368:4: ( not_end_key )*
-            loop102:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:4: ( not_end_key )*
+            loop122:
             do {
-                int alt102=2;
-                int LA102_0 = input.LA(1);
+                int alt122=2;
+                int LA122_0 = input.LA(1);
 
-                if ( (LA102_0==ID) && (((!(validateIdentifierKey(DroolsSoftKeywords.END)))||((validateIdentifierKey(DroolsSoftKeywords.END)))))) {
-                    int LA102_1 = input.LA(2);
+                if ( (LA122_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.END)))||(!(validateIdentifierKey(DroolsSoftKeywords.END)))))) {
+                    int LA122_1 = input.LA(2);
 
                     if ( ((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
-                        alt102=1;
+                        alt122=1;
                     }
 
 
                 }
-                else if ( ((LA102_0>=VT_COMPILATION_UNIT && LA102_0<=SEMICOLON)||(LA102_0>=DOT && LA102_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
-                    alt102=1;
+                else if ( ((LA122_0>=VT_COMPILATION_UNIT && LA122_0<=SEMICOLON)||(LA122_0>=DOT && LA122_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
+                    alt122=1;
                 }
 
 
-                switch (alt102) {
+                switch (alt122) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1368:4: not_end_key
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:4: not_end_key
             	    {
-            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data4689);
-            	    not_end_key282=not_end_key();
+            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6739);
+            	    not_end_key349=not_end_key();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key282.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key349.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop102;
+            	    break loop122;
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_rhs_chunk_data4695);
-            end_key283=end_key();
+            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6745);
+            end_key350=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key283.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1370:3: ( SEMICOLON )?
-            int alt103=2;
-            int LA103_0 = input.LA(1);
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key350.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:3: ( SEMICOLON )?
+            int alt123=2;
+            int LA123_0 = input.LA(1);
 
-            if ( (LA103_0==SEMICOLON) ) {
-                alt103=1;
+            if ( (LA123_0==SEMICOLON) ) {
+                alt123=1;
             }
-            switch (alt103) {
+            switch (alt123) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1370:3: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:3: SEMICOLON
                     {
-                    SEMICOLON284=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4700); if (state.failed) return retval;
+                    SEMICOLON351=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6750); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    SEMICOLON284_tree = (Object)adaptor.create(SEMICOLON284);
-                    adaptor.addChild(root_0, SEMICOLON284_tree);
+                    SEMICOLON351_tree = (Object)adaptor.create(SEMICOLON351);
+                    adaptor.addChild(root_0, SEMICOLON351_tree);
                     }
 
                     }
@@ -12836,7 +15107,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(SEMICOLON284, DroolsEditorType.KEYWORD);	
+              	emit(SEMICOLON351, DroolsEditorType.KEYWORD);	
             }
 
             }
@@ -12867,7 +15138,7 @@
     };
 
     // $ANTLR start "curly_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1373: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:1723: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);
@@ -12882,10 +15153,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1376:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1376:5: cc= curly_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1726: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:1726:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4719);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6769);
             cc=curly_chunk_data(false);
 
             state._fsp--;
@@ -12907,7 +15178,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1377:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1727:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
@@ -12942,7 +15213,7 @@
     };
 
     // $ANTLR start "curly_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1380: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:1730: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);
@@ -12952,7 +15223,7 @@
         Token lc1=null;
         Token any=null;
         Token rc1=null;
-        DRLParser.curly_chunk_data_return curly_chunk_data285 = null;
+        DRLParser.curly_chunk_data_return curly_chunk_data352 = null;
 
 
         Object lc1_tree=null;
@@ -12960,12 +15231,12 @@
         Object rc1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1381:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // src/main/resources/org/drools/lang/DRL.g:1381: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:1731: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:1731: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_data4742); if (state.failed) return retval;
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6792); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -12978,23 +15249,23 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1388:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
-            loop104:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            loop124:
             do {
-                int alt104=3;
-                int LA104_0 = input.LA(1);
+                int alt124=3;
+                int LA124_0 = input.LA(1);
 
-                if ( ((LA104_0>=VT_COMPILATION_UNIT && LA104_0<=THEN)||(LA104_0>=MISC && LA104_0<=MULTI_LINE_COMMENT)) ) {
-                    alt104=1;
+                if ( ((LA124_0>=VT_COMPILATION_UNIT && LA124_0<=THEN)||(LA124_0>=MISC && LA124_0<=MULTI_LINE_COMMENT)) ) {
+                    alt124=1;
                 }
-                else if ( (LA104_0==LEFT_CURLY) ) {
-                    alt104=2;
+                else if ( (LA124_0==LEFT_CURLY) ) {
+                    alt124=2;
                 }
 
 
-                switch (alt104) {
+                switch (alt124) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1388:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738: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) ) {
@@ -13015,24 +15286,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1388:87: curly_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4770);
-            	    curly_chunk_data285=curly_chunk_data(true);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6820);
+            	    curly_chunk_data352=curly_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data285.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data352.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop104;
+            	    break loop124;
                 }
             } while (true);
 
-            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4781); if (state.failed) return retval;
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6831); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -13074,7 +15345,7 @@
     };
 
     // $ANTLR start "paren_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1398: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:1748: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);
@@ -13089,10 +15360,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1401:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1401:5: pc= paren_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751: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:1751:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4802);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6852);
             pc=paren_chunk_data(false);
 
             state._fsp--;
@@ -13114,7 +15385,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1402:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1752:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -13149,7 +15420,7 @@
     };
 
     // $ANTLR start "paren_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1405: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:1755: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);
@@ -13159,7 +15430,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        DRLParser.paren_chunk_data_return paren_chunk_data286 = null;
+        DRLParser.paren_chunk_data_return paren_chunk_data353 = null;
 
 
         Object lp1_tree=null;
@@ -13167,12 +15438,12 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1406:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1406: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:1756: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:1756: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_data4826); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data6876); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -13185,23 +15456,23 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1413:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
-            loop105:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            loop125:
             do {
-                int alt105=3;
-                int LA105_0 = input.LA(1);
+                int alt125=3;
+                int LA125_0 = input.LA(1);
 
-                if ( ((LA105_0>=VT_COMPILATION_UNIT && LA105_0<=STRING)||LA105_0==COMMA||(LA105_0>=AT && LA105_0<=MULTI_LINE_COMMENT)) ) {
-                    alt105=1;
+                if ( ((LA125_0>=VT_COMPILATION_UNIT && LA125_0<=STRING)||LA125_0==COMMA||(LA125_0>=AT && LA125_0<=MULTI_LINE_COMMENT)) ) {
+                    alt125=1;
                 }
-                else if ( (LA105_0==LEFT_PAREN) ) {
-                    alt105=2;
+                else if ( (LA125_0==LEFT_PAREN) ) {
+                    alt125=2;
                 }
 
 
-                switch (alt105) {
+                switch (alt125) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1413:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763: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) ) {
@@ -13222,24 +15493,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1413:87: paren_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4854);
-            	    paren_chunk_data286=paren_chunk_data(true);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data6904);
+            	    paren_chunk_data353=paren_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data286.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data353.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop105;
+            	    break loop125;
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4865); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data6915); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -13281,7 +15552,7 @@
     };
 
     // $ANTLR start "square_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1423: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:1773: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);
@@ -13296,10 +15567,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1426:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1426:5: sc= square_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1776: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:1776:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4886);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk6936);
             sc=square_chunk_data(false);
 
             state._fsp--;
@@ -13321,7 +15592,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1427:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1777:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
@@ -13356,7 +15627,7 @@
     };
 
     // $ANTLR start "square_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1430: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:1780: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);
@@ -13366,7 +15637,7 @@
         Token ls1=null;
         Token any=null;
         Token rs1=null;
-        DRLParser.square_chunk_data_return square_chunk_data287 = null;
+        DRLParser.square_chunk_data_return square_chunk_data354 = null;
 
 
         Object ls1_tree=null;
@@ -13374,12 +15645,12 @@
         Object rs1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1431:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1431: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:1781: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:1781: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_data4909); if (state.failed) return retval;
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data6959); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -13392,23 +15663,23 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1438:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
-            loop106:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            loop126:
             do {
-                int alt106=3;
-                int LA106_0 = input.LA(1);
+                int alt126=3;
+                int LA126_0 = input.LA(1);
 
-                if ( ((LA106_0>=VT_COMPILATION_UNIT && LA106_0<=NULL)||(LA106_0>=THEN && LA106_0<=MULTI_LINE_COMMENT)) ) {
-                    alt106=1;
+                if ( ((LA126_0>=VT_COMPILATION_UNIT && LA126_0<=NULL)||(LA126_0>=THEN && LA126_0<=MULTI_LINE_COMMENT)) ) {
+                    alt126=1;
                 }
-                else if ( (LA106_0==LEFT_SQUARE) ) {
-                    alt106=2;
+                else if ( (LA126_0==LEFT_SQUARE) ) {
+                    alt126=2;
                 }
 
 
-                switch (alt106) {
+                switch (alt126) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1438:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788: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) ) {
@@ -13429,24 +15700,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1438:88: square_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4936);
-            	    square_chunk_data287=square_chunk_data(true);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data6986);
+            	    square_chunk_data354=square_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data287.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data354.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop106;
+            	    break loop126;
                 }
             } while (true);
 
-            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4947); if (state.failed) return retval;
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data6997); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -13488,7 +15759,7 @@
     };
 
     // $ANTLR start "lock_on_active_key"
-    // src/main/resources/org/drools/lang/DRL.g:1448: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:1798: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);
@@ -13506,33 +15777,33 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1451:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1451: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:1801: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:1801: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_key4971); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7021); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4975); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7025); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4979); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7029); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4983); if (state.failed) return retval; 
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7033); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4987); if (state.failed) return retval; 
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7037); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id3);
 
             if ( state.backtracking==0 ) {
@@ -13558,7 +15829,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1457:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1807:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
@@ -13593,7 +15864,7 @@
     };
 
     // $ANTLR start "date_effective_key"
-    // src/main/resources/org/drools/lang/DRL.g:1460: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:1810: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);
@@ -13607,27 +15878,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1463:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1463:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813: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:1813: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_key5019); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7069); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5023); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7073); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5027); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7077); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13651,7 +15922,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1467:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1817:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
@@ -13686,7 +15957,7 @@
     };
 
     // $ANTLR start "date_expires_key"
-    // src/main/resources/org/drools/lang/DRL.g:1470: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:1820: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);
@@ -13700,27 +15971,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1473:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1473:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823: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:1823: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_key5059); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7110); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5063); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7114); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5067); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7118); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13744,7 +16015,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1477:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1827:3: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
@@ -13779,7 +16050,7 @@
     };
 
     // $ANTLR start "no_loop_key"
-    // src/main/resources/org/drools/lang/DRL.g:1480: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:1830: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);
@@ -13793,27 +16064,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1483:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1483:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1833: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:1833: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_key5099); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7150); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5103); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7154); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5107); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7158); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13837,7 +16108,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1487:3: -> VK_NO_LOOP[$start, text]
+            // 1837:3: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
@@ -13872,7 +16143,7 @@
     };
 
     // $ANTLR start "auto_focus_key"
-    // src/main/resources/org/drools/lang/DRL.g:1490: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:1840: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);
@@ -13886,27 +16157,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1493:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1493:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843: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:1843: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_key5139); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7190); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5143); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7194); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5147); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7198); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13930,7 +16201,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1497:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1847:3: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
@@ -13965,7 +16236,7 @@
     };
 
     // $ANTLR start "activation_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1500: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:1850: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);
@@ -13979,27 +16250,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1503:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1503:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853: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:1853: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_key5179); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7230); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5183); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7234); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5187); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7238); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14023,7 +16294,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1507:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1857:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
@@ -14058,7 +16329,7 @@
     };
 
     // $ANTLR start "agenda_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1510: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:1860: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);
@@ -14072,27 +16343,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1513:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1513:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1863: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:1863: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_key5219); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7270); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5223); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7274); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5227); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7278); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14116,7 +16387,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1517:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1867:3: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
@@ -14151,7 +16422,7 @@
     };
 
     // $ANTLR start "ruleflow_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1520: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:1870: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);
@@ -14165,27 +16436,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1523:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1523:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873: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:1873: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_key5259); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7310); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5263); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7314); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5267); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7318); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14209,7 +16480,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1527:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1877:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
@@ -14244,7 +16515,7 @@
     };
 
     // $ANTLR start "entry_point_key"
-    // src/main/resources/org/drools/lang/DRL.g:1530: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:1880: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);
@@ -14258,27 +16529,27 @@
         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");
-        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
 
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1533:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1533:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883: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:1883: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_key5299); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7350); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5303); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7354); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5307); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7358); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14302,7 +16573,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1537:3: -> VK_ENTRY_POINT[$start, text]
+            // 1887:3: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
@@ -14337,7 +16608,7 @@
     };
 
     // $ANTLR start "duration_key"
-    // src/main/resources/org/drools/lang/DRL.g:1540:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1890: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);
@@ -14350,14 +16621,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1541:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1541:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891: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_key5336); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7387); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14376,7 +16647,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1543:3: -> VK_DURATION[$id]
+            // 1893:3: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
@@ -14411,7 +16682,7 @@
     };
 
     // $ANTLR start "package_key"
-    // src/main/resources/org/drools/lang/DRL.g:1546:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1896: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);
@@ -14424,14 +16695,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1547:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1547:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897: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_key5363); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7414); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14450,7 +16721,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1549:3: -> VK_PACKAGE[$id]
+            // 1899:3: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
@@ -14485,7 +16756,7 @@
     };
 
     // $ANTLR start "import_key"
-    // src/main/resources/org/drools/lang/DRL.g:1552:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902: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);
@@ -14498,14 +16769,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1553:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1553:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903: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_key5390); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7441); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14524,7 +16795,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1555:3: -> VK_IMPORT[$id]
+            // 1905:3: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
@@ -14559,7 +16830,7 @@
     };
 
     // $ANTLR start "dialect_key"
-    // src/main/resources/org/drools/lang/DRL.g:1558:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908: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);
@@ -14572,14 +16843,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1559:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1559:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909: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_key5417); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7468); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14598,7 +16869,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1561:3: -> VK_DIALECT[$id]
+            // 1911:3: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
@@ -14627,13 +16898,235 @@
     }
     // $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:1914: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:1915:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1915: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_key7496); 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();
+            // 1917: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:1920: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:1921:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921: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_key7529); 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();
+            // 1923: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:1926: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:1927:3: ({...}? =>id= ID -> VK_FILTER[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1927: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_key7562); 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();
+            // 1929: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"
-    // src/main/resources/org/drools/lang/DRL.g:1564:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1933: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);
@@ -14646,14 +17139,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1565:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1565:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1934:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1934: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_key5444); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7595); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14672,7 +17165,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1567:3: -> VK_SALIENCE[$id]
+            // 1936:3: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
@@ -14707,7 +17200,7 @@
     };
 
     // $ANTLR start "enabled_key"
-    // src/main/resources/org/drools/lang/DRL.g:1570:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1939: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);
@@ -14720,14 +17213,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1571:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1571:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1940:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1940: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_key5471); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7622); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14746,7 +17239,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1573:3: -> VK_ENABLED[$id]
+            // 1942:3: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
@@ -14781,7 +17274,7 @@
     };
 
     // $ANTLR start "attributes_key"
-    // src/main/resources/org/drools/lang/DRL.g:1576:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1945: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);
@@ -14794,14 +17287,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1577:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1577:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946: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_key5498); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7649); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14820,7 +17313,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1579:3: -> VK_ATTRIBUTES[$id]
+            // 1948:3: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
@@ -14855,7 +17348,7 @@
     };
 
     // $ANTLR start "rule_key"
-    // src/main/resources/org/drools/lang/DRL.g:1582:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1951: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);
@@ -14868,14 +17361,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1583:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1583:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952: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_key5525); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7676); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14894,7 +17387,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1585:3: -> VK_RULE[$id]
+            // 1954:3: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
@@ -14929,7 +17422,7 @@
     };
 
     // $ANTLR start "extend_key"
-    // src/main/resources/org/drools/lang/DRL.g:1588:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1957: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);
@@ -14942,14 +17435,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1589:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1589:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958: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_key5552); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7703); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14968,7 +17461,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1591:3: -> VK_EXTEND[$id]
+            // 1960:3: -> VK_EXTEND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
@@ -15003,7 +17496,7 @@
     };
 
     // $ANTLR start "template_key"
-    // src/main/resources/org/drools/lang/DRL.g:1594:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1963: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);
@@ -15016,14 +17509,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1595:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1595:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964: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_key5579); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7730); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15042,7 +17535,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1597:3: -> VK_TEMPLATE[$id]
+            // 1966:3: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
@@ -15077,7 +17570,7 @@
     };
 
     // $ANTLR start "query_key"
-    // src/main/resources/org/drools/lang/DRL.g:1600:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1969: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);
@@ -15090,14 +17583,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1601:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1601:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970: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_key5606); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7757); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15116,7 +17609,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1603:3: -> VK_QUERY[$id]
+            // 1972:3: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
@@ -15151,7 +17644,7 @@
     };
 
     // $ANTLR start "declare_key"
-    // src/main/resources/org/drools/lang/DRL.g:1606:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1975: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);
@@ -15164,14 +17657,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1607:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1607:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976: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_key5633); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7784); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15190,7 +17683,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1609:3: -> VK_DECLARE[$id]
+            // 1978:3: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
@@ -15225,7 +17718,7 @@
     };
 
     // $ANTLR start "function_key"
-    // src/main/resources/org/drools/lang/DRL.g:1612:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1981: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);
@@ -15238,14 +17731,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1613:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1613:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982: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_key5660); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7811); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15264,7 +17757,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1615:3: -> VK_FUNCTION[$id]
+            // 1984:3: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
@@ -15299,7 +17792,7 @@
     };
 
     // $ANTLR start "global_key"
-    // src/main/resources/org/drools/lang/DRL.g:1618:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1987: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);
@@ -15312,14 +17805,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1619:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1619:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988: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_key5687); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7838); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15338,7 +17831,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1621:3: -> VK_GLOBAL[$id]
+            // 1990:3: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
@@ -15373,7 +17866,7 @@
     };
 
     // $ANTLR start "eval_key"
-    // src/main/resources/org/drools/lang/DRL.g:1624:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993: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);
@@ -15386,14 +17879,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1625:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1625:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994: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_key5714); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7865); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15412,7 +17905,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1627:3: -> VK_EVAL[$id]
+            // 1996:3: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
@@ -15447,7 +17940,7 @@
     };
 
     // $ANTLR start "not_key"
-    // src/main/resources/org/drools/lang/DRL.g:1630:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999: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);
@@ -15460,14 +17953,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1631:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1631:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000: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_key5741); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key7892); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15486,7 +17979,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1633:3: -> VK_NOT[$id]
+            // 2002:3: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
@@ -15521,7 +18014,7 @@
     };
 
     // $ANTLR start "in_key"
-    // src/main/resources/org/drools/lang/DRL.g:1636:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005: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);
@@ -15534,14 +18027,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1637:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1637:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006: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_key5768); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key7919); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15560,7 +18053,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1639:3: -> VK_IN[$id]
+            // 2008:3: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
@@ -15595,7 +18088,7 @@
     };
 
     // $ANTLR start "or_key"
-    // src/main/resources/org/drools/lang/DRL.g:1642:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011: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);
@@ -15608,14 +18101,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1643:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1643:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012: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_key5795); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key7946); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15634,7 +18127,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1645:3: -> VK_OR[$id]
+            // 2014:3: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
@@ -15669,7 +18162,7 @@
     };
 
     // $ANTLR start "and_key"
-    // src/main/resources/org/drools/lang/DRL.g:1648:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017: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);
@@ -15682,14 +18175,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1649:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1649:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018: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_key5822); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key7973); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15708,7 +18201,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1651:3: -> VK_AND[$id]
+            // 2020:3: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
@@ -15737,13 +18230,161 @@
     }
     // $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:2023: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:2024:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2024: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_key8003); 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();
+            // 2026: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:2029: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:2030:3: ({...}? =>id= ID -> VK_XOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2030: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_key8039); 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();
+            // 2032: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"
-    // src/main/resources/org/drools/lang/DRL.g:1654:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2036: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);
@@ -15756,14 +18397,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1655:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1655:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2037:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2037: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_key5849); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8075); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15782,7 +18423,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1657:3: -> VK_EXISTS[$id]
+            // 2039:3: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
@@ -15817,7 +18458,7 @@
     };
 
     // $ANTLR start "forall_key"
-    // src/main/resources/org/drools/lang/DRL.g:1660:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2042: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);
@@ -15830,14 +18471,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1661:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1661:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2043:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2043: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_key5876); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8102); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15856,7 +18497,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1663:3: -> VK_FORALL[$id]
+            // 2045:3: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
@@ -15885,13 +18526,87 @@
     }
     // $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:2048: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:2049:3: ({...}? =>id= ID -> VK_FORANY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2049: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_key8131); 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();
+            // 2051: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"
-    // src/main/resources/org/drools/lang/DRL.g:1666:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054: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);
@@ -15904,14 +18619,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1667:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1667:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055: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_key5903); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8164); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15930,7 +18645,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1669:3: -> VK_ACTION[$id]
+            // 2057:3: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
@@ -15965,7 +18680,7 @@
     };
 
     // $ANTLR start "reverse_key"
-    // src/main/resources/org/drools/lang/DRL.g:1672:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060: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);
@@ -15978,14 +18693,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1673:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1673:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061: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_key5930); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8191); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16004,7 +18719,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1675:3: -> VK_REVERSE[$id]
+            // 2063:3: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
@@ -16039,7 +18754,7 @@
     };
 
     // $ANTLR start "result_key"
-    // src/main/resources/org/drools/lang/DRL.g:1678:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2066: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);
@@ -16052,14 +18767,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1679:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1679:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067: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_key5957); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8218); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16078,7 +18793,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1681:3: -> VK_RESULT[$id]
+            // 2069:3: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
@@ -16113,7 +18828,7 @@
     };
 
     // $ANTLR start "end_key"
-    // src/main/resources/org/drools/lang/DRL.g:1684:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2072: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);
@@ -16126,14 +18841,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1685:2: ({...}? =>id= ID -> VK_END[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1685:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073:2: ({...}? =>id= ID -> VK_END[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073: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_key5984); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8245); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16152,7 +18867,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1687:3: -> VK_END[$id]
+            // 2075:3: -> VK_END[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_END, id));
 
@@ -16187,7 +18902,7 @@
     };
 
     // $ANTLR start "not_end_key"
-    // src/main/resources/org/drools/lang/DRL.g:1690:1: not_end_key : {...}? =>any= . ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2078: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);
@@ -16199,8 +18914,8 @@
         Object any_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1691:2: ({...}? =>any= . )
-            // src/main/resources/org/drools/lang/DRL.g:1691:4: {...}? =>any= .
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:2: ({...}? =>any= . )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:4: {...}? =>any= .
             {
             root_0 = (Object)adaptor.nil();
 
@@ -16246,7 +18961,7 @@
     };
 
     // $ANTLR start "init_key"
-    // src/main/resources/org/drools/lang/DRL.g:1695:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2083: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);
@@ -16259,14 +18974,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1696:2: ({...}? =>id= ID -> VK_INIT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1696:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084: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_key6031); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8292); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16285,7 +19000,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1698:3: -> VK_INIT[$id]
+            // 2086:3: -> VK_INIT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_INIT, id));
 
@@ -16314,156 +19029,901 @@
     }
     // $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:2090: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:2091:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2091: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_key8323); 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();
+            // 2093: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:2097: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:2098:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2098: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_key8361); 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();
+            // 2100: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:2104: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:2105:3: ({...}? =>id= ID -> VK_VERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2105: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_key8400); 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();
+            // 2107: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 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:2121: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:2122:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122: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_key8450); 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();
+            // 2124: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:2127: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:2128:3: ({...}? =>id= ID -> VK_CUT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2128: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_key8498); 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();
+            // 2130: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:2133: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:2134:3: ({...}? =>id= ID -> VK_TYPE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2134: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_key8535); 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();
+            // 2136: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:2139: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:2140:3: ({...}? =>id= ID -> VK_PARAMS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2140: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_key8572); 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();
+            // 2142: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:2150: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 APPROX355=null;
+
+        Object APPROX355_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:2151:3: ( APPROX -> VK_APPROX )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:5: APPROX
+            {
+            APPROX355=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8613); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_APPROX.add(APPROX355);
+
+
+
+            // 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();
+            // 2151: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 {   
-        // src/main/resources/org/drools/lang/DRL.g:810:5: ( LEFT_PAREN or_key )
-        // src/main/resources/org/drools/lang/DRL.g:810:6: LEFT_PAREN or_key
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:5: ( LEFT_PAREN or_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:6: LEFT_PAREN or_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2067); if (state.failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred1_DRL2069);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2304); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2306);
         or_key();
 
         state._fsp--;
         if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:24: ( constr_parameters )?
+        int alt127=2;
+        int LA127_0 = input.LA(1);
 
+        if ( (LA127_0==AT) ) {
+            alt127=1;
         }
+        switch (alt127) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:24: constr_parameters
+                {
+                pushFollow(FOLLOW_constr_parameters_in_synpred1_DRL2308);
+                constr_parameters();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred1_DRL
 
     // $ANTLR start synpred2_DRL
     public final void synpred2_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:818:5: ( or_key | DOUBLE_PIPE )
-        int alt107=2;
-        int LA107_0 = input.LA(1);
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:5: LEFT_PAREN equiv_key ( constr_parameters )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2380); if (state.failed) return ;
+        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2382);
+        equiv_key();
 
-        if ( (LA107_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            alt107=1;
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:26: ( constr_parameters )?
+        int alt128=2;
+        int LA128_0 = input.LA(1);
+
+        if ( (LA128_0==AT) ) {
+            alt128=1;
         }
-        else if ( (LA107_0==DOUBLE_PIPE) ) {
-            alt107=2;
+        switch (alt128) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:26: constr_parameters
+                {
+                pushFollow(FOLLOW_constr_parameters_in_synpred2_DRL2384);
+                constr_parameters();
+
+                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:889:4: ( LEFT_PAREN xor_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:5: LEFT_PAREN xor_key ( constr_parameters )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2485); if (state.failed) return ;
+        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2487);
+        xor_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:24: ( constr_parameters )?
+        int alt129=2;
+        int LA129_0 = input.LA(1);
+
+        if ( (LA129_0==AT) ) {
+            alt129=1;
+        }
+        switch (alt129) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:24: constr_parameters
+                {
+                pushFollow(FOLLOW_constr_parameters_in_synpred3_DRL2489);
+                constr_parameters();
+
+                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:901:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )
+        int alt131=2;
+        int LA131_0 = input.LA(1);
+
+        if ( (LA131_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            alt131=1;
+        }
+        else if ( (LA131_0==DOUBLE_PIPE) ) {
+            alt131=2;
+        }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 107, 0, input);
+                new NoViableAltException("", 131, 0, input);
 
             throw nvae;
         }
-        switch (alt107) {
+        switch (alt131) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:818:6: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:6: or_key ( constr_parameters )?
                 {
-                pushFollow(FOLLOW_or_key_in_synpred2_DRL2136);
+                pushFollow(FOLLOW_or_key_in_synpred4_DRL2605);
                 or_key();
 
                 state._fsp--;
                 if (state.failed) return ;
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:14: ( constr_parameters )?
+                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:901:14: constr_parameters
+                        {
+                        pushFollow(FOLLOW_constr_parameters_in_synpred4_DRL2608);
+                        constr_parameters();
+
+                        state._fsp--;
+                        if (state.failed) return ;
+
+                        }
+                        break;
+
+                }
+
+
+                }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:818:13: DOUBLE_PIPE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:34: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2138); if (state.failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2612); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred2_DRL
+    // $ANTLR end synpred4_DRL
 
-    // $ANTLR start synpred3_DRL
-    public final void synpred3_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:827:5: ( LEFT_PAREN and_key )
-        // src/main/resources/org/drools/lang/DRL.g:827:6: LEFT_PAREN and_key
+    // $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:924:5: ( LEFT_PAREN and_key ( square_chunk )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:6: LEFT_PAREN and_key ( square_chunk )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2195); if (state.failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred3_DRL2197);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred5_DRL2743); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred5_DRL2745);
         and_key();
 
         state._fsp--;
         if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:25: ( square_chunk )?
+        int alt132=2;
+        int LA132_0 = input.LA(1);
 
+        if ( (LA132_0==LEFT_SQUARE) ) {
+            alt132=1;
         }
+        switch (alt132) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:25: square_chunk
+                {
+                pushFollow(FOLLOW_square_chunk_in_synpred5_DRL2747);
+                square_chunk();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
     }
-    // $ANTLR end synpred3_DRL
+    // $ANTLR end synpred5_DRL
 
-    // $ANTLR start synpred4_DRL
-    public final void synpred4_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:835:5: ( and_key | DOUBLE_AMPER )
-        int alt108=2;
-        int LA108_0 = input.LA(1);
+    // $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:937:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )
+        int alt134=2;
+        int LA134_0 = input.LA(1);
 
-        if ( (LA108_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
-            alt108=1;
+        if ( (LA134_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+            alt134=1;
         }
-        else if ( (LA108_0==DOUBLE_AMPER) ) {
-            alt108=2;
+        else if ( (LA134_0==DOUBLE_AMPER) ) {
+            alt134=2;
         }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 108, 0, input);
+                new NoViableAltException("", 134, 0, input);
 
             throw nvae;
         }
-        switch (alt108) {
+        switch (alt134) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:835:6: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:6: and_key ( square_chunk )?
                 {
-                pushFollow(FOLLOW_and_key_in_synpred4_DRL2265);
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2841);
                 and_key();
 
                 state._fsp--;
                 if (state.failed) return ;
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:14: ( square_chunk )?
+                int alt133=2;
+                int LA133_0 = input.LA(1);
 
+                if ( (LA133_0==LEFT_SQUARE) ) {
+                    alt133=1;
                 }
+                switch (alt133) {
+                    case 1 :
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:14: square_chunk
+                        {
+                        pushFollow(FOLLOW_square_chunk_in_synpred6_DRL2843);
+                        square_chunk();
+
+                        state._fsp--;
+                        if (state.failed) return ;
+
+                        }
+                        break;
+
+                }
+
+
+                }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:835:14: DOUBLE_AMPER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:29: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2267); if (state.failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2847); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred4_DRL
+    // $ANTLR end synpred6_DRL
 
-    // $ANTLR start synpred5_DRL
-    public final void synpred5_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:852:4: ( SEMICOLON )
-        // src/main/resources/org/drools/lang/DRL.g:852:5: SEMICOLON
+    // $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:958:4: ( SEMICOLON )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2390); if (state.failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred7_DRL3007); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred5_DRL
+    // $ANTLR end synpred7_DRL
 
-    // $ANTLR start synpred6_DRL
-    public final void synpred6_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:858:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:858:13: LEFT_PAREN ( or_key | and_key )
+    // $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:964:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2427); if (state.failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:858:24: ( or_key | and_key )
-        int alt109=2;
-        int LA109_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3044); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:24: ( or_key | and_key )
+        int alt135=2;
+        int LA135_0 = input.LA(1);
 
-        if ( (LA109_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
-            int LA109_1 = input.LA(2);
+        if ( (LA135_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA135_1 = input.LA(2);
 
             if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
-                alt109=1;
+                alt135=1;
             }
             else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
-                alt109=2;
+                alt135=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 109, 1, input);
+                    new NoViableAltException("", 135, 1, input);
 
                 throw nvae;
             }
@@ -16471,15 +19931,15 @@
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 109, 0, input);
+                new NoViableAltException("", 135, 0, input);
 
             throw nvae;
         }
-        switch (alt109) {
+        switch (alt135) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:858:25: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred6_DRL2430);
+                pushFollow(FOLLOW_or_key_in_synpred8_DRL3047);
                 or_key();
 
                 state._fsp--;
@@ -16488,9 +19948,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:858:32: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred6_DRL2432);
+                pushFollow(FOLLOW_and_key_in_synpred8_DRL3049);
                 and_key();
 
                 state._fsp--;
@@ -16504,31 +19964,31 @@
 
         }
     }
-    // $ANTLR end synpred6_DRL
+    // $ANTLR end synpred8_DRL
 
-    // $ANTLR start synpred7_DRL
-    public final void synpred7_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:874:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:874:6: LEFT_PAREN ( or_key | and_key )
+    // $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:980:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2555); if (state.failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:874:17: ( or_key | and_key )
-        int alt110=2;
-        int LA110_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3172); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:17: ( or_key | and_key )
+        int alt136=2;
+        int LA136_0 = input.LA(1);
 
-        if ( (LA110_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
-            int LA110_1 = input.LA(2);
+        if ( (LA136_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA136_1 = input.LA(2);
 
             if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
-                alt110=1;
+                alt136=1;
             }
             else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
-                alt110=2;
+                alt136=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 110, 1, input);
+                    new NoViableAltException("", 136, 1, input);
 
                 throw nvae;
             }
@@ -16536,15 +19996,15 @@
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 110, 0, input);
+                new NoViableAltException("", 136, 0, input);
 
             throw nvae;
         }
-        switch (alt110) {
+        switch (alt136) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:874:18: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred7_DRL2558);
+                pushFollow(FOLLOW_or_key_in_synpred9_DRL3175);
                 or_key();
 
                 state._fsp--;
@@ -16553,9 +20013,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:874:25: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred7_DRL2560);
+                pushFollow(FOLLOW_and_key_in_synpred9_DRL3177);
                 and_key();
 
                 state._fsp--;
@@ -16569,26 +20029,58 @@
 
         }
     }
-    // $ANTLR end synpred7_DRL
+    // $ANTLR end synpred9_DRL
 
-    // $ANTLR start synpred8_DRL
-    public final void synpred8_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1051:5: ( LEFT_PAREN )
-        // src/main/resources/org/drools/lang/DRL.g:1051:6: LEFT_PAREN
+    // $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:1173:5: ( LEFT_PAREN )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3388); if (state.failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL4133); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred8_DRL
+    // $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:1272:5: ( and_constr SINGLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:6: and_constr SINGLE_PIPE
+        {
+        pushFollow(FOLLOW_and_constr_in_synpred11_DRL4675);
+        and_constr();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred11_DRL4677); 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:1302:5: ( unary_constr SINGLE_AMPER )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:6: unary_constr SINGLE_AMPER
+        {
+        pushFollow(FOLLOW_unary_constr_in_synpred12_DRL5016);
+        unary_constr();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred12_DRL5018); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred12_DRL
+
     // Delegated rules
 
-    public final boolean synpred3_DRL() {
+    public final boolean synpred1_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred3_DRL_fragment(); // can never throw exception
+            synpred1_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -16598,11 +20090,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred2_DRL() {
+    public final boolean synpred5_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred2_DRL_fragment(); // can never throw exception
+            synpred5_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -16612,11 +20104,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred5_DRL() {
+    public final boolean synpred11_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred5_DRL_fragment(); // can never throw exception
+            synpred11_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -16626,11 +20118,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred7_DRL() {
+    public final boolean synpred9_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred7_DRL_fragment(); // can never throw exception
+            synpred9_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -16654,11 +20146,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred1_DRL() {
+    public final boolean synpred10_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred1_DRL_fragment(); // can never throw exception
+            synpred10_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -16668,6 +20160,34 @@
         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();
@@ -16682,6 +20202,20 @@
         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();
@@ -16696,6 +20230,20 @@
         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);
@@ -16704,32 +20252,33 @@
     protected DFA17 dfa17 = new DFA17(this);
     protected DFA29 dfa29 = new DFA29(this);
     protected DFA38 dfa38 = new DFA38(this);
-    protected DFA71 dfa71 = new DFA71(this);
-    protected DFA73 dfa73 = new DFA73(this);
+    protected DFA62 dfa62 = new DFA62(this);
+    protected DFA81 dfa81 = new DFA81(this);
     protected DFA83 dfa83 = new DFA83(this);
-    protected DFA88 dfa88 = new DFA88(this);
+    protected DFA97 dfa97 = new DFA97(this);
+    protected DFA105 dfa105 = new DFA105(this);
     static final String DFA1_eotS =
         "\12\uffff";
     static final String DFA1_eofS =
         "\1\2\11\uffff";
     static final String DFA1_minS =
-        "\2\122\4\uffff\1\0\3\uffff";
+        "\2\151\3\uffff\1\0\4\uffff";
     static final String DFA1_maxS =
-        "\1\122\1\163\4\uffff\1\0\3\uffff";
+        "\1\151\1\u008c\3\uffff\1\0\4\uffff";
     static final String DFA1_acceptS =
-        "\2\uffff\4\2\1\uffff\2\2\1\1";
+        "\2\uffff\3\2\1\uffff\3\2\1\1";
     static final String DFA1_specialS =
-        "\1\uffff\1\0\4\uffff\1\1\3\uffff}>";
+        "\1\uffff\1\1\3\uffff\1\0\4\uffff}>";
     static final String[] DFA1_transitionS = {
             "\1\1",
-            "\1\6\2\uffff\1\7\1\5\6\uffff\1\10\1\4\24\uffff\1\3",
+            "\1\5\2\uffff\1\4\1\7\6\uffff\1\10\1\6\26\uffff\1\3",
             "",
             "",
             "",
-            "",
             "\1\uffff",
             "",
             "",
+            "",
             ""
     };
 
@@ -16763,48 +20312,48 @@
             this.transition = DFA1_transition;
         }
         public String getDescription() {
-            return "396:4: ( package_statement )?";
+            return "434: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 LA1_5 = input.LA(1);
 
                          
-                        int index1_1 = input.index();
+                        int index1_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA1_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
 
-                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
+                        else if ( (true) ) {s = 8;}
 
-                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {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);
+                        input.seek(index1_5);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA1_6 = input.LA(1);
+                        int LA1_1 = input.LA(1);
 
                          
-                        int index1_6 = input.index();
+                        int index1_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+                        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 ( (true) ) {s = 8;}
+                        else if ( (LA1_1==STRING) ) {s = 4;}
 
+                        else if ( (LA1_1==ID) ) {s = 5;}
+
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 6;}
+
+                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 7;}
+
+                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 8;}
+
                          
-                        input.seek(index1_6);
+                        input.seek(index1_1);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -16820,19 +20369,17 @@
     static final String DFA5_eofS =
         "\20\uffff";
     static final String DFA5_minS =
-        "\2\122\3\uffff\2\0\11\uffff";
+        "\2\151\1\uffff\2\0\13\uffff";
     static final String DFA5_maxS =
-        "\1\122\1\163\3\uffff\2\0\11\uffff";
+        "\1\151\1\u008c\1\uffff\2\0\13\uffff";
     static final String DFA5_acceptS =
-        "\2\uffff\3\1\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11";
+        "\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\3\uffff\1\1\1\2\11\uffff}>";
+        "\1\uffff\1\0\1\uffff\1\1\1\2\13\uffff}>";
     static final String[] DFA5_transitionS = {
             "\1\1",
-            "\1\5\2\uffff\1\6\1\4\6\uffff\1\3\1\7\24\uffff\1\2",
+            "\1\3\2\uffff\1\4\1\6\6\uffff\1\5\1\7\26\uffff\1\2",
             "",
-            "",
-            "",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -16843,6 +20390,8 @@
             "",
             "",
             "",
+            "",
+            "",
             ""
     };
 
@@ -16876,7 +20425,7 @@
             this.transition = DFA5_transition;
         }
         public String getDescription() {
-            return "454:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+            return "492: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;
@@ -16889,15 +20438,15 @@
                         int index5_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
+                        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==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 3;}
+                        else if ( (LA5_1==ID) && ((!((((((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, "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))))||((validateIden!
 tifierKey(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)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftK
eywords.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, 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, "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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPL!
 ATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((valida
teIdentifierKey(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)))||((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, 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, Dro!
 olsSoftKeywords.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, "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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLA!
 RE))))||((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(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifier
Key(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, "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.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)))||(((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(Drools!
 SoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "f
unction") ))&&((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, 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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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.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)))||(((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(DroolsSoftK!
 eywords.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.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(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKe!
 ywords.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, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((v!
 alidateIdentifierKey(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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey!
 (DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKey
words.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((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, Dro!
 olsSoftKeywords.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)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof!
 tKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBA
L)))||((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)))||((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)))||((validateId!
 entifierKey(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)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dro
olsSoftKeywords.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))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLAR!
 E)))&&((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)))||((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(DroolsSoftKeywor!
 ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((v
alidateIdentifierKey(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))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((val!
 idateLT(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)))||((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(Dro!
 olsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeyword
s.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.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(DroolsSoftKeyw!
 ords.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, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI
dentifierKey(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)))||((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(DroolsSoftKeywords.IMPORT))))||((validateIdenti!
 fierKey(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)))||(((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(DroolsSoftKeyw
ords.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, 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.FU!
 NCTION))))))||!((((((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)))||(((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)))||(((validat
eLT(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)))||(((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") ))&&((validat!
 eIdentifierKey(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(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(DroolsSoftKeywo
rds.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)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "functi!
 on") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((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)))&&((validateIdentifier
Key(DroolsSoftKeywords.DECLARE))))||((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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSo!
 ftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||((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, "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))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali!
 dateIdentifierKey(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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validat
eLT(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)))||(((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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsS!
 oftKeywords.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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECL!
 ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((vali
dateLT(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, "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.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(DroolsSoftKeywords.IMPORT))))||((valida!
 teLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drools
SoftKeywords.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.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBA!
 L)))||((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))))||((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))))||((validat
eIdentifierKey(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))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsS!
 oftKeywords.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(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSof!
 tKeywords.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)))||(((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.QU!
 ERY)))||(((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, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIden
tifierKey(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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && va!
 lidateLT(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(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.GLOBAL)))||((validateIdentifierKey(Drools!
 SoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPO
RT)))||(((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, "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)))||((v!
 alidateIdentifierKey(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(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)))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drool
sSoftKeywords.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)))||((validateIdentifierKey(DroolsSof!
 tKeywords.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.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(DroolsSoftKeywo!
 rds.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valid
ateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((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.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)))||(((validateL!
 T(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, "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)))&&((validateIden!
 tifierKey(DroolsSoftKeywords.DECLARE))))||!((((((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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeyw!
 ords.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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLA!
 RE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((vali
dateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateId!
 entifierKey(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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifi!
 erKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoft
Keywords.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, "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(DroolsSoftKeyword!
 s.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.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)))||((validateIde
ntifierKey(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.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))))||((validateIdentifier!
 Key(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)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(D!
 roolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECL
ARE)))&&((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)))||((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, 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.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((va!
 lidateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent
ifierKey(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))))||((validateIdentifierK!
 ey(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, 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(Droo!
 lsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.
FUNCTION))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((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)))||((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.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))))||((valida!
 teIdentifierKey(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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, Drools!
 SoftKeywords.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)))||((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(DroolsSoftKeyw
ords.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.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)))||((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(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, 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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywor!
 ds.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.FUNCTI!
 ON))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida
teIdentifierKey(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.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(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((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") ))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSo
ftKeywords.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))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.D!
 ECLARE))))||((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)))||(((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))))||((validateIdenti
fierKey(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))))||((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)))||((validateIdentifier!
 Key(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))))||(((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, D!
 roolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywor
ds.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, 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)))||((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)))&&((validateIdenti
fierKey(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.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((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)))||((validateIdentifier!
 Key(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, 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, "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.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)))||((validate!
 IdentifierKey(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, "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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKe
ywords.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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsS!
 oftKeywords.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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL!
 )))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateL
T(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)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateLT(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, "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.G
LOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))))) {s = 3;}
 
-                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {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.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.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey!
 (DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.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)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validate!
 IdentifierKey(DroolsSoftKeywords.QUERY))))))||((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.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsS!
 oftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.EN
TAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, 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.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.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(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==ID) && (((((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, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((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, 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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((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") && vali
dateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKey!
 words.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((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(DroolsSoftKeywords.IMPORT)))))))||!(((((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)))))))|
|!(((((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((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))))))||!(((((!
 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, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((valid!
 ateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drools
SoftKeywords.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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKey!
 words.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))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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.TEMPLAT!
 E))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((v
alidateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateI!
 dentifierKey(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)))))))||!((((((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)))||(((validateLT(1, !
 "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Dro
olsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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))))||((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)))||((validateId
entifierKey(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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKe!
 y(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.IMPORT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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(DroolsSoft!
 Keywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.Q
UERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))||(((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)))||((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)))||(((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)))||((va!
 lidateIdentifierKey(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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKe!
 ywords.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))))))||!(((((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))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateId!
 entifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((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)))||((validateId!
 entifierKey(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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Droo!
 lsSoftKeywords.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)))))))||!(((((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)))||(((validateLT(1, DroolsSoftKeyword!
 s.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||
(((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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))!
 ))||((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, 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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drool
sSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && valida!
 teLT(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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((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(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(DroolsSoftKeywords.IMPORT)))))))||!(((((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validate!
 IdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.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.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSof!
 tKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((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)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywo!
 rds.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((va
lidateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywor
ds.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((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)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoft!
 Keywords.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)))||(((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)
)))||(((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)))||((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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftK
eywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && v!
 alidateLT(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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE!
 ))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valid
ateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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(D!
 roolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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))))||((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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1!
 , DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && valida
teLT(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)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSo!
 ftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLAR!
 E))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((v
alidateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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))))||((validateI!
 dentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSo!
 ftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "fun
ction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!((((((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(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateI!
 dentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Dro
olsSoftKeywords.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)))||(((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))))||((validateIdentifierKey(Dr!
 oolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((val
idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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))))||((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)))||((validateIde!
 ntifierKey(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)))||((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)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && valid
ateLT(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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoft!
 Keywords.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))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&!
 ((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIden
tifierKey(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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "imp!
 ort") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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(Drools!
 SoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOB
AL)))||(((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)))||(((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)))||((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.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((val!
 idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Droo
lsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSof!
 tKeywords.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)))||((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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateL!
 T(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.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentif!
 ierKey(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)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Drools!
 SoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)
)))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||((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)))||(((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, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((!
 validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie
rKey(DroolsSoftKeywords.GLOBAL)))||((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, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && !
 validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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.TEMPLATE)))||(((validateLT(1, DroolsSoftK!
 eywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE
)))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!(((((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, 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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLAR!
 E))))||((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))))||!(((((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)))||((validate
IdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, !
 DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((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))))))||!(((((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") && vali!
 dateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.I
MPORT)))))))||!(((((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)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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))))||((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))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateL
T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))||((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)))||((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))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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, DroolsSoftKey!
 words.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.Q
UERY)))||((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.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)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((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)))&&((validateIde!
 ntifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, Drools
SoftKeywords.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))))))||!(((((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKey!
 words.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(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)))))))||!((((((validateLT(1, "import") && valida!
 teLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMP
ORT))))||((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))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validat!
 eIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))))) {s = 5;}
+                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
 
-                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((vali!
 dateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, !
 DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords!
 .QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1
, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY))
)||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((!
 (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdenti
fierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKey!
 words.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateId!
 entifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, Dr!
 oolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSof
tKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.Q!
 UERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(!
 (validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, 
DroolsSoftKeywords.TEMPLATE))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoft!
 Keywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((va
lidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdent!
 ifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords
.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validate!
 IdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof
tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.T!
 EMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))!
 )))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida
teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))))) {s = 6;}
+                        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;}
 
@@ -16906,10 +20455,10 @@
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA5_5 = input.LA(1);
+                        int LA5_3 = input.LA(1);
 
                          
-                        int index5_5 = input.index();
+                        int index5_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) ) {s = 8;}
@@ -16924,31 +20473,31 @@
 
                         else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
 
-                        else if ( (!((((((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(DroolsSoftKeywords.IMPORT)))))))) ) {s = 14;}
+                        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_5);
+                        input.seek(index5_3);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA5_6 = input.LA(1);
+                        int LA5_4 = input.LA(1);
 
                          
-                        int index5_6 = input.index();
+                        int index5_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 7;}
+                        if ( ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) ) {s = 7;}
 
                         else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 12;}
 
-                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))) ) {s = 14;}
+                        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_6);
+                        input.seek(index5_4);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -16960,34 +20509,39 @@
         }
     }
     static final String DFA12_eotS =
-        "\16\uffff";
+        "\23\uffff";
     static final String DFA12_eofS =
-        "\16\uffff";
+        "\23\uffff";
     static final String DFA12_minS =
-        "\2\122\1\uffff\1\122\1\uffff\1\122\1\157\1\122\1\157\2\122\1\126"+
-        "\1\157\1\122";
+        "\2\151\1\uffff\1\151\1\uffff\1\151\1\4\3\151\2\u0088\1\151\1\u0088"+
+        "\1\155\1\151\1\u0088\1\151\1\155";
     static final String DFA12_maxS =
-        "\1\126\1\130\1\uffff\1\156\1\uffff\1\156\1\157\1\122\1\157\3\156"+
-        "\1\157\1\156";
+        "\1\155\1\157\1\uffff\1\u0087\1\uffff\1\151\1\u0097\3\u0087\2\u0088"+
+        "\1\u0087\1\u0088\2\u0087\1\u0088\2\u0087";
     static final String DFA12_acceptS =
-        "\2\uffff\1\2\1\uffff\1\1\11\uffff";
+        "\2\uffff\1\2\1\uffff\1\1\16\uffff";
     static final String DFA12_specialS =
-        "\16\uffff}>";
+        "\23\uffff}>";
     static final String[] DFA12_transitionS = {
             "\1\2\3\uffff\1\1",
             "\1\3\3\uffff\1\2\1\uffff\1\4",
             "",
-            "\1\5\1\7\2\uffff\1\2\2\4\1\uffff\1\2\23\uffff\1\6",
+            "\1\7\1\5\2\uffff\1\2\2\4\2\2\25\uffff\1\6",
             "",
-            "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\23\uffff\1\10",
-            "\1\11",
-            "\1\12",
-            "\1\13",
-            "\1\4\3\uffff\1\2\2\4\25\uffff\1\6",
-            "\1\4\1\7\2\uffff\1\2\27\uffff\1\14",
-            "\1\2\2\4\25\uffff\1\10",
-            "\1\15",
-            "\1\4\3\uffff\1\2\27\uffff\1\14"
+            "\1\10",
+            "\u0084\2\1\11\17\2",
+            "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\12",
+            "\1\4\1\5\2\uffff\1\2\31\uffff\1\13",
+            "\1\14\3\uffff\1\2\2\4\1\2\26\uffff\1\15",
+            "\1\16",
+            "\1\17",
+            "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\20",
+            "\1\21",
+            "\1\2\2\4\27\uffff\1\12",
+            "\1\4\3\uffff\1\2\31\uffff\1\13",
+            "\1\22",
+            "\1\4\3\uffff\1\2\2\4\27\uffff\1\15",
+            "\1\2\2\4\27\uffff\1\20"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -17020,7 +20574,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "525:3: ( parameters )?";
+            return "563:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -17028,20 +20582,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\122\1\uffff\1\157\1\uffff\1\122";
+        "\2\151\1\uffff\1\u0088\1\uffff\1\151";
     static final String DFA17_maxS =
-        "\1\122\1\156\1\uffff\1\157\1\uffff\1\156";
+        "\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\25\uffff\1\3",
+            "\2\2\3\uffff\2\4\27\uffff\1\3",
             "",
             "\1\5",
             "",
-            "\1\2\4\uffff\2\4\25\uffff\1\3"
+            "\1\2\4\uffff\2\4\27\uffff\1\3"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -17074,7 +20628,7 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "550:4: ( data_type )?";
+            return "588:4: ( data_type )?";
         }
     }
     static final String DFA29_eotS =
@@ -17082,24 +20636,24 @@
     static final String DFA29_eofS =
         "\12\uffff";
     static final String DFA29_minS =
-        "\2\122\3\uffff\1\0\4\uffff";
+        "\2\151\2\uffff\1\0\5\uffff";
     static final String DFA29_maxS =
-        "\1\160\1\163\3\uffff\1\0\4\uffff";
+        "\1\u0089\1\u008c\2\uffff\1\0\5\uffff";
     static final String DFA29_acceptS =
-        "\2\uffff\3\2\1\uffff\1\1\3\2";
+        "\2\uffff\2\2\1\uffff\3\2\1\1\1\2";
     static final String DFA29_specialS =
-        "\1\0\1\2\3\uffff\1\1\4\uffff}>";
+        "\1\2\1\0\2\uffff\1\1\5\uffff}>";
     static final String[] DFA29_transitionS = {
-            "\1\1\6\uffff\1\2\2\uffff\1\2\23\uffff\1\2",
-            "\1\6\2\uffff\1\5\1\10\3\uffff\1\4\2\uffff\1\11\1\7\24\uffff"+
+            "\1\1\6\uffff\1\2\2\uffff\1\2\25\uffff\1\2",
+            "\1\10\2\uffff\1\4\1\6\3\uffff\1\11\2\uffff\1\5\1\7\26\uffff"+
             "\1\3",
             "",
             "",
-            "",
             "\1\uffff",
             "",
             "",
             "",
+            "",
             ""
     };
 
@@ -17133,65 +20687,65 @@
             this.transition = DFA29_transition;
         }
         public String getDescription() {
-            return "640:3: ( extend_key rule_id )?";
+            return "678: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_0 = input.LA(1);
+                        int LA29_1 = input.LA(1);
 
                          
-                        int index29_0 = input.index();
+                        int index29_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA29_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {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_0==AT||LA29_0==WHEN||LA29_0==THEN) ) {s = 2;}
+                        else if ( (LA29_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 4;}
 
+                        else if ( (LA29_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
+
+                        else if ( (LA29_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 6;}
+
+                        else if ( (LA29_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+
+                        else if ( (LA29_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 8;}
+
+                        else if ( (LA29_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
+
                          
-                        input.seek(index29_0);
+                        input.seek(index29_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA29_5 = input.LA(1);
+                        int LA29_4 = input.LA(1);
 
                          
-                        int index29_5 = input.index();
+                        int index29_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 6;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 8;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 9;}
+                        else if ( ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) ) {s = 9;}
 
                          
-                        input.seek(index29_5);
+                        input.seek(index29_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA29_1 = input.LA(1);
+                        int LA29_0 = input.LA(1);
 
                          
-                        int index29_1 = input.index();
+                        int index29_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA29_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+                        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_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 4;}
+                        else if ( (LA29_0==AT||LA29_0==WHEN||LA29_0==THEN) ) {s = 2;}
 
-                        else if ( (LA29_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 5;}
-
-                        else if ( (LA29_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 6;}
-
-                        else if ( (LA29_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
-
-                        else if ( (LA29_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 8;}
-
-                        else if ( (LA29_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 9;}
-
                          
-                        input.seek(index29_1);
+                        input.seek(index29_0);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -17203,17 +20757,18 @@
         }
     }
     static final String DFA38_eotS =
-        "\16\uffff";
+        "\21\uffff";
     static final String DFA38_eofS =
-        "\16\uffff";
+        "\21\uffff";
     static final String DFA38_minS =
-        "\1\122\1\0\14\uffff";
+        "\1\151\1\0\17\uffff";
     static final String DFA38_maxS =
-        "\1\122\1\0\14\uffff";
+        "\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";
+        "\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\14\uffff}>";
+        "\1\0\1\1\17\uffff}>";
     static final String[] DFA38_transitionS = {
             "\1\1",
             "\1\uffff",
@@ -17228,6 +20783,9 @@
             "",
             "",
             "",
+            "",
+            "",
+            "",
             ""
     };
 
@@ -17261,7 +20819,7 @@
             this.transition = DFA38_transition;
         }
         public String getDescription() {
-            return "709:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );";
+            return "747: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;
@@ -17274,7 +20832,7 @@
                         int index38_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA38_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {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);
@@ -17311,6 +20869,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;
@@ -17323,20 +20887,20 @@
             throw nvae;
         }
     }
-    static final String DFA71_eotS =
-        "\13\uffff";
-    static final String DFA71_eofS =
-        "\13\uffff";
-    static final String DFA71_minS =
-        "\1\121\1\0\11\uffff";
-    static final String DFA71_maxS =
-        "\1\160\1\0\11\uffff";
-    static final String DFA71_acceptS =
-        "\2\uffff\1\2\7\uffff\1\1";
-    static final String DFA71_specialS =
-        "\1\uffff\1\0\11\uffff}>";
-    static final String[] DFA71_transitionS = {
-            "\3\2\2\uffff\1\1\2\2\6\uffff\2\2\17\uffff\1\2",
+    static final String DFA62_eotS =
+        "\12\uffff";
+    static final String DFA62_eofS =
+        "\12\uffff";
+    static final String DFA62_minS =
+        "\1\151\1\0\10\uffff";
+    static final String DFA62_maxS =
+        "\1\155\1\0\10\uffff";
+    static final String DFA62_acceptS =
+        "\2\uffff\1\7\1\1\1\2\1\3\1\4\1\5\1\6\1\10";
+    static final String DFA62_specialS =
+        "\1\uffff\1\0\10\uffff}>";
+    static final String[] DFA62_transitionS = {
+            "\1\1\3\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -17345,83 +20909,92 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
-    static final short[] DFA71_eot = DFA.unpackEncodedString(DFA71_eotS);
-    static final short[] DFA71_eof = DFA.unpackEncodedString(DFA71_eofS);
-    static final char[] DFA71_min = DFA.unpackEncodedStringToUnsignedChars(DFA71_minS);
-    static final char[] DFA71_max = DFA.unpackEncodedStringToUnsignedChars(DFA71_maxS);
-    static final short[] DFA71_accept = DFA.unpackEncodedString(DFA71_acceptS);
-    static final short[] DFA71_special = DFA.unpackEncodedString(DFA71_specialS);
-    static final short[][] DFA71_transition;
+    static final short[] DFA62_eot = DFA.unpackEncodedString(DFA62_eotS);
+    static final short[] DFA62_eof = DFA.unpackEncodedString(DFA62_eofS);
+    static final char[] DFA62_min = DFA.unpackEncodedStringToUnsignedChars(DFA62_minS);
+    static final char[] DFA62_max = DFA.unpackEncodedStringToUnsignedChars(DFA62_maxS);
+    static final short[] DFA62_accept = DFA.unpackEncodedString(DFA62_acceptS);
+    static final short[] DFA62_special = DFA.unpackEncodedString(DFA62_specialS);
+    static final short[][] DFA62_transition;
 
     static {
-        int numStates = DFA71_transitionS.length;
-        DFA71_transition = new short[numStates][];
+        int numStates = DFA62_transitionS.length;
+        DFA62_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA71_transition[i] = DFA.unpackEncodedString(DFA71_transitionS[i]);
+            DFA62_transition[i] = DFA.unpackEncodedString(DFA62_transitionS[i]);
         }
     }
 
-    class DFA71 extends DFA {
+    class DFA62 extends DFA {
 
-        public DFA71(BaseRecognizer recognizer) {
+        public DFA62(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 71;
-            this.eot = DFA71_eot;
-            this.eof = DFA71_eof;
-            this.min = DFA71_min;
-            this.max = DFA71_max;
-            this.accept = DFA71_accept;
-            this.special = DFA71_special;
-            this.transition = DFA71_transition;
+            this.decisionNumber = 62;
+            this.eot = DFA62_eot;
+            this.eof = DFA62_eof;
+            this.min = DFA62_min;
+            this.max = DFA62_max;
+            this.accept = DFA62_accept;
+            this.special = DFA62_special;
+            this.transition = DFA62_transition;
         }
         public String getDescription() {
-            return "1051:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+            return "947: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 LA71_1 = input.LA(1);
+                        int LA62_1 = input.LA(1);
 
                          
-                        int index71_1 = input.index();
+                        int index62_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8_DRL()) ) {s = 10;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {s = 3;}
 
-                        else if ( (true) ) {s = 2;}
+                        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(index71_1);
+                        input.seek(index62_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 71, _s, input);
+                new NoViableAltException(getDescription(), 62, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA73_eotS =
-        "\14\uffff";
-    static final String DFA73_eofS =
-        "\14\uffff";
-    static final String DFA73_minS =
-        "\1\121\1\0\12\uffff";
-    static final String DFA73_maxS =
-        "\1\160\1\0\12\uffff";
-    static final String DFA73_acceptS =
-        "\2\uffff\1\2\1\3\7\uffff\1\1";
-    static final String DFA73_specialS =
-        "\1\uffff\1\0\12\uffff}>";
-    static final String[] DFA73_transitionS = {
-            "\3\3\2\uffff\1\1\2\3\6\uffff\2\3\15\uffff\1\2\1\uffff\1\3",
+    static final String DFA81_eotS =
+        "\13\uffff";
+    static final String DFA81_eofS =
+        "\13\uffff";
+    static final String DFA81_minS =
+        "\1\150\1\0\11\uffff";
+    static final String DFA81_maxS =
+        "\1\u0089\1\0\11\uffff";
+    static final String DFA81_acceptS =
+        "\2\uffff\1\2\7\uffff\1\1";
+    static final String DFA81_specialS =
+        "\1\uffff\1\0\11\uffff}>";
+    static final String[] DFA81_transitionS = {
+            "\3\2\2\uffff\1\1\2\2\6\uffff\2\2\21\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -17431,84 +21004,83 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
-    static final short[] DFA73_eot = DFA.unpackEncodedString(DFA73_eotS);
-    static final short[] DFA73_eof = DFA.unpackEncodedString(DFA73_eofS);
-    static final char[] DFA73_min = DFA.unpackEncodedStringToUnsignedChars(DFA73_minS);
-    static final char[] DFA73_max = DFA.unpackEncodedStringToUnsignedChars(DFA73_maxS);
-    static final short[] DFA73_accept = DFA.unpackEncodedString(DFA73_acceptS);
-    static final short[] DFA73_special = DFA.unpackEncodedString(DFA73_specialS);
-    static final short[][] DFA73_transition;
+    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 = DFA73_transitionS.length;
-        DFA73_transition = new short[numStates][];
+        int numStates = DFA81_transitionS.length;
+        DFA81_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA73_transition[i] = DFA.unpackEncodedString(DFA73_transitionS[i]);
+            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
         }
     }
 
-    class DFA73 extends DFA {
+    class DFA81 extends DFA {
 
-        public DFA73(BaseRecognizer recognizer) {
+        public DFA81(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 73;
-            this.eot = DFA73_eot;
-            this.eof = DFA73_eof;
-            this.min = DFA73_min;
-            this.max = DFA73_max;
-            this.accept = DFA73_accept;
-            this.special = DFA73_special;
-            this.transition = DFA73_transition;
+            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 "1065:4: ({...}? paren_chunk | square_chunk )?";
+            return "1173: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 LA73_1 = input.LA(1);
+                        int LA81_1 = input.LA(1);
 
                          
-                        int index73_1 = input.index();
+                        int index81_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 11;}
+                        if ( (synpred10_DRL()) ) {s = 10;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index73_1);
+                        input.seek(index81_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 73, _s, input);
+                new NoViableAltException(getDescription(), 81, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String DFA83_eotS =
-        "\17\uffff";
+        "\14\uffff";
     static final String DFA83_eofS =
-        "\17\uffff";
+        "\14\uffff";
     static final String DFA83_minS =
-        "\2\122\13\uffff\1\0\1\uffff";
+        "\1\150\1\0\12\uffff";
     static final String DFA83_maxS =
-        "\1\126\1\156\13\uffff\1\0\1\uffff";
+        "\1\u0089\1\0\12\uffff";
     static final String DFA83_acceptS =
-        "\2\uffff\1\3\1\2\12\uffff\1\1";
+        "\2\uffff\1\2\1\3\7\uffff\1\1";
     static final String DFA83_specialS =
-        "\15\uffff\1\0\1\uffff}>";
+        "\1\uffff\1\0\12\uffff}>";
     static final String[] DFA83_transitionS = {
-            "\1\1\3\uffff\1\2",
-            "\2\3\2\uffff\1\15\3\uffff\1\3\13\uffff\6\3\2\uffff\1\3",
+            "\3\3\2\uffff\1\1\2\3\6\uffff\2\3\17\uffff\1\2\1\uffff\1\3",
+            "\1\uffff",
             "",
             "",
             "",
@@ -17518,9 +21090,6 @@
             "",
             "",
             "",
-            "",
-            "",
-            "\1\uffff",
             ""
     };
 
@@ -17554,25 +21123,25 @@
             this.transition = DFA83_transition;
         }
         public String getDescription() {
-            return "1138:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+            return "1187: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 LA83_13 = input.LA(1);
+                        int LA83_1 = input.LA(1);
 
                          
-                        int index83_13 = input.index();
+                        int index83_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 14;}
+                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 11;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index83_13);
+                        input.seek(index83_1);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -17583,25 +21152,22 @@
             throw nvae;
         }
     }
-    static final String DFA88_eotS =
-        "\50\uffff";
-    static final String DFA88_eofS =
-        "\50\uffff";
-    static final String DFA88_minS =
-        "\2\122\7\uffff\1\122\6\uffff\1\4\6\uffff\1\0\6\uffff\2\0\1\uffff"+
-        "\5\0\2\uffff";
-    static final String DFA88_maxS =
-        "\1\153\1\156\7\uffff\1\156\6\uffff\1\174\6\uffff\1\0\6\uffff\2"+
-        "\0\1\uffff\5\0\2\uffff";
-    static final String DFA88_acceptS =
-        "\2\uffff\1\2\5\uffff\1\3\1\uffff\1\2\6\uffff\2\2\5\uffff\1\2\7"+
-        "\uffff\1\2\6\uffff\1\1";
-    static final String DFA88_specialS =
-        "\1\0\1\1\7\uffff\1\2\6\uffff\1\3\6\uffff\1\4\6\uffff\1\5\1\6\1"+
-        "\uffff\1\7\1\10\1\11\1\12\1\13\2\uffff}>";
-    static final String[] DFA88_transitionS = {
-            "\1\1\3\uffff\1\10\17\uffff\6\2",
-            "\1\11\2\uffff\1\12\1\20\6\uffff\2\12\15\uffff\3\12",
+    static final String DFA97_eotS =
+        "\20\uffff";
+    static final String DFA97_eofS =
+        "\20\uffff";
+    static final String DFA97_minS =
+        "\2\151\13\uffff\1\0\2\uffff";
+    static final String DFA97_maxS =
+        "\1\155\1\u008d\13\uffff\1\0\2\uffff";
+    static final String DFA97_acceptS =
+        "\2\uffff\1\3\1\2\13\uffff\1\1";
+    static final String DFA97_specialS =
+        "\15\uffff\1\0\2\uffff}>";
+    static final String[] DFA97_transitionS = {
+            "\1\1\3\uffff\1\2",
+            "\2\3\2\uffff\1\15\3\uffff\1\3\15\uffff\6\3\2\uffff\1\3\5\uffff"+
+            "\1\3",
             "",
             "",
             "",
@@ -17609,22 +21175,127 @@
             "",
             "",
             "",
-            "\1\30\1\22\1\uffff\1\30\1\27\2\22\4\uffff\2\30\2\22\13\uffff"+
-            "\2\30\1\21",
             "",
             "",
             "",
             "",
+            "\1\uffff",
             "",
+            ""
+    };
+
+    static final short[] DFA97_eot = DFA.unpackEncodedString(DFA97_eotS);
+    static final short[] DFA97_eof = DFA.unpackEncodedString(DFA97_eofS);
+    static final char[] DFA97_min = DFA.unpackEncodedStringToUnsignedChars(DFA97_minS);
+    static final char[] DFA97_max = DFA.unpackEncodedStringToUnsignedChars(DFA97_maxS);
+    static final short[] DFA97_accept = DFA.unpackEncodedString(DFA97_acceptS);
+    static final short[] DFA97_special = DFA.unpackEncodedString(DFA97_specialS);
+    static final short[][] DFA97_transition;
+
+    static {
+        int numStates = DFA97_transitionS.length;
+        DFA97_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA97_transition[i] = DFA.unpackEncodedString(DFA97_transitionS[i]);
+        }
+    }
+
+    class DFA97 extends DFA {
+
+        public DFA97(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 97;
+            this.eot = DFA97_eot;
+            this.eof = DFA97_eof;
+            this.min = DFA97_min;
+            this.max = DFA97_max;
+            this.accept = DFA97_accept;
+            this.special = DFA97_special;
+            this.transition = DFA97_transition;
+        }
+        public String getDescription() {
+            return "1375: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 LA97_13 = input.LA(1);
+
+                         
+                        int index97_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 15;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index97_13);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 97, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA105_eotS =
+        "\64\uffff";
+    static final String DFA105_eofS =
+        "\64\uffff";
+    static final String DFA105_minS =
+        "\2\151\12\uffff\1\151\5\uffff\1\4\17\uffff\1\0\7\uffff\7\0\3\uffff";
+    static final String DFA105_maxS =
+        "\2\u008d\12\uffff\1\u0087\5\uffff\1\u0097\17\uffff\1\0\7\uffff\7"+
+        "\0\3\uffff";
+    static final String DFA105_acceptS =
+        "\2\uffff\1\2\5\uffff\1\3\1\4\1\3\16\uffff\3\3\7\uffff\7\3\11\uffff"+
+        "\1\1";
+    static final String DFA105_specialS =
+        "\1\0\1\1\12\uffff\1\2\5\uffff\1\3\17\uffff\1\4\7\uffff\1\5\1\6\1"+
+        "\7\1\10\1\11\1\12\1\13\3\uffff}>";
+    static final String[] DFA105_transitionS = {
+            "\1\1\3\uffff\1\11\21\uffff\6\2\10\uffff\1\10",
+            "\1\14\2\uffff\1\12\1\22\3\12\3\uffff\4\12\4\uffff\2\12\7\uffff"+
+            "\3\12\5\uffff\1\31",
             "",
-            "\116\40\1\36\2\40\1\41\1\37\6\40\1\44\1\42\15\40\1\43\1\45"+
-            "\17\40",
             "",
             "",
             "",
             "",
             "",
             "",
+            "",
+            "",
+            "",
+            "\1\33\1\51\1\uffff\1\33\1\42\1\45\1\46\1\33\3\uffff\2\33\1"+
+            "\44\1\43\4\uffff\1\47\1\50\7\uffff\2\33\1\32",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\145\51\1\52\2\51\1\53\1\60\6\51\1\56\1\54\17\51\1\55\1\57"+
+            "\21\51",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\uffff",
             "",
             "",
@@ -17632,694 +21303,818 @@
             "",
             "",
             "",
+            "",
             "\1\uffff",
             "\1\uffff",
-            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "",
+            "",
             ""
     };
 
-    static final short[] DFA88_eot = DFA.unpackEncodedString(DFA88_eotS);
-    static final short[] DFA88_eof = DFA.unpackEncodedString(DFA88_eofS);
-    static final char[] DFA88_min = DFA.unpackEncodedStringToUnsignedChars(DFA88_minS);
-    static final char[] DFA88_max = DFA.unpackEncodedStringToUnsignedChars(DFA88_maxS);
-    static final short[] DFA88_accept = DFA.unpackEncodedString(DFA88_acceptS);
-    static final short[] DFA88_special = DFA.unpackEncodedString(DFA88_specialS);
-    static final short[][] DFA88_transition;
+    static final short[] DFA105_eot = DFA.unpackEncodedString(DFA105_eotS);
+    static final short[] DFA105_eof = DFA.unpackEncodedString(DFA105_eofS);
+    static final char[] DFA105_min = DFA.unpackEncodedStringToUnsignedChars(DFA105_minS);
+    static final char[] DFA105_max = DFA.unpackEncodedStringToUnsignedChars(DFA105_maxS);
+    static final short[] DFA105_accept = DFA.unpackEncodedString(DFA105_acceptS);
+    static final short[] DFA105_special = DFA.unpackEncodedString(DFA105_specialS);
+    static final short[][] DFA105_transition;
 
     static {
-        int numStates = DFA88_transitionS.length;
-        DFA88_transition = new short[numStates][];
+        int numStates = DFA105_transitionS.length;
+        DFA105_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA88_transition[i] = DFA.unpackEncodedString(DFA88_transitionS[i]);
+            DFA105_transition[i] = DFA.unpackEncodedString(DFA105_transitionS[i]);
         }
     }
 
-    class DFA88 extends DFA {
+    class DFA105 extends DFA {
 
-        public DFA88(BaseRecognizer recognizer) {
+        public DFA105(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 88;
-            this.eot = DFA88_eot;
-            this.eof = DFA88_eof;
-            this.min = DFA88_min;
-            this.max = DFA88_max;
-            this.accept = DFA88_accept;
-            this.special = DFA88_special;
-            this.transition = DFA88_transition;
+            this.decisionNumber = 105;
+            this.eot = DFA105_eot;
+            this.eof = DFA105_eof;
+            this.min = DFA105_min;
+            this.max = DFA105_max;
+            this.accept = DFA105_accept;
+            this.special = DFA105_special;
+            this.transition = DFA105_transition;
         }
         public String getDescription() {
-            return "1202:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+            return "1440: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;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA88_0 = input.LA(1);
+                        int LA105_0 = input.LA(1);
 
                          
-                        int index88_0 = input.index();
+                        int index105_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA88_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
+                        if ( (LA105_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
 
-                        else if ( ((LA88_0>=EQUAL && LA88_0<=NOT_EQUAL)) ) {s = 2;}
+                        else if ( ((LA105_0>=EQUAL && LA105_0<=NOT_EQUAL)) ) {s = 2;}
 
-                        else if ( (LA88_0==LEFT_PAREN) ) {s = 8;}
+                        else if ( (LA105_0==APPROX) ) {s = 8;}
 
+                        else if ( (LA105_0==LEFT_PAREN) ) {s = 9;}
+
                          
-                        input.seek(index88_0);
+                        input.seek(index105_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA88_1 = input.LA(1);
+                        int LA105_1 = input.LA(1);
 
                          
-                        int index88_1 = input.index();
+                        int index105_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA88_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 9;}
+                        if ( (LA105_1==STRING||(LA105_1>=COMMA && LA105_1<=AT)||(LA105_1>=BOOL && LA105_1<=DOUBLE_AMPER)||(LA105_1>=SINGLE_PIPE && LA105_1<=SINGLE_AMPER)||(LA105_1>=FLOAT && LA105_1<=LEFT_SQUARE)) && (((isPluggableEvaluator(false))))) {s = 10;}
 
-                        else if ( (LA88_1==STRING||(LA88_1>=BOOL && LA88_1<=INT)||(LA88_1>=FLOAT && LA88_1<=LEFT_SQUARE)) && (((isPluggableEvaluator(false))))) {s = 10;}
+                        else if ( (LA105_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 12;}
 
-                        else if ( (LA88_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 16;}
+                        else if ( (LA105_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 18;}
 
+                        else if ( (LA105_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 25;}
+
                          
-                        input.seek(index88_1);
+                        input.seek(index105_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA88_9 = input.LA(1);
+                        int LA105_12 = input.LA(1);
 
                          
-                        int index88_9 = input.index();
+                        int index105_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA88_9==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 17;}
+                        if ( (LA105_12==LEFT_SQUARE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 26;}
 
-                        else if ( (LA88_9==DOT||(LA88_9>=COMMA && LA88_9<=RIGHT_PAREN)||(LA88_9>=DOUBLE_PIPE && LA88_9<=DOUBLE_AMPER)) && (((isPluggableEvaluator(false))))) {s = 18;}
+                        else if ( (LA105_12==ID||LA105_12==STRING||LA105_12==AT||(LA105_12>=BOOL && LA105_12<=INT)||(LA105_12>=FLOAT && LA105_12<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 27;}
 
-                        else if ( (LA88_9==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 23;}
+                        else if ( (LA105_12==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 34;}
 
-                        else if ( (LA88_9==ID||LA88_9==STRING||(LA88_9>=BOOL && LA88_9<=INT)||(LA88_9>=FLOAT && LA88_9<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 24;}
+                        else if ( (LA105_12==DOUBLE_AMPER) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 35;}
 
+                        else if ( (LA105_12==DOUBLE_PIPE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 36;}
+
+                        else if ( (LA105_12==COMMA) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 37;}
+
+                        else if ( (LA105_12==RIGHT_PAREN) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 38;}
+
+                        else if ( (LA105_12==SINGLE_PIPE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 39;}
+
+                        else if ( (LA105_12==SINGLE_AMPER) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 40;}
+
+                        else if ( (LA105_12==DOT) && (((isPluggableEvaluator(false))))) {s = 41;}
+
                          
-                        input.seek(index88_9);
+                        input.seek(index105_12);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA88_16 = input.LA(1);
+                        int LA105_18 = input.LA(1);
 
                          
-                        int index88_16 = input.index();
+                        int index105_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA88_16==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 30;}
+                        if ( (LA105_18==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 42;}
 
-                        else if ( (LA88_16==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 31;}
+                        else if ( (LA105_18==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 43;}
 
-                        else if ( ((LA88_16>=VT_COMPILATION_UNIT && LA88_16<=SEMICOLON)||(LA88_16>=DOT && LA88_16<=DOT_STAR)||(LA88_16>=COMMA && LA88_16<=WHEN)||(LA88_16>=DOUBLE_PIPE && LA88_16<=NOT_EQUAL)||(LA88_16>=LEFT_SQUARE && LA88_16<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 32;}
+                        else if ( (LA105_18==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 44;}
 
-                        else if ( (LA88_16==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 33;}
+                        else if ( (LA105_18==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 45;}
 
-                        else if ( (LA88_16==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 34;}
+                        else if ( (LA105_18==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 46;}
 
-                        else if ( (LA88_16==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 35;}
+                        else if ( (LA105_18==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 47;}
 
-                        else if ( (LA88_16==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 36;}
+                        else if ( (LA105_18==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 48;}
 
-                        else if ( (LA88_16==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 37;}
+                        else if ( ((LA105_18>=VT_COMPILATION_UNIT && LA105_18<=SEMICOLON)||(LA105_18>=DOT && LA105_18<=DOT_STAR)||(LA105_18>=COMMA && LA105_18<=WHEN)||(LA105_18>=DOUBLE_PIPE && LA105_18<=NOT_EQUAL)||(LA105_18>=LEFT_SQUARE && LA105_18<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 41;}
 
                          
-                        input.seek(index88_16);
+                        input.seek(index105_18);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA88_23 = input.LA(1);
+                        int LA105_34 = input.LA(1);
 
                          
-                        int index88_23 = input.index();
+                        int index105_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 51;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 32;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 41;}
 
                          
-                        input.seek(index88_23);
+                        input.seek(index105_34);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA88_30 = input.LA(1);
+                        int LA105_42 = input.LA(1);
 
                          
-                        int index88_30 = input.index();
+                        int index105_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_30);
+                        input.seek(index105_42);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA88_31 = input.LA(1);
+                        int LA105_43 = input.LA(1);
 
                          
-                        int index88_31 = input.index();
+                        int index105_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_31);
+                        input.seek(index105_43);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA88_33 = input.LA(1);
+                        int LA105_44 = input.LA(1);
 
                          
-                        int index88_33 = input.index();
+                        int index105_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_33);
+                        input.seek(index105_44);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA88_34 = input.LA(1);
+                        int LA105_45 = input.LA(1);
 
                          
-                        int index88_34 = input.index();
+                        int index105_45 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_34);
+                        input.seek(index105_45);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA88_35 = input.LA(1);
+                        int LA105_46 = input.LA(1);
 
                          
-                        int index88_35 = input.index();
+                        int index105_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_35);
+                        input.seek(index105_46);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA88_36 = input.LA(1);
+                        int LA105_47 = input.LA(1);
 
                          
-                        int index88_36 = input.index();
+                        int index105_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_36);
+                        input.seek(index105_47);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA88_37 = input.LA(1);
+                        int LA105_48 = input.LA(1);
 
                          
-                        int index88_37 = input.index();
+                        int index105_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 32;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
 
                          
-                        input.seek(index88_37);
+                        input.seek(index105_48);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 88, _s, input);
+                new NoViableAltException(getDescription(), 105, _s, input);
             error(nvae);
             throw nvae;
         }
     }
  
 
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit384 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_EOF_in_compilation_unit394 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement453 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_package_statement455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_id482 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_DOT_in_package_id488 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_package_id492 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement530 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement537 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement543 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement555 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement563 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement571 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement576 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement581 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_import_statement603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement605 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement646 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement650 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement653 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name687 = new BitSet(new long[]{0x0000000000000002L,0x0000000000180000L});
-    public static final BitSet FOLLOW_DOT_in_import_name693 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_import_name697 = new BitSet(new long[]{0x0000000000000002L,0x0000000000180000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name704 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_data_type_in_global746 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_global_id_in_global748 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global750 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id779 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function811 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_data_type_in_function813 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_function_id_in_function816 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_parameters_in_function818 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function820 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id850 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query882 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
-    public static final BitSet FOLLOW_query_id_in_query884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_parameters_in_query892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query901 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_end_key_in_query908 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query910 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id945 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id961 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters980 = new BitSet(new long[]{0x0000000000000000L,0x0000000001040000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters989 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters992 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters996 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1005 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1034 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1045 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1051 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1074 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1077 = new BitSet(new long[]{0x0000000000000000L,0x0000000002440000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1081 = new BitSet(new long[]{0x0000000000000000L,0x0000000002440000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_end_key_in_type_declaration1091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1150 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1157 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1182 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1188 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1200 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1204 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1232 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1238 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
-    public static final BitSet FOLLOW_template_id_in_template1277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000060000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1284 = new BitSet(new long[]{0x0000000000000000L,0x0000000000060000L});
-    public static final BitSet FOLLOW_template_slot_in_template1292 = new BitSet(new long[]{0x0000000000000000L,0x0000000000460000L});
-    public static final BitSet FOLLOW_end_key_in_template1299 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1303 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1336 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1352 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1374 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1376 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1405 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1442 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1444 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
-    public static final BitSet FOLLOW_extend_key_in_rule1453 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1455 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1459 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1462 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
-    public static final BitSet FOLLOW_when_part_in_rule1465 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1512 = new BitSet(new long[]{0x0000000000000000L,0x0000000004440000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1518 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1586 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1598 = new BitSet(new long[]{0x0000000000000002L,0x0000000000840000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1602 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1609 = new BitSet(new long[]{0x0000000000000002L,0x0000000000840000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1648 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1654 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1659 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1666 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1673 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1679 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1685 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1691 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1709 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1714 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1729 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1734 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1748 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1753 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1768 = new BitSet(new long[]{0x0000000000000000L,0x0000000020400000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1781 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1792 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1812 = new BitSet(new long[]{0x0000000000000000L,0x0000000040400000L});
-    public static final BitSet FOLLOW_INT_in_salience1821 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1830 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1845 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1850 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1865 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1870 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1892 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1906 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1911 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1925 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1930 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1944 = new BitSet(new long[]{0x0000000000000000L,0x0000000040400000L});
-    public static final BitSet FOLLOW_INT_in_duration1957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_duration1968 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect1988 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_STRING_in_dialect1993 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2011 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2016 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2031 = new BitSet(new long[]{0x0000000000000002L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2052 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2076 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2094 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2100 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2123 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2145 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2163 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2204 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2214 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2222 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2228 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2252 = new BitSet(new long[]{0x0000000000000002L,0x0000000100040000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2281 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2292 = new BitSet(new long[]{0x0000000000000002L,0x0000000100040000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2323 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2331 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2337 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2343 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2349 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2355 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2366 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2372 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2380 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2394 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2437 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2444 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2452 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2459 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2474 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2520 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2522 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2545 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2574 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2583 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2589 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2599 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2638 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2647 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2674 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2679 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_forall2687 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2693 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2729 = new BitSet(new long[]{0x0000000000000002L,0x0000000600000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2733 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2743 = new BitSet(new long[]{0x0000000000000000L,0x0000001800040000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2763 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2779 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2844 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2849 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2856 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2861 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2876 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2883 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2899 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2925 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2934 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2942 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2947 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2957 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2963 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2971 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3017 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3027 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3032 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3068 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3073 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3089 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3095 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3153 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3177 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3189 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3205 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3216 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3232 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3238 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3260 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3269 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3276 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3281 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3308 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3316 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3342 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3359 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3379 = new BitSet(new long[]{0x0000000000000002L,0x0000000000480000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3394 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3401 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3441 = new BitSet(new long[]{0x0000000000000002L,0x0000400000480000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3457 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3471 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3482 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3515 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3561 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3569 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3577 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3618 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3636 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3641 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3681 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3686 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
-    public static final BitSet FOLLOW_constraints_in_fact3697 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3737 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3741 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3748 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3762 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3773 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3777 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3784 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3799 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3803 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3810 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3843 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3846 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3851 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3867 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3872 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3894 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000440000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3901 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3907 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3911 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3965 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3967 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label3992 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_COLON_in_label3999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4020 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4026 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4034 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4055 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4061 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4068 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4096 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4101 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4106 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4115 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4155 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4163 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4171 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4179 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4187 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4195 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4203 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000040000L});
-    public static final BitSet FOLLOW_operator_key_in_simple_operator4210 = new BitSet(new long[]{0x0000000000000000L,0x0000700060640000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4213 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4225 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4252 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4265 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4273 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4277 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4282 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key4321 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key4366 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4408 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4414 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4433 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4440 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4454 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4461 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4476 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4482 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4486 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4501 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4529 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4535 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_data_type4539 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4544 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4573 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4580 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4594 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4598 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4602 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4626 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4632 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4661 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4680 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data4689 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data4695 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4700 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4719 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4742 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4754 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4770 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4781 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4826 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4838 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4854 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4865 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4886 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4909 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data4921 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4936 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x1FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4947 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4971 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4975 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4979 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4987 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5019 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key5023 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5027 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5059 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5063 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5099 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5103 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5107 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5139 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5147 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5179 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5183 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5187 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5219 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5223 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5227 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5259 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5263 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5267 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5299 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5303 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5307 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5336 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5363 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5390 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5417 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5444 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5471 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5525 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key5552 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5579 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5606 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5633 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5660 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5687 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5714 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5741 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key5768 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key5795 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key5822 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key5849 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key5876 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key5903 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key5930 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key5957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_end_key5984 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_init_key6031 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2067 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2138 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2195 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2197 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2265 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2267 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2390 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2427 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2430 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2432 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2555 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2558 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2560 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit530 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit535 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit540 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement595 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement599 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement601 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id628 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_DOT_in_package_id634 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id638 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement676 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement683 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement689 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement701 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement749 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement751 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement754 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement792 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement794 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement796 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement799 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name833 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_DOT_in_import_name839 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name843 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name850 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global890 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_global892 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_global_id_in_global894 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global896 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id925 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function957 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_function959 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_function_id_in_function962 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_parameters_in_function964 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_curly_chunk_in_function966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id996 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query1028 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_query_id_in_query1030 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_parameters_in_query1038 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query1047 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_end_key_in_query1054 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query1056 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id1091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id1107 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1126 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1135 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters1138 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1142 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1177 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1180 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1191 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1197 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1220 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1223 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1227 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1232 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_end_key_in_type_declaration1237 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1269 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1288 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1296 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1328 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1334 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1340 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1346 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1350 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1378 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1384 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1421 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_template_id_in_template1423 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1430 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
+    public static final BitSet FOLLOW_template_slot_in_template1438 = new BitSet(new long[]{0x0000000000000000L,0x0000230000000000L});
+    public static final BitSet FOLLOW_end_key_in_template1445 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1449 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1482 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1498 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1518 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1520 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1522 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1551 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1588 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1590 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_extend_key_in_rule1599 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1601 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1605 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1608 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_when_part_in_rule1611 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1614 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1658 = new BitSet(new long[]{0x0000000000000000L,0x0002220000000000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1664 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1674 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1711 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1732 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1734 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1744 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1748 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1755 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1794 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1800 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1805 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1819 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1825 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1837 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1849 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1855 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1860 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_in_rule_attribute1866 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1871 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_in_rule_attribute1876 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1890 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1895 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1909 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1914 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1929 = new BitSet(new long[]{0x0000000000000000L,0x0010200000000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1942 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1973 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
+    public static final BitSet FOLLOW_INT_in_salience1982 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1991 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop2006 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop2011 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2026 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus2031 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group2048 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group2053 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2067 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group2072 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2086 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group2091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration2105 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
+    public static final BitSet FOLLOW_INT_in_duration2118 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_duration2129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect2149 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_dialect2154 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2172 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active2177 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_prior2194 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_prior2199 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2216 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_entail_mode2221 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_key_in_filter2243 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_filter2248 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2268 = new BitSet(new long[]{0x0000000000000002L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2289 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2316 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2326 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2335 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2344 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2350 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2394 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_lhs_or2407 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2421 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2434 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2442 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2454 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2499 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_xor_key_in_lhs_or2512 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2526 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2539 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2547 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2559 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2592 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2619 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_or2621 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2634 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2645 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_hedge_in_lhs_or2675 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_or2677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_very_key_in_hedge2719 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2755 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2765 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_and2770 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2776 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2785 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2791 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2828 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2858 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2860 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_and2863 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2876 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2890 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2934 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2942 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2948 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2954 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2960 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary2966 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2972 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2983 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2989 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2997 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary3011 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist3027 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3054 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3061 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3069 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3076 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3137 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3139 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not3162 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3184 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3191 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3200 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3216 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval3255 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3264 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall3291 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3296 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3304 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3310 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forany_key_in_lhs_forany3341 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3348 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3359 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_subject_key_in_lhs_forany3378 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3382 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_weight_key_in_lhs_forany3393 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3397 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3413 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3474 = new BitSet(new long[]{0x0000000000000002L,0x0300000000000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source3478 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source3488 = new BitSet(new long[]{0x0000000000000000L,0x0C00020000000000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3508 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source3524 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3541 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source3557 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause3589 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3594 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause3601 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3606 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3621 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements3628 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3637 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements3644 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3670 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3679 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3687 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3692 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3702 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3708 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3716 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3762 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3772 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3777 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3788 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3797 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3809 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3813 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3818 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3834 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3840 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3922 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3934 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3950 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3977 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3983 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement4005 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement4014 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement4021 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement4026 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4053 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4061 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id4087 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id4104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source4124 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source4139 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source4146 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain4179 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain4186 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4202 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain4216 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain4227 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4263 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern4278 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding4306 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding4312 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4319 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4327 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4335 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4376 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4388 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4394 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4399 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact4439 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4444 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
+    public static final BitSet FOLLOW_constraints_in_fact4455 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4461 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_fact4468 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints4514 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints4518 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_constraint_in_constraints4525 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint4539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_constr_config_in_or_constr4572 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4594 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr4630 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4688 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4699 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_or_constr_config4748 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4774 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4844 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_config_in_and_constr4886 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr4910 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr4949 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5029 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5040 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_and_constr_config5089 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5120 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5201 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr5250 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr5258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5264 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr5274 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5279 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint5299 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5301 = new BitSet(new long[]{0x0000000000000002L,0xC000220000000000L,0x000000000000201FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5308 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint5314 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5376 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5378 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label5405 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_COLON_in_label5412 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5433 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5439 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5449 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5470 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5476 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5483 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5516 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5520 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5523 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5545 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5549 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5552 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5576 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5585 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5590 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator5633 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator5692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator5731 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator5766 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator5801 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator5836 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_custom_operator5908 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_approx_symb_in_custom_operator5916 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_operator_key_in_custom_operator5919 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_custom_operator5927 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator5972 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator5977 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator5979 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator5990 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator5998 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator6002 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6007 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6015 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_constr_parameters6050 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_parameters6055 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_constr_attr_in_constr_parameters6062 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_parameters6067 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_id_in_constr_attr6103 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_type_in_constr_attr6115 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_args_in_constr_attr6123 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_cut_in_constr_attr6131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_prior_in_constr_attr6139 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_id_key_in_c_param_id6161 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_id6168 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_id6177 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_key_in_c_param_type6198 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_type6205 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_type6214 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_kut_key_in_c_param_cut6237 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_cut6244 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_cut6253 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_args_key_in_c_param_args6275 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_args6282 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_args6291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_c_param_prior6314 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_prior6321 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_prior6331 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key6371 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key6416 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value6453 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value6458 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value6464 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint6483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint6490 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6497 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint6504 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint6511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6526 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type6532 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6536 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6551 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_ID_in_data_type6579 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_DOT_in_data_type6585 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type6589 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type6594 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6623 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6630 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6644 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path6648 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6652 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element6676 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element6682 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6711 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6730 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6739 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6745 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6750 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6769 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6792 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data6804 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6820 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data6876 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data6888 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data6904 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data6915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk6936 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data6959 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data6971 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data6986 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data6997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7025 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7029 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7033 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7037 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7069 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key7073 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7077 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key7114 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7118 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key7154 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7190 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key7194 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7198 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key7234 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7238 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key7274 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7278 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7310 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7314 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key7354 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7358 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key7387 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key7414 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key7441 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key7468 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_prior_key7496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entail_mode_key7529 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_filter_key7562 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key7595 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key7622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key7649 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key7676 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key7703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key7730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key7757 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key7784 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key7811 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key7838 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key7865 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key7892 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key7919 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key7946 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key7973 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_equiv_key8003 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_xor_key8039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key8075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key8102 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forany_key8131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key8164 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key8191 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key8218 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_end_key8245 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key8292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_subject_key8323 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_weight_key8361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_very_key8400 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_id_key8450 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_kut_key8498 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_key8535 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_args_key8572 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_APPROX_in_approx_symb8613 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2304 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2306 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred1_DRL2308 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2380 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2382 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred2_DRL2384 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2485 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2487 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred3_DRL2489 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred4_DRL2605 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred4_DRL2608 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2612 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred5_DRL2743 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_and_key_in_synpred5_DRL2745 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_synpred5_DRL2747 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2841 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_square_chunk_in_synpred6_DRL2843 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred7_DRL3007 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3044 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred8_DRL3047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred8_DRL3049 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3172 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3177 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL4133 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_synpred11_DRL4675 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred11_DRL4677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_synpred12_DRL5016 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred12_DRL5018 = 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-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-03-14 14:29:00
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-05-14 14:06:23
 
 	package org.drools.lang;
 
@@ -36,130 +36,157 @@
 
 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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "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", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "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_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_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", "APPROX", "EOL", "WS", "EscapeSequence", "HexDigit", "Un
icodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=87;
-    public static final int VT_PATTERN_TYPE=39;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=28;
-    public static final int VK_DIALECT=54;
-    public static final int VK_FUNCTION=65;
-    public static final int HexDigit=119;
-    public static final int VK_ATTRIBUTES=57;
-    public static final int VT_EXPRESSION_CHAIN=30;
-    public static final int MISC=115;
+    public static final int VT_ACCESSOR_ELEMENT=39;
+    public static final int ACCUMULATE=122;
+    public static final int VT_DATA_TYPE=40;
+    public static final int VK_TYPE=103;
+    public static final int DOT_STAR=107;
+    public static final int VK_APPROX=96;
+    public static final int VT_CONSTRID=47;
+    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=49;
+    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 DOUBLE_AMPER=119;
+    public static final int GREATER=128;
+    public static final int EOL=142;
+    public static final int VK_EQUIV=82;
+    public static final int VK_IMPORT=69;
+    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_OR=80;
+    public static final int VK_ARGS=102;
+    public static final int VT_HEDGE=48;
+    public static final int VK_CUT=95;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_QUERY=63;
-    public static final int THEN=112;
-    public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=83;
-    public static final int VK_IMPORT=60;
-    public static final int VT_SLOT=15;
-    public static final int VT_PACKAGE_ID=40;
-    public static final int LEFT_SQUARE=110;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=122;
-    public static final int VT_DATA_TYPE=38;
+    public static final int VK_AT=100;
+    public static final int VK_FILTER=99;
+    public static final int NULL=134;
+    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=148;
+    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=143;
+    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 LEFT_CURLY=113;
-    public static final int AT=89;
-    public static final int LEFT_PAREN=86;
-    public static final int DOUBLE_AMPER=96;
+    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=144;
+    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 VK_DATE_EXPIRES=55;
+    public static final int ID=105;
+    public static final int HexDigit=145;
+    public static final int VK_EVAL=76;
+    public static final int VT_OR_PREFIX=24;
+    public static final int VK_WEIGHT=94;
+    public static final int APPROX=141;
+    public static final int AT=112;
+    public static final int DOUBLE_PIPE=118;
+    public static final int VT_ARGS=52;
+    public static final int RIGHT_PAREN=111;
+    public static final int VK_XOR=83;
+    public static final int VT_COMPILATION_UNIT=4;
+    public static final int THEN=137;
+    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 VK_DIALECT=63;
     public static final int VT_QUERY_ID=9;
-    public static final int VT_ACCESSOR_PATH=36;
-    public static final int VT_LABEL=8;
-    public static final int WHEN=92;
+    public static final int DOT=106;
+    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 VK_DECLARE=73;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_SALIENCE=55;
-    public static final int VT_FIELD=35;
-    public static final int WS=117;
-    public static final int OVER=98;
-    public static final int STRING=85;
-    public static final int VK_AND=72;
-    public static final int VT_ACCESSOR_ELEMENT=37;
-    public static final int VK_REVERSE=76;
-    public static final int VK_GLOBAL=66;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VT_BEHAVIOR=21;
-    public static final int VK_DURATION=53;
-    public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_FORALL=74;
     public static final int VT_PAREN_CHUNK=20;
-    public static final int VT_COMPILATION_UNIT=4;
-    public static final int COLLECT=100;
-    public static final int VK_ENABLED=56;
-    public static final int VK_RESULT=77;
-    public static final int EQUALS=91;
-    public static final int UnicodeEscape=120;
-    public static final int VK_PACKAGE=61;
-    public static final int VT_RULE_ID=12;
-    public static final int EQUAL=102;
-    public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=81;
-    public static final int VK_TEMPLATE=62;
+    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 VK_DURATION=62;
+    public static final int VT_RULE_ATTRIBUTES=16;
+    public static final int VT_AND_INFIX=25;
+    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 NULL=109;
-    public static final int COLON=90;
-    public static final int MULTI_LINE_COMMENT=124;
-    public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int RIGHT_SQUARE=111;
-    public static final int VK_AGENDA_GROUP=51;
-    public static final int VT_FACT_OR=33;
-    public static final int VK_NOT=69;
-    public static final int VK_DATE_EXPIRES=46;
-    public static final int ARROW=101;
-    public static final int FLOAT=108;
-    public static final int VK_EXTEND=59;
+    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 VT_CURLY_CHUNK=18;
-    public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=95;
-    public static final int VK_END=79;
-    public static final int LESS=105;
-    public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VT_PATTERN=31;
-    public static final int VK_DATE_EFFECTIVE=45;
-    public static final int EscapeSequence=118;
-    public static final int VK_EXISTS=73;
-    public static final int INT=94;
-    public static final int VT_BIND_FIELD=34;
-    public static final int VK_RULE=58;
-    public static final int VK_EVAL=67;
-    public static final int GREATER=103;
-    public static final int VT_FACT_BINDING=32;
-    public static final int ID=82;
-    public static final int FROM=97;
-    public static final int NOT_EQUAL=107;
-    public static final int RIGHT_CURLY=114;
-    public static final int VK_OPERATOR=78;
-    public static final int VK_ENTRY_POINT=68;
-    public static final int VT_PARAM_LIST=44;
-    public static final int VT_AND_INFIX=25;
-    public static final int BOOL=93;
-    public static final int VT_FROM_SOURCE=29;
-    public static final int VK_LOCK_ON_ACTIVE=47;
-    public static final int VT_FUNCTION_IMPORT=5;
-    public static final int VK_IN=70;
-    public static final int VT_RHS_CHUNK=17;
-    public static final int GREATER_EQUAL=104;
-    public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=84;
-    public static final int VK_OR=71;
-    public static final int VT_GLOBAL_ID=42;
-    public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=99;
-    public static final int VK_RULEFLOW_GROUP=52;
-    public static final int VT_FUNCTION_ID=43;
-    public static final int EOF=-1;
+    public static final int VK_ATTRIBUTES=66;
+    public static final int WHEN=115;
+    public static final int UnicodeEscape=146;
+    public static final int VT_SQUARE_CHUNK=19;
+    public static final int VK_DATE_EFFECTIVE=54;
+    public static final int VT_TEMPLATE_ID=10;
+    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 VK_AGENDA_GROUP=60;
     public static final int VT_CONSTRAINTS=7;
-    public static final int VT_IMPORT_ID=41;
-    public static final int EOL=116;
-    public static final int VK_INIT=80;
-    public static final int VK_ACTIVATION_GROUP=50;
-    public static final int OctalEscape=121;
-    public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=88;
-    public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DECLARE=64;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=123;
+    public static final int LEFT_SQUARE=135;
+    public static final int GREATER_EQUAL=129;
+    public static final int OctalEscape=147;
+    public static final int VK_INIT=92;
+    public static final int STRING=108;
 
     // delegates
     // delegators
@@ -175,7 +202,7 @@
         
 
     public String[] getTokenNames() { return DescrBuilderTree.tokenNames; }
-    public String getGrammarFileName() { return "src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
+    public String getGrammarFileName() { return "/home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g"; }
 
 
     	DescrFactory factory = new DescrFactory();
@@ -188,11 +215,11 @@
 
 
     // $ANTLR start "compilation_unit"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:48:1: compilation_unit : ^( VT_COMPILATION_UNIT package_statement ( statement )* ) ;
     public final void compilation_unit() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:2: ( ^( VT_COMPILATION_UNIT package_statement ( statement )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:4: ^( VT_COMPILATION_UNIT package_statement ( statement )* )
             {
             match(input,VT_COMPILATION_UNIT,FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49); 
 
@@ -203,20 +230,20 @@
 
                 state._fsp--;
 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: ( statement )*
                 loop1:
                 do {
                     int alt1=2;
                     int LA1_0 = input.LA(1);
 
-                    if ( (LA1_0==VT_FUNCTION_IMPORT||(LA1_0>=VK_DATE_EFFECTIVE && LA1_0<=VK_ENABLED)||LA1_0==VK_RULE||LA1_0==VK_IMPORT||(LA1_0>=VK_TEMPLATE && LA1_0<=VK_GLOBAL)) ) {
+                    if ( (LA1_0==VT_FUNCTION_IMPORT||(LA1_0>=VK_DATE_EFFECTIVE && LA1_0<=VK_ENABLED)||LA1_0==VK_RULE||LA1_0==VK_IMPORT||(LA1_0>=VK_TEMPLATE && LA1_0<=VK_GLOBAL)||(LA1_0>=VK_ENTAIL && LA1_0<=VK_FILTER)) ) {
                         alt1=1;
                     }
 
 
                     switch (alt1) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
+                	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:49:44: statement
                 	    {
                 	    pushFollow(FOLLOW_statement_in_compilation_unit53);
                 	    statement();
@@ -251,7 +278,7 @@
 
 
     // $ANTLR start "package_statement"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:52:1: package_statement returns [String packageName] : ( ^( VK_PACKAGE packageId= package_id ) | );
     public final String package_statement() throws RecognitionException {
         String packageName = null;
 
@@ -259,14 +286,14 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:2: ( ^( VK_PACKAGE packageId= package_id ) | )
             int alt2=2;
             int LA2_0 = input.LA(1);
 
             if ( (LA2_0==VK_PACKAGE) ) {
                 alt2=1;
             }
-            else if ( (LA2_0==UP||LA2_0==VT_FUNCTION_IMPORT||(LA2_0>=VK_DATE_EFFECTIVE && LA2_0<=VK_ENABLED)||LA2_0==VK_RULE||LA2_0==VK_IMPORT||(LA2_0>=VK_TEMPLATE && LA2_0<=VK_GLOBAL)) ) {
+            else if ( (LA2_0==UP||LA2_0==VT_FUNCTION_IMPORT||(LA2_0>=VK_DATE_EFFECTIVE && LA2_0<=VK_ENABLED)||LA2_0==VK_RULE||LA2_0==VK_IMPORT||(LA2_0>=VK_TEMPLATE && LA2_0<=VK_GLOBAL)||(LA2_0>=VK_ENTAIL && LA2_0<=VK_FILTER)) ) {
                 alt2=2;
             }
             else {
@@ -277,12 +304,12 @@
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:53:4: ^( VK_PACKAGE packageId= package_id )
                     {
-                    match(input,VK_PACKAGE,FOLLOW_VK_PACKAGE_in_package_statement71); 
+                    match(input,VK_PACKAGE,FOLLOW_VK_PACKAGE_in_package_statement72); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_package_id_in_package_statement75);
+                    pushFollow(FOLLOW_package_id_in_package_statement76);
                     packageId=package_id();
 
                     state._fsp--;
@@ -295,7 +322,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:57:2: 
                     {
                     	this.packageDescr = factory.createPackage(null);	
                     		packageName = "";	
@@ -317,7 +344,7 @@
 
 
     // $ANTLR start "package_id"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:61:1: package_id returns [List idList] : ^( VT_PACKAGE_ID (tempList+= ID )+ ) ;
     public final List package_id() throws RecognitionException {
         List idList = null;
 
@@ -325,13 +352,13 @@
         List list_tempList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:2: ( ^( VT_PACKAGE_ID (tempList+= ID )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:4: ^( VT_PACKAGE_ID (tempList+= ID )+ )
             {
-            match(input,VT_PACKAGE_ID,FOLLOW_VT_PACKAGE_ID_in_package_id102); 
+            match(input,VT_PACKAGE_ID,FOLLOW_VT_PACKAGE_ID_in_package_id103); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: (tempList+= ID )+
             int cnt3=0;
             loop3:
             do {
@@ -345,9 +372,9 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:62:28: tempList+= ID
             	    {
-            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_package_id106); 
+            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_package_id107); 
             	    if (list_tempList==null) list_tempList=new ArrayList();
             	    list_tempList.add(tempList);
 
@@ -383,10 +410,8 @@
 
 
     // $ANTLR start "statement"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:66:1: statement : (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration );
     public final void statement() throws RecognitionException {
-    	    	
-    	
         AttributeDescr a = null;
 
         FunctionImportDescr fi = null;
@@ -407,7 +432,7 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:2: (a= rule_attribute | fi= function_import_statement | is= import_statement | gl= global | fn= function | tp= template | rl= rule | qr= query | td= type_declaration )
             int alt4=9;
             switch ( input.LA(1) ) {
             case VK_DATE_EFFECTIVE:
@@ -422,6 +447,9 @@
             case VK_DIALECT:
             case VK_SALIENCE:
             case VK_ENABLED:
+            case VK_ENTAIL:
+            case VK_PRIOR:
+            case VK_FILTER:
                 {
                 alt4=1;
                 }
@@ -475,9 +503,9 @@
 
             switch (alt4) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:67:4: a= rule_attribute
                     {
-                    pushFollow(FOLLOW_rule_attribute_in_statement124);
+                    pushFollow(FOLLOW_rule_attribute_in_statement125);
                     a=rule_attribute();
 
                     state._fsp--;
@@ -487,9 +515,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:69:4: fi= function_import_statement
                     {
-                    pushFollow(FOLLOW_function_import_statement_in_statement134);
+                    pushFollow(FOLLOW_function_import_statement_in_statement135);
                     fi=function_import_statement();
 
                     state._fsp--;
@@ -499,9 +527,9 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:71:4: is= import_statement
                     {
-                    pushFollow(FOLLOW_import_statement_in_statement144);
+                    pushFollow(FOLLOW_import_statement_in_statement145);
                     is=import_statement();
 
                     state._fsp--;
@@ -511,9 +539,9 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:73:4: gl= global
                     {
-                    pushFollow(FOLLOW_global_in_statement155);
+                    pushFollow(FOLLOW_global_in_statement156);
                     gl=global();
 
                     state._fsp--;
@@ -523,9 +551,9 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:75:4: fn= function
                     {
-                    pushFollow(FOLLOW_function_in_statement165);
+                    pushFollow(FOLLOW_function_in_statement166);
                     fn=function();
 
                     state._fsp--;
@@ -535,9 +563,9 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:77:4: tp= template
                     {
-                    pushFollow(FOLLOW_template_in_statement175);
+                    pushFollow(FOLLOW_template_in_statement176);
                     tp=template();
 
                     state._fsp--;
@@ -547,15 +575,10 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:79:4: rl= rule
                     {
-                    pushFollow(FOLLOW_rule_in_statement185);
-                    
-                    System.out.println(this.getClass()+" HACKED statement() calls rule ");
+                    pushFollow(FOLLOW_rule_in_statement186);
                     rl=rule();
-                    
-                    
-                    System.out.println(this.getClass()+".statement() "+rl.ruleDescr.toString());
 
                     state._fsp--;
 
@@ -564,9 +587,9 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:81:4: qr= query
                     {
-                    pushFollow(FOLLOW_query_in_statement195);
+                    pushFollow(FOLLOW_query_in_statement196);
                     qr=query();
 
                     state._fsp--;
@@ -576,9 +599,9 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:83:4: td= type_declaration
                     {
-                    pushFollow(FOLLOW_type_declaration_in_statement205);
+                    pushFollow(FOLLOW_type_declaration_in_statement206);
                     td=type_declaration();
 
                     state._fsp--;
@@ -602,7 +625,7 @@
 
 
     // $ANTLR start "import_statement"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:87:1: import_statement returns [ImportDescr importDescr] : ^(importStart= VK_IMPORT importId= import_name ) ;
     public final ImportDescr import_statement() throws RecognitionException {
         ImportDescr importDescr = null;
 
@@ -611,13 +634,13 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:2: ( ^(importStart= VK_IMPORT importId= import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:88:4: ^(importStart= VK_IMPORT importId= import_name )
             {
-            importStart=(DroolsTree)match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement226); 
+            importStart=(DroolsTree)match(input,VK_IMPORT,FOLLOW_VK_IMPORT_in_import_statement227); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_import_name_in_import_statement230);
+            pushFollow(FOLLOW_import_name_in_import_statement231);
             importId=import_name();
 
             state._fsp--;
@@ -641,7 +664,7 @@
 
 
     // $ANTLR start "function_import_statement"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:92:1: function_import_statement returns [FunctionImportDescr functionImportDescr] : ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) ;
     public final FunctionImportDescr function_import_statement() throws RecognitionException {
         FunctionImportDescr functionImportDescr = null;
 
@@ -650,14 +673,14 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:2: ( ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:93:4: ^(importStart= VT_FUNCTION_IMPORT VK_FUNCTION importId= import_name )
             {
-            importStart=(DroolsTree)match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement252); 
+            importStart=(DroolsTree)match(input,VT_FUNCTION_IMPORT,FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement253); 
 
             match(input, Token.DOWN, null); 
-            match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function_import_statement254); 
-            pushFollow(FOLLOW_import_name_in_function_import_statement258);
+            match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function_import_statement255); 
+            pushFollow(FOLLOW_import_name_in_function_import_statement259);
             importId=import_name();
 
             state._fsp--;
@@ -685,7 +708,7 @@
     };
 
     // $ANTLR start "import_name"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:97:1: import_name returns [List idList, DroolsTree dotStar] : ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) ;
     public final DescrBuilderTree.import_name_return import_name() throws RecognitionException {
         DescrBuilderTree.import_name_return retval = new DescrBuilderTree.import_name_return();
         retval.start = input.LT(1);
@@ -695,13 +718,13 @@
         List list_tempList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:2: ( ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:4: ^( VT_IMPORT_ID (tempList+= ID )+ (tempDotStar= DOT_STAR )? )
             {
-            match(input,VT_IMPORT_ID,FOLLOW_VT_IMPORT_ID_in_import_name277); 
+            match(input,VT_IMPORT_ID,FOLLOW_VT_IMPORT_ID_in_import_name278); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: (tempList+= ID )+
             int cnt5=0;
             loop5:
             do {
@@ -715,9 +738,9 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:27: tempList+= ID
             	    {
-            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_import_name281); 
+            	    tempList=(DroolsTree)match(input,ID,FOLLOW_ID_in_import_name282); 
             	    if (list_tempList==null) list_tempList=new ArrayList();
             	    list_tempList.add(tempList);
 
@@ -734,7 +757,7 @@
                 cnt5++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: (tempDotStar= DOT_STAR )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -743,9 +766,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:98:44: tempDotStar= DOT_STAR
                     {
-                    tempDotStar=(DroolsTree)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name286); 
+                    tempDotStar=(DroolsTree)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name287); 
 
                     }
                     break;
@@ -775,7 +798,7 @@
     };
 
     // $ANTLR start "global"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:103:1: global returns [GlobalDescr globalDescr] : ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) ;
     public final DescrBuilderTree.global_return global() throws RecognitionException {
         DescrBuilderTree.global_return retval = new DescrBuilderTree.global_return();
         retval.start = input.LT(1);
@@ -786,18 +809,18 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:2: ( ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:104:4: ^(start= VK_GLOBAL dt= data_type globalId= VT_GLOBAL_ID )
             {
-            start=(DroolsTree)match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global309); 
+            start=(DroolsTree)match(input,VK_GLOBAL,FOLLOW_VK_GLOBAL_in_global310); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_data_type_in_global313);
+            pushFollow(FOLLOW_data_type_in_global314);
             dt=data_type();
 
             state._fsp--;
 
-            globalId=(DroolsTree)match(input,VT_GLOBAL_ID,FOLLOW_VT_GLOBAL_ID_in_global317); 
+            globalId=(DroolsTree)match(input,VT_GLOBAL_ID,FOLLOW_VT_GLOBAL_ID_in_global318); 
 
             match(input, Token.UP, null); 
             	retval.globalDescr = factory.createGlobal(start,dt, globalId);	
@@ -820,7 +843,7 @@
     };
 
     // $ANTLR start "function"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:108:1: function returns [FunctionDescr functionDescr] : ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) ;
     public final DescrBuilderTree.function_return function() throws RecognitionException {
         DescrBuilderTree.function_return retval = new DescrBuilderTree.function_return();
         retval.start = input.LT(1);
@@ -834,13 +857,13 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:2: ( ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:4: ^(start= VK_FUNCTION (dt= data_type )? functionId= VT_FUNCTION_ID params= parameters content= VT_CURLY_CHUNK )
             {
-            start=(DroolsTree)match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function339); 
+            start=(DroolsTree)match(input,VK_FUNCTION,FOLLOW_VK_FUNCTION_in_function340); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: (dt= data_type )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -849,9 +872,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:109:26: dt= data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function343);
+                    pushFollow(FOLLOW_data_type_in_function344);
                     dt=data_type();
 
                     state._fsp--;
@@ -862,13 +885,13 @@
 
             }
 
-            functionId=(DroolsTree)match(input,VT_FUNCTION_ID,FOLLOW_VT_FUNCTION_ID_in_function348); 
-            pushFollow(FOLLOW_parameters_in_function352);
+            functionId=(DroolsTree)match(input,VT_FUNCTION_ID,FOLLOW_VT_FUNCTION_ID_in_function349); 
+            pushFollow(FOLLOW_parameters_in_function353);
             params=parameters();
 
             state._fsp--;
 
-            content=(DroolsTree)match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_function356); 
+            content=(DroolsTree)match(input,VT_CURLY_CHUNK,FOLLOW_VT_CURLY_CHUNK_in_function357); 
 
             match(input, Token.UP, null); 
             	retval.functionDescr = factory.createFunction(start, dt, functionId, params, content);	
@@ -891,7 +914,7 @@
     };
 
     // $ANTLR start "template"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) ;
     public final DescrBuilderTree.template_return template() throws RecognitionException {
         DescrBuilderTree.template_return retval = new DescrBuilderTree.template_return();
         retval.start = input.LT(1);
@@ -906,14 +929,14 @@
         	List slotList = new LinkedList<FieldTemplateDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END )
             {
-            start=(DroolsTree)match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template381); 
+            start=(DroolsTree)match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template382); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template385); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
+            id=(DroolsTree)match(input,VT_TEMPLATE_ID,FOLLOW_VT_TEMPLATE_ID_in_template386); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:4: (ts= template_slot )+
             int cnt8=0;
             loop8:
             do {
@@ -927,9 +950,9 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:117:6: ts= template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template394);
+            	    pushFollow(FOLLOW_template_slot_in_template395);
             	    ts=template_slot();
 
             	    state._fsp--;
@@ -948,7 +971,7 @@
                 cnt8++;
             } while (true);
 
-            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_template402); 
+            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_template403); 
 
             match(input, Token.UP, null); 
             	retval.factTemplateDescr = factory.createFactTemplate(start, id, slotList, end);	
@@ -968,7 +991,7 @@
 
 
     // $ANTLR start "template_slot"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:121:1: template_slot returns [FieldTemplateDescr fieldTemplateDescr] : ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) ;
     public final FieldTemplateDescr template_slot() throws RecognitionException {
         FieldTemplateDescr fieldTemplateDescr = null;
 
@@ -977,18 +1000,18 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:2: ( ^( VT_SLOT dt= data_type id= VT_SLOT_ID ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:122:4: ^( VT_SLOT dt= data_type id= VT_SLOT_ID )
             {
-            match(input,VT_SLOT,FOLLOW_VT_SLOT_in_template_slot422); 
+            match(input,VT_SLOT,FOLLOW_VT_SLOT_in_template_slot423); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_data_type_in_template_slot426);
+            pushFollow(FOLLOW_data_type_in_template_slot427);
             dt=data_type();
 
             state._fsp--;
 
-            id=(DroolsTree)match(input,VT_SLOT_ID,FOLLOW_VT_SLOT_ID_in_template_slot430); 
+            id=(DroolsTree)match(input,VT_SLOT_ID,FOLLOW_VT_SLOT_ID_in_template_slot431); 
 
             match(input, Token.UP, null); 
             	fieldTemplateDescr = factory.createFieldTemplate(dt, id);	
@@ -1011,7 +1034,7 @@
     };
 
     // $ANTLR start "query"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) ;
     public final DescrBuilderTree.query_return query() throws RecognitionException {
         DescrBuilderTree.query_return retval = new DescrBuilderTree.query_return();
         retval.start = input.LT(1);
@@ -1025,14 +1048,14 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END )
             {
-            start=(DroolsTree)match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query452); 
+            start=(DroolsTree)match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query453); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query456); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
+            id=(DroolsTree)match(input,VT_QUERY_ID,FOLLOW_VT_QUERY_ID_in_query457); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: (params= parameters )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1041,9 +1064,9 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:127:42: params= parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query460);
+                    pushFollow(FOLLOW_parameters_in_query461);
                     params=parameters();
 
                     state._fsp--;
@@ -1054,12 +1077,12 @@
 
             }
 
-            pushFollow(FOLLOW_lhs_block_in_query465);
+            pushFollow(FOLLOW_lhs_block_in_query466);
             lb=lhs_block();
 
             state._fsp--;
 
-            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_query469); 
+            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_query470); 
 
             match(input, Token.UP, null); 
             	retval.queryDescr = factory.createQuery(start, id, params, lb, end);	
@@ -1082,7 +1105,7 @@
     };
 
     // $ANTLR start "rule"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:131:1: rule returns [RuleDescr ruleDescr] : ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) ;
     public final DescrBuilderTree.rule_return rule() throws RecognitionException {
         DescrBuilderTree.rule_return retval = new DescrBuilderTree.rule_return();
         retval.start = input.LT(1);
@@ -1100,14 +1123,14 @@
 
         	List<Map> declMetadaList = new LinkedList<Map>();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:2: ( ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:4: ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:2: ( ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:4: ^(start= VK_RULE id= VT_RULE_ID ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )? (dm= decl_metadata )* (ra= rule_attributes )? (wn= when_part )? content= VT_RHS_CHUNK )
             {
-            start=(DroolsTree)match(input,VK_RULE,FOLLOW_VK_RULE_in_rule496); 
+            start=(DroolsTree)match(input,VK_RULE,FOLLOW_VK_RULE_in_rule497); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule500); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:35: ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )?
+            id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule501); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:35: ( ^( VK_EXTEND parent_id= VT_RULE_ID ) )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1116,12 +1139,12 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: ^( VK_EXTEND parent_id= VT_RULE_ID )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:133:36: ^( VK_EXTEND parent_id= VT_RULE_ID )
                     {
-                    match(input,VK_EXTEND,FOLLOW_VK_EXTEND_in_rule505); 
+                    match(input,VK_EXTEND,FOLLOW_VK_EXTEND_in_rule506); 
 
                     match(input, Token.DOWN, null); 
-                    parent_id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule509); 
+                    parent_id=(DroolsTree)match(input,VT_RULE_ID,FOLLOW_VT_RULE_ID_in_rule510); 
 
                     match(input, Token.UP, null); 
 
@@ -1130,7 +1153,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:134:3: (dm= decl_metadata )*
             loop11:
             do {
                 int alt11=2;
@@ -1143,9 +1166,9 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:134:4: dm= decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule519);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule520);
             	    dm=decl_metadata();
 
             	    state._fsp--;
@@ -1160,7 +1183,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: (ra= rule_attributes )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -1169,9 +1192,9 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: ra= rule_attributes
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:135:6: ra= rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule530);
+                    pushFollow(FOLLOW_rule_attributes_in_rule531);
                     ra=rule_attributes();
 
                     state._fsp--;
@@ -1182,7 +1205,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: (wn= when_part )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: (wn= when_part )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1191,9 +1214,9 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: wn= when_part
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:136:6: wn= when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule539);
+                    pushFollow(FOLLOW_when_part_in_rule540);
                     wn=when_part();
 
                     state._fsp--;
@@ -1204,7 +1227,7 @@
 
             }
 
-            content=(DroolsTree)match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule544); 
+            content=(DroolsTree)match(input,VT_RHS_CHUNK,FOLLOW_VT_RHS_CHUNK_in_rule545); 
 
             match(input, Token.UP, null); 
             	retval.ruleDescr = factory.createRule(start, id, parent_id, ra, wn, content, declMetadaList);	
@@ -1224,7 +1247,7 @@
 
 
     // $ANTLR start "when_part"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:140:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:140:1: when_part returns [AndDescr andDescr] : WHEN lh= lhs_block ;
     public final AndDescr when_part() throws RecognitionException {
         AndDescr andDescr = null;
 
@@ -1232,11 +1255,11 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:141:2: ( WHEN lh= lhs_block )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:141:4: WHEN lh= lhs_block
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:2: ( WHEN lh= lhs_block )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:141:4: WHEN lh= lhs_block
             {
-            match(input,WHEN,FOLLOW_WHEN_in_when_part563); 
-            pushFollow(FOLLOW_lhs_block_in_when_part567);
+            match(input,WHEN,FOLLOW_WHEN_in_when_part564); 
+            pushFollow(FOLLOW_lhs_block_in_when_part568);
             lh=lhs_block();
 
             state._fsp--;
@@ -1258,7 +1281,7 @@
 
 
     // $ANTLR start "rule_attributes"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:145:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:145:1: rule_attributes returns [List attrList] : ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) ;
     public final List rule_attributes() throws RecognitionException {
         List attrList = null;
 
@@ -1269,13 +1292,13 @@
         	attrList = new LinkedList<AttributeDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:3: ( ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:5: ^( VT_RULE_ATTRIBUTES ( VK_ATTRIBUTES )? (rl= rule_attribute )+ )
             {
-            match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes589); 
+            match(input,VT_RULE_ATTRIBUTES,FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes590); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: ( VK_ATTRIBUTES )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: ( VK_ATTRIBUTES )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -1284,32 +1307,32 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:26: VK_ATTRIBUTES
                     {
-                    match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes591); 
+                    match(input,VK_ATTRIBUTES,FOLLOW_VK_ATTRIBUTES_in_rule_attributes592); 
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:41: (rl= rule_attribute )+
             int cnt15=0;
             loop15:
             do {
                 int alt15=2;
                 int LA15_0 = input.LA(1);
 
-                if ( ((LA15_0>=VK_DATE_EFFECTIVE && LA15_0<=VK_ENABLED)) ) {
+                if ( ((LA15_0>=VK_DATE_EFFECTIVE && LA15_0<=VK_ENABLED)||(LA15_0>=VK_ENTAIL && LA15_0<=VK_FILTER)) ) {
                     alt15=1;
                 }
 
 
                 switch (alt15) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:148:42: rl= rule_attribute
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:148:42: rl= rule_attribute
             	    {
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes597);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes598);
             	    rl=rule_attribute();
 
             	    state._fsp--;
@@ -1346,7 +1369,7 @@
 
 
     // $ANTLR start "parameters"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:151:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:151:1: parameters returns [List paramList] : ^( VT_PARAM_LIST (p= param_definition )* ) ;
     public final List parameters() throws RecognitionException {
         List paramList = null;
 
@@ -1357,14 +1380,14 @@
         	paramList = new LinkedList<Map<BaseDescr, BaseDescr>>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:5: ^( VT_PARAM_LIST (p= param_definition )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:3: ( ^( VT_PARAM_LIST (p= param_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:5: ^( VT_PARAM_LIST (p= param_definition )* )
             {
-            match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters621); 
+            match(input,VT_PARAM_LIST,FOLLOW_VT_PARAM_LIST_in_parameters622); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:21: (p= param_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:21: (p= param_definition )*
                 loop16:
                 do {
                     int alt16=2;
@@ -1377,9 +1400,9 @@
 
                     switch (alt16) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:154:22: p= param_definition
+                	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:154:22: p= param_definition
                 	    {
-                	    pushFollow(FOLLOW_param_definition_in_parameters626);
+                	    pushFollow(FOLLOW_param_definition_in_parameters627);
                 	    p=param_definition();
 
                 	    state._fsp--;
@@ -1413,7 +1436,7 @@
 
 
     // $ANTLR start "param_definition"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:157:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:157:1: param_definition returns [Map param] : (dt= data_type )? a= argument ;
     public final Map param_definition() throws RecognitionException {
         Map param = null;
 
@@ -1423,10 +1446,10 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:2: ( (dt= data_type )? a= argument )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:4: (dt= data_type )? a= argument
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:2: ( (dt= data_type )? a= argument )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:4: (dt= data_type )? a= argument
             {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: (dt= data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: (dt= data_type )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -1435,9 +1458,9 @@
             }
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: dt= data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:158:6: dt= data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition648);
+                    pushFollow(FOLLOW_data_type_in_param_definition649);
                     dt=data_type();
 
                     state._fsp--;
@@ -1448,7 +1471,7 @@
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition653);
+            pushFollow(FOLLOW_argument_in_param_definition654);
             a=argument();
 
             state._fsp--;
@@ -1471,7 +1494,7 @@
 
 
     // $ANTLR start "argument"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:163:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:163:1: argument returns [BaseDescr arg] : id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ;
     public final BaseDescr argument() throws RecognitionException {
         BaseDescr arg = null;
 
@@ -1480,11 +1503,11 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:2: (id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:4: id= ID ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             {
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_argument673); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_argument674); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:10: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
             loop18:
             do {
                 int alt18=2;
@@ -1497,10 +1520,10 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:164:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:164:11: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument676); 
-            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument680); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_argument677); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_argument681); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -1530,7 +1553,7 @@
 
 
     // $ANTLR start "type_declaration"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) ;
     public final TypeDeclarationDescr type_declaration() throws RecognitionException {
         TypeDeclarationDescr declaration = null;
 
@@ -1543,14 +1566,14 @@
         	List<Map> declMetadaList = new LinkedList<Map>();
         		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END )
             {
-            match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration706); 
+            match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration707); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (dm= decl_metadata )*
+            id=(DroolsTree)match(input,VT_TYPE_DECLARE_ID,FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration711); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:172:4: (dm= decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -1563,9 +1586,9 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: dm= decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:172:5: dm= decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration719);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration720);
             	    dm=decl_metadata();
 
             	    state._fsp--;
@@ -1580,7 +1603,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:4: (df= decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -1593,9 +1616,9 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:173:5: df= decl_field
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:173:5: df= decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration732);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration733);
             	    df=decl_field();
 
             	    state._fsp--;
@@ -1610,7 +1633,7 @@
                 }
             } while (true);
 
-            match(input,VK_END,FOLLOW_VK_END_in_type_declaration738); 
+            match(input,VK_END,FOLLOW_VK_END_in_type_declaration739); 
 
             match(input, Token.UP, null); 
             	declaration = factory.createTypeDeclr(id, declMetadaList, declFieldList);	
@@ -1630,7 +1653,7 @@
 
 
     // $ANTLR start "decl_metadata"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:177:1: decl_metadata returns [Map attData] : ^( AT att= ID (pc= VT_PAREN_CHUNK )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:177:1: decl_metadata returns [Map attData] : ^( AT att= ID (pc= VT_PAREN_CHUNK )? ) ;
     public final Map decl_metadata() throws RecognitionException {
         Map attData = null;
 
@@ -1639,14 +1662,14 @@
 
         attData = new HashMap();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:2: ( ^( AT att= ID (pc= VT_PAREN_CHUNK )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:4: ^( AT att= ID (pc= VT_PAREN_CHUNK )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:2: ( ^( AT att= ID (pc= VT_PAREN_CHUNK )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:4: ^( AT att= ID (pc= VT_PAREN_CHUNK )? )
             {
-            match(input,AT,FOLLOW_AT_in_decl_metadata763); 
+            match(input,AT,FOLLOW_AT_in_decl_metadata764); 
 
             match(input, Token.DOWN, null); 
-            att=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_metadata767); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:18: (pc= VT_PAREN_CHUNK )?
+            att=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_metadata768); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:18: (pc= VT_PAREN_CHUNK )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -1655,9 +1678,9 @@
             }
             switch (alt21) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:179:18: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:179:18: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_metadata772); 
 
                     }
                     break;
@@ -1683,7 +1706,7 @@
 
 
     // $ANTLR start "decl_field"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:183:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:183:1: decl_field returns [TypeFieldDescr fieldDescr] : ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) ;
     public final TypeFieldDescr decl_field() throws RecognitionException {
         TypeFieldDescr fieldDescr = null;
 
@@ -1697,13 +1720,13 @@
 
         List<Map> declMetadaList = new LinkedList<Map>(); 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:2: ( ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:4: ^(id= ID (init= decl_field_initialization )? dt= data_type (dm= decl_metadata )* )
             {
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_field799); 
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_decl_field800); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: (init= decl_field_initialization )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: (init= decl_field_initialization )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -1712,9 +1735,9 @@
             }
             switch (alt22) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: init= decl_field_initialization
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:16: init= decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field803);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field804);
                     init=decl_field_initialization();
 
                     state._fsp--;
@@ -1725,12 +1748,12 @@
 
             }
 
-            pushFollow(FOLLOW_data_type_in_decl_field808);
+            pushFollow(FOLLOW_data_type_in_decl_field809);
             dt=data_type();
 
             state._fsp--;
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:57: (dm= decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:57: (dm= decl_metadata )*
             loop23:
             do {
                 int alt23=2;
@@ -1743,9 +1766,9 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:185:58: dm= decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:185:58: dm= decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field813);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field814);
             	    dm=decl_metadata();
 
             	    state._fsp--;
@@ -1779,20 +1802,20 @@
 
 
     // $ANTLR start "decl_field_initialization"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:189:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:189:1: decl_field_initialization returns [String expr] : ^( EQUALS pc= VT_PAREN_CHUNK ) ;
     public final String decl_field_initialization() throws RecognitionException {
         String expr = null;
 
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:190:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:190:4: ^( EQUALS pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:2: ( ^( EQUALS pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:190:4: ^( EQUALS pc= VT_PAREN_CHUNK )
             {
-            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization840); 
+            match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization841); 
 
             match(input, Token.DOWN, null); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization844); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization845); 
 
             match(input, Token.UP, null); 
             	expr = (pc!=null?pc.getText():null).substring(1, (pc!=null?pc.getText():null).length() -1 ).trim();	
@@ -1812,7 +1835,7 @@
 
 
     // $ANTLR start "rule_attribute"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:194:1: 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 ) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:194:1: 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 ) ) ;
     public final AttributeDescr rule_attribute() throws RecognitionException {
         AttributeDescr attributeDescr = null;
 
@@ -1820,11 +1843,11 @@
         DroolsTree value=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:2: ( ( ^(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 ) ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(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 ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:2: ( ( ^(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 ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(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 ) )
             {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(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 ) )
-            int alt30=12;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:4: ( ^(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 ) )
+            int alt30=15;
             switch ( input.LA(1) ) {
             case VK_SALIENCE:
                 {
@@ -1886,6 +1909,21 @@
                 alt30=12;
                 }
                 break;
+            case VK_PRIOR:
+                {
+                alt30=13;
+                }
+                break;
+            case VK_ENTAIL:
+                {
+                alt30=14;
+                }
+                break;
+            case VK_FILTER:
+                {
+                alt30=15;
+                }
+                break;
             default:
                 NoViableAltException nvae =
                     new NoViableAltException("", 30, 0, input);
@@ -1895,12 +1933,12 @@
 
             switch (alt30) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:5: ^(attrName= VK_SALIENCE (value= INT | value= VT_PAREN_CHUNK ) )
                     {
-                    attrName=(DroolsTree)match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute867); 
+                    attrName=(DroolsTree)match(input,VK_SALIENCE,FOLLOW_VK_SALIENCE_in_rule_attribute868); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:28: (value= INT | value= VT_PAREN_CHUNK )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:28: (value= INT | value= VT_PAREN_CHUNK )
                     int alt24=2;
                     int LA24_0 = input.LA(1);
 
@@ -1918,16 +1956,16 @@
                     }
                     switch (alt24) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:29: value= INT
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:29: value= INT
                             {
-                            value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute872); 
+                            value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute873); 
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:195:39: value= VT_PAREN_CHUNK
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:195:39: value= VT_PAREN_CHUNK
                             {
-                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute876); 
+                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute877); 
 
                             }
                             break;
@@ -1940,13 +1978,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:4: ^(attrName= VK_NO_LOOP (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute887); 
+                    attrName=(DroolsTree)match(input,VK_NO_LOOP,FOLLOW_VK_NO_LOOP_in_rule_attribute888); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: (value= BOOL )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: (value= BOOL )?
                         int alt25=2;
                         int LA25_0 = input.LA(1);
 
@@ -1955,9 +1993,9 @@
                         }
                         switch (alt25) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: value= BOOL
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:196:31: value= BOOL
                                 {
-                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute891); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute892); 
 
                                 }
                                 break;
@@ -1971,24 +2009,24 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:197:4: ^(attrName= VK_AGENDA_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute903); 
+                    attrName=(DroolsTree)match(input,VK_AGENDA_GROUP,FOLLOW_VK_AGENDA_GROUP_in_rule_attribute904); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute907); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute908); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_DURATION (value= INT | value= VT_PAREN_CHUNK ) )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:4: ^(attrName= VK_DURATION (value= INT | value= VT_PAREN_CHUNK ) )
                     {
-                    attrName=(DroolsTree)match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute918); 
+                    attrName=(DroolsTree)match(input,VK_DURATION,FOLLOW_VK_DURATION_in_rule_attribute919); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:27: (value= INT | value= VT_PAREN_CHUNK )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:27: (value= INT | value= VT_PAREN_CHUNK )
                     int alt26=2;
                     int LA26_0 = input.LA(1);
 
@@ -2006,16 +2044,16 @@
                     }
                     switch (alt26) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:28: value= INT
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:28: value= INT
                             {
-                            value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute923); 
+                            value=(DroolsTree)match(input,INT,FOLLOW_INT_in_rule_attribute924); 
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:198:38: value= VT_PAREN_CHUNK
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:198:38: value= VT_PAREN_CHUNK
                             {
-                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute927); 
+                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute928); 
 
                             }
                             break;
@@ -2028,25 +2066,25 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:199:4: ^(attrName= VK_ACTIVATION_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute940); 
+                    attrName=(DroolsTree)match(input,VK_ACTIVATION_GROUP,FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute941); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute944); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute945); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:4: ^(attrName= VK_AUTO_FOCUS (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute954); 
+                    attrName=(DroolsTree)match(input,VK_AUTO_FOCUS,FOLLOW_VK_AUTO_FOCUS_in_rule_attribute955); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: (value= BOOL )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: (value= BOOL )?
                         int alt27=2;
                         int LA27_0 = input.LA(1);
 
@@ -2055,9 +2093,9 @@
                         }
                         switch (alt27) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: value= BOOL
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:200:34: value= BOOL
                                 {
-                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute958); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute959); 
 
                                 }
                                 break;
@@ -2071,36 +2109,36 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:201:4: ^(attrName= VK_DATE_EFFECTIVE value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute969); 
+                    attrName=(DroolsTree)match(input,VK_DATE_EFFECTIVE,FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute970); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute973); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute974); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:202:4: ^(attrName= VK_DATE_EXPIRES value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute983); 
+                    attrName=(DroolsTree)match(input,VK_DATE_EXPIRES,FOLLOW_VK_DATE_EXPIRES_in_rule_attribute984); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute987); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute988); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:4: ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:4: ^(attrName= VK_ENABLED (value= BOOL | value= VT_PAREN_CHUNK ) )
                     {
-                    attrName=(DroolsTree)match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute997); 
+                    attrName=(DroolsTree)match(input,VK_ENABLED,FOLLOW_VK_ENABLED_in_rule_attribute998); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:26: (value= BOOL | value= VT_PAREN_CHUNK )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:26: (value= BOOL | value= VT_PAREN_CHUNK )
                     int alt28=2;
                     int LA28_0 = input.LA(1);
 
@@ -2118,16 +2156,16 @@
                     }
                     switch (alt28) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:27: value= BOOL
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:27: value= BOOL
                             {
-                            value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1002); 
+                            value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1003); 
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:203:38: value= VT_PAREN_CHUNK
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:203:38: value= VT_PAREN_CHUNK
                             {
-                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1006); 
+                            value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1007); 
 
                             }
                             break;
@@ -2140,25 +2178,25 @@
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:204:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:204:4: ^(attrName= VK_RULEFLOW_GROUP value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1017); 
+                    attrName=(DroolsTree)match(input,VK_RULEFLOW_GROUP,FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1018); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1021); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1022); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:4: ^(attrName= VK_LOCK_ON_ACTIVE (value= BOOL )? )
                     {
-                    attrName=(DroolsTree)match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1031); 
+                    attrName=(DroolsTree)match(input,VK_LOCK_ON_ACTIVE,FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1032); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: (value= BOOL )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: (value= BOOL )?
                         int alt29=2;
                         int LA29_0 = input.LA(1);
 
@@ -2167,9 +2205,9 @@
                         }
                         switch (alt29) {
                             case 1 :
-                                // src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: value= BOOL
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:205:38: value= BOOL
                                 {
-                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1035); 
+                                value=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_rule_attribute1036); 
 
                                 }
                                 break;
@@ -2183,18 +2221,54 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:206:4: ^(attrName= VK_DIALECT value= STRING )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:206:4: ^(attrName= VK_DIALECT value= STRING )
                     {
-                    attrName=(DroolsTree)match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute1045); 
+                    attrName=(DroolsTree)match(input,VK_DIALECT,FOLLOW_VK_DIALECT_in_rule_attribute1046); 
 
                     match(input, Token.DOWN, null); 
-                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1049); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1050); 
 
                     match(input, Token.UP, null); 
 
                     }
                     break;
+                case 13 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:207:4: ^(attrName= VK_PRIOR value= VT_PAREN_CHUNK )
+                    {
+                    attrName=(DroolsTree)match(input,VK_PRIOR,FOLLOW_VK_PRIOR_in_rule_attribute1059); 
 
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1063); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 14 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:208:4: ^(attrName= VK_ENTAIL value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_ENTAIL,FOLLOW_VK_ENTAIL_in_rule_attribute1072); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1076); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 15 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:209:4: ^(attrName= VK_FILTER value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_FILTER,FOLLOW_VK_FILTER_in_rule_attribute1085); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_rule_attribute1089); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+
             }
 
             	attributeDescr = factory.createAttribute(attrName, value);	
@@ -2213,8 +2287,205 @@
     // $ANTLR end "rule_attribute"
 
 
+    // $ANTLR start "constraint_attributes"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:215:1: constraint_attributes returns [List attrList] : ^( VT_CONSTR_ATTRIBUTES (conAtt= constr_attribute )+ ) ;
+    public final List constraint_attributes() throws RecognitionException {
+        List attrList = null;
+
+        AttributeDescr conAtt = null;
+
+
+
+          attrList = new LinkedList<AttributeDescr>();
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:218:3: ( ^( VT_CONSTR_ATTRIBUTES (conAtt= constr_attribute )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:218:5: ^( VT_CONSTR_ATTRIBUTES (conAtt= constr_attribute )+ )
+            {
+            match(input,VT_CONSTR_ATTRIBUTES,FOLLOW_VT_CONSTR_ATTRIBUTES_in_constraint_attributes1116); 
+
+            match(input, Token.DOWN, null); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:218:28: (conAtt= constr_attribute )+
+            int cnt31=0;
+            loop31:
+            do {
+                int alt31=2;
+                int LA31_0 = input.LA(1);
+
+                if ( (LA31_0==VK_CUT||LA31_0==VK_PRIOR||(LA31_0>=VK_CONSTRID && LA31_0<=VK_TYPE)) ) {
+                    alt31=1;
+                }
+
+
+                switch (alt31) {
+            	case 1 :
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:218:29: conAtt= constr_attribute
+            	    {
+            	    pushFollow(FOLLOW_constr_attribute_in_constraint_attributes1121);
+            	    conAtt=constr_attribute();
+
+            	    state._fsp--;
+
+            	    attrList.add(conAtt);
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt31 >= 1 ) break loop31;
+                        EarlyExitException eee =
+                            new EarlyExitException(31, input);
+                        throw eee;
+                }
+                cnt31++;
+            } while (true);
+
+
+            match(input, Token.UP, null); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return attrList;
+    }
+    // $ANTLR end "constraint_attributes"
+
+
+    // $ANTLR start "constr_attribute"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:221:1: constr_attribute returns [AttributeDescr attributeDescr] : ( ^(attrName= VK_CONSTRID value= STRING ) | ^(attrName= VK_ARGS value= STRING ) | ^(attrName= VK_TYPE value= STRING ) | ^(attrName= VK_CUT value= STRING ) | ^(attrName= VK_PRIOR value= STRING ) ) ;
+    public final AttributeDescr constr_attribute() throws RecognitionException {
+        AttributeDescr attributeDescr = null;
+
+        DroolsTree attrName=null;
+        DroolsTree value=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:222:3: ( ( ^(attrName= VK_CONSTRID value= STRING ) | ^(attrName= VK_ARGS value= STRING ) | ^(attrName= VK_TYPE value= STRING ) | ^(attrName= VK_CUT value= STRING ) | ^(attrName= VK_PRIOR value= STRING ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:222:5: ( ^(attrName= VK_CONSTRID value= STRING ) | ^(attrName= VK_ARGS value= STRING ) | ^(attrName= VK_TYPE value= STRING ) | ^(attrName= VK_CUT value= STRING ) | ^(attrName= VK_PRIOR value= STRING ) )
+            {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:222:5: ( ^(attrName= VK_CONSTRID value= STRING ) | ^(attrName= VK_ARGS value= STRING ) | ^(attrName= VK_TYPE value= STRING ) | ^(attrName= VK_CUT value= STRING ) | ^(attrName= VK_PRIOR value= STRING ) )
+            int alt32=5;
+            switch ( input.LA(1) ) {
+            case VK_CONSTRID:
+                {
+                alt32=1;
+                }
+                break;
+            case VK_ARGS:
+                {
+                alt32=2;
+                }
+                break;
+            case VK_TYPE:
+                {
+                alt32=3;
+                }
+                break;
+            case VK_CUT:
+                {
+                alt32=4;
+                }
+                break;
+            case VK_PRIOR:
+                {
+                alt32=5;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt32) {
+                case 1 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:223:5: ^(attrName= VK_CONSTRID value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_CONSTRID,FOLLOW_VK_CONSTRID_in_constr_attribute1155); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_constr_attribute1159); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 2 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:224:5: ^(attrName= VK_ARGS value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_ARGS,FOLLOW_VK_ARGS_in_constr_attribute1170); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_constr_attribute1174); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 3 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:225:5: ^(attrName= VK_TYPE value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_TYPE,FOLLOW_VK_TYPE_in_constr_attribute1186); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_constr_attribute1190); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 4 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:226:5: ^(attrName= VK_CUT value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_CUT,FOLLOW_VK_CUT_in_constr_attribute1203); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_constr_attribute1207); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:227:5: ^(attrName= VK_PRIOR value= STRING )
+                    {
+                    attrName=(DroolsTree)match(input,VK_PRIOR,FOLLOW_VK_PRIOR_in_constr_attribute1220); 
+
+                    match(input, Token.DOWN, null); 
+                    value=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_constr_attribute1224); 
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+
+            }
+
+             attributeDescr = factory.createAttribute(attrName, value); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return attributeDescr;
+    }
+    // $ANTLR end "constr_attribute"
+
+
     // $ANTLR start "lhs_block"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:210:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:232:1: lhs_block returns [AndDescr andDescr] : ^( VT_AND_IMPLICIT (dt= lhs )* ) ;
     public final AndDescr lhs_block() throws RecognitionException {
         AndDescr andDescr = null;
 
@@ -2225,29 +2496,29 @@
         	andDescr = new AndDescr();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:3: ( ^( VT_AND_IMPLICIT (dt= lhs )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:5: ^( VT_AND_IMPLICIT (dt= lhs )* )
             {
-            match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block1074); 
+            match(input,VT_AND_IMPLICIT,FOLLOW_VT_AND_IMPLICIT_in_lhs_block1259); 
 
             if ( input.LA(1)==Token.DOWN ) {
                 match(input, Token.DOWN, null); 
-                // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:23: (dt= lhs )*
-                loop31:
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:23: (dt= lhs )*
+                loop33:
                 do {
-                    int alt31=2;
-                    int LA31_0 = input.LA(1);
+                    int alt33=2;
+                    int LA33_0 = input.LA(1);
 
-                    if ( ((LA31_0>=VT_AND_PREFIX && LA31_0<=VT_OR_INFIX)||LA31_0==VT_PATTERN||LA31_0==VK_EVAL||LA31_0==VK_NOT||(LA31_0>=VK_EXISTS && LA31_0<=VK_FORALL)||LA31_0==FROM) ) {
-                        alt31=1;
+                    if ( ((LA33_0>=VT_AND_PREFIX && LA33_0<=VT_XOR)||LA33_0==VT_PATTERN||LA33_0==VT_HEDGE||LA33_0==VK_EVAL||LA33_0==VK_NOT||(LA33_0>=VK_EXISTS && LA33_0<=VK_FORANY)||LA33_0==FROM) ) {
+                        alt33=1;
                     }
 
 
-                    switch (alt31) {
+                    switch (alt33) {
                 	case 1 :
-                	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:213:24: dt= lhs
+                	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:235:24: dt= lhs
                 	    {
-                	    pushFollow(FOLLOW_lhs_in_lhs_block1079);
+                	    pushFollow(FOLLOW_lhs_in_lhs_block1264);
                 	    dt=lhs();
 
                 	    state._fsp--;
@@ -2258,7 +2529,7 @@
                 	    break;
 
                 	default :
-                	    break loop31;
+                	    break loop33;
                     }
                 } while (true);
 
@@ -2284,19 +2555,27 @@
     };
 
     // $ANTLR start "lhs"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:216:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:238:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
     public final DescrBuilderTree.lhs_return lhs() throws RecognitionException {
         DescrBuilderTree.lhs_return retval = new DescrBuilderTree.lhs_return();
         retval.start = input.LT(1);
 
         DroolsTree start=null;
         DroolsTree pc=null;
+        List attribs = null;
+
         DescrBuilderTree.lhs_return dt = null;
 
         DescrBuilderTree.lhs_return dt1 = null;
 
         DescrBuilderTree.lhs_return dt2 = null;
 
+        DescrBuilderTree.lhs_return arg = null;
+
+        DescrBuilderTree.lhs_return sub = null;
+
+        DescrBuilderTree.lhs_return wgt = null;
+
         BaseDescr pn = null;
 
         DescrBuilderTree.from_elements_return fe = null;
@@ -2306,90 +2585,132 @@
         	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:3: ( ^(start= VT_OR_PREFIX (dt= lhs )+ ) | ^(start= VT_OR_INFIX dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (dt= lhs )+ ) | ^(start= VT_AND_INFIX dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
-            int alt35=10;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:3: ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
+            int alt45=14;
             switch ( input.LA(1) ) {
             case VT_OR_PREFIX:
                 {
-                alt35=1;
+                alt45=1;
                 }
                 break;
             case VT_OR_INFIX:
                 {
-                alt35=2;
+                alt45=2;
                 }
                 break;
             case VT_AND_PREFIX:
                 {
-                alt35=3;
+                alt45=3;
                 }
                 break;
             case VT_AND_INFIX:
                 {
-                alt35=4;
+                alt45=4;
                 }
                 break;
+            case VT_EQUIV:
+                {
+                alt45=5;
+                }
+                break;
+            case VT_XOR:
+                {
+                alt45=6;
+                }
+                break;
             case VK_EXISTS:
                 {
-                alt35=5;
+                alt45=7;
                 }
                 break;
             case VK_NOT:
                 {
-                alt35=6;
+                alt45=8;
                 }
                 break;
+            case VT_HEDGE:
+                {
+                alt45=9;
+                }
+                break;
             case VK_EVAL:
                 {
-                alt35=7;
+                alt45=10;
                 }
                 break;
             case VK_FORALL:
                 {
-                alt35=8;
+                alt45=11;
                 }
                 break;
+            case VK_FORANY:
+                {
+                alt45=12;
+                }
+                break;
             case FROM:
                 {
-                alt35=9;
+                alt45=13;
                 }
                 break;
             case VT_PATTERN:
                 {
-                alt35=10;
+                alt45=14;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt35) {
+            switch (alt45) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:5: ^(start= VT_OR_PREFIX (dt= lhs )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:5: ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ )
                     {
-                    start=(DroolsTree)match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1105); 
+                    start=(DroolsTree)match(input,VT_OR_PREFIX,FOLLOW_VT_OR_PREFIX_in_lhs1290); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:26: (dt= lhs )+
-                    int cnt32=0;
-                    loop32:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:33: (attribs= constraint_attributes )?
+                    int alt34=2;
+                    int LA34_0 = input.LA(1);
+
+                    if ( (LA34_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt34=1;
+                    }
+                    switch (alt34) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:33: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1294);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:57: (dt= lhs )+
+                    int cnt35=0;
+                    loop35:
                     do {
-                        int alt32=2;
-                        int LA32_0 = input.LA(1);
+                        int alt35=2;
+                        int LA35_0 = input.LA(1);
 
-                        if ( ((LA32_0>=VT_AND_PREFIX && LA32_0<=VT_OR_INFIX)||LA32_0==VT_PATTERN||LA32_0==VK_EVAL||LA32_0==VK_NOT||(LA32_0>=VK_EXISTS && LA32_0<=VK_FORALL)||LA32_0==FROM) ) {
-                            alt32=1;
+                        if ( ((LA35_0>=VT_AND_PREFIX && LA35_0<=VT_XOR)||LA35_0==VT_PATTERN||LA35_0==VT_HEDGE||LA35_0==VK_EVAL||LA35_0==VK_NOT||(LA35_0>=VK_EXISTS && LA35_0<=VK_FORANY)||LA35_0==FROM) ) {
+                            alt35=1;
                         }
 
 
-                        switch (alt32) {
+                        switch (alt35) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:219:27: dt= lhs
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:58: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1110);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1300);
                     	    dt=lhs();
 
                     	    state._fsp--;
@@ -2400,32 +2721,54 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt32 >= 1 ) break loop32;
+                    	    if ( cnt35 >= 1 ) break loop35;
                                 EarlyExitException eee =
-                                    new EarlyExitException(32, input);
+                                    new EarlyExitException(35, input);
                                 throw eee;
                         }
-                        cnt32++;
+                        cnt35++;
                     } while (true);
 
 
                     match(input, Token.UP, null); 
-                    	retval.baseDescr = factory.createOr(start, lhsList);	
+                    	retval.baseDescr = factory.createOr(start, lhsList, attribs);	
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:221:4: ^(start= VT_OR_INFIX dt1= lhs dt2= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:243:4: ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1126); 
+                    start=(DroolsTree)match(input,VT_OR_INFIX,FOLLOW_VT_OR_INFIX_in_lhs1316); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1130);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:243:31: (attribs= constraint_attributes )?
+                    int alt36=2;
+                    int LA36_0 = input.LA(1);
+
+                    if ( (LA36_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt36=1;
+                    }
+                    switch (alt36) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:243:31: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1320);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_lhs_in_lhs1325);
                     dt1=lhs();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_lhs_in_lhs1134);
+                    pushFollow(FOLLOW_lhs_in_lhs1329);
                     dt2=lhs();
 
                     state._fsp--;
@@ -2434,33 +2777,55 @@
                     match(input, Token.UP, null); 
                     	lhsList.add((dt1!=null?dt1.baseDescr:null));
                     		lhsList.add((dt2!=null?dt2.baseDescr:null));
-                    		retval.baseDescr = factory.createOr(start, lhsList);	
+                    		retval.baseDescr = factory.createOr(start, lhsList, attribs);	
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:4: ^(start= VT_AND_PREFIX (dt= lhs )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:247:4: ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ )
                     {
-                    start=(DroolsTree)match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1146); 
+                    start=(DroolsTree)match(input,VT_AND_PREFIX,FOLLOW_VT_AND_PREFIX_in_lhs1341); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:26: (dt= lhs )+
-                    int cnt33=0;
-                    loop33:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:247:33: (attribs= constraint_attributes )?
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+
+                    if ( (LA37_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt37=1;
+                    }
+                    switch (alt37) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:247:33: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1345);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:247:57: (dt= lhs )+
+                    int cnt38=0;
+                    loop38:
                     do {
-                        int alt33=2;
-                        int LA33_0 = input.LA(1);
+                        int alt38=2;
+                        int LA38_0 = input.LA(1);
 
-                        if ( ((LA33_0>=VT_AND_PREFIX && LA33_0<=VT_OR_INFIX)||LA33_0==VT_PATTERN||LA33_0==VK_EVAL||LA33_0==VK_NOT||(LA33_0>=VK_EXISTS && LA33_0<=VK_FORALL)||LA33_0==FROM) ) {
-                            alt33=1;
+                        if ( ((LA38_0>=VT_AND_PREFIX && LA38_0<=VT_XOR)||LA38_0==VT_PATTERN||LA38_0==VT_HEDGE||LA38_0==VK_EVAL||LA38_0==VK_NOT||(LA38_0>=VK_EXISTS && LA38_0<=VK_FORANY)||LA38_0==FROM) ) {
+                            alt38=1;
                         }
 
 
-                        switch (alt33) {
+                        switch (alt38) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:225:27: dt= lhs
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:247:58: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1151);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1351);
                     	    dt=lhs();
 
                     	    state._fsp--;
@@ -2471,32 +2836,54 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt33 >= 1 ) break loop33;
+                    	    if ( cnt38 >= 1 ) break loop38;
                                 EarlyExitException eee =
-                                    new EarlyExitException(33, input);
+                                    new EarlyExitException(38, input);
                                 throw eee;
                         }
-                        cnt33++;
+                        cnt38++;
                     } while (true);
 
 
                     match(input, Token.UP, null); 
-                    	retval.baseDescr = factory.createAnd(start, lhsList);	
+                    	retval.baseDescr = factory.createAnd(start, lhsList, attribs);	
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:227:4: ^(start= VT_AND_INFIX dt1= lhs dt2= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:249:4: ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1167); 
+                    start=(DroolsTree)match(input,VT_AND_INFIX,FOLLOW_VT_AND_INFIX_in_lhs1367); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1171);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:249:32: (attribs= constraint_attributes )?
+                    int alt39=2;
+                    int LA39_0 = input.LA(1);
+
+                    if ( (LA39_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt39=1;
+                    }
+                    switch (alt39) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:249:32: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1371);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_lhs_in_lhs1376);
                     dt1=lhs();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_lhs_in_lhs1175);
+                    pushFollow(FOLLOW_lhs_in_lhs1380);
                     dt2=lhs();
 
                     state._fsp--;
@@ -2505,17 +2892,109 @@
                     match(input, Token.UP, null); 
                     	lhsList.add((dt1!=null?dt1.baseDescr:null));
                     		lhsList.add((dt2!=null?dt2.baseDescr:null));
-                    		retval.baseDescr = factory.createAnd(start, lhsList);	
+                    		retval.baseDescr = factory.createAnd(start, lhsList, attribs);	
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:231:4: ^(start= VK_EXISTS dt= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:5: ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1187); 
+                    start=(DroolsTree)match(input,VT_EQUIV,FOLLOW_VT_EQUIV_in_lhs1396); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1191);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:29: (attribs= constraint_attributes )?
+                    int alt40=2;
+                    int LA40_0 = input.LA(1);
+
+                    if ( (LA40_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt40=1;
+                    }
+                    switch (alt40) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:254:29: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1400);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_lhs_in_lhs1405);
+                    dt1=lhs();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_lhs_in_lhs1409);
+                    dt2=lhs();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                     lhsList.add((dt1!=null?dt1.baseDescr:null));
+                        lhsList.add((dt2!=null?dt2.baseDescr:null));
+                        retval.baseDescr = factory.createEquiv(start, lhsList, attribs);  
+
+                    }
+                    break;
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:258:6: ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs )
+                    {
+                    start=(DroolsTree)match(input,VT_XOR,FOLLOW_VT_XOR_in_lhs1425); 
+
+                    match(input, Token.DOWN, null); 
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:258:28: (attribs= constraint_attributes )?
+                    int alt41=2;
+                    int LA41_0 = input.LA(1);
+
+                    if ( (LA41_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt41=1;
+                    }
+                    switch (alt41) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:258:28: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1429);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_lhs_in_lhs1434);
+                    dt1=lhs();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_lhs_in_lhs1438);
+                    dt2=lhs();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                     lhsList.add((dt1!=null?dt1.baseDescr:null));
+                        lhsList.add((dt2!=null?dt2.baseDescr:null));
+                        retval.baseDescr = factory.createXor(start, lhsList, attribs);  
+
+                    }
+                    break;
+                case 7 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:4: ^(start= VK_EXISTS dt= lhs )
+                    {
+                    start=(DroolsTree)match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1462); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_lhs_in_lhs1466);
                     dt=lhs();
 
                     state._fsp--;
@@ -2526,13 +3005,13 @@
 
                     }
                     break;
-                case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:233:4: ^(start= VK_NOT dt= lhs )
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:267:4: ^(start= VK_NOT dt= lhs )
                     {
-                    start=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1203); 
+                    start=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1478); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1207);
+                    pushFollow(FOLLOW_lhs_in_lhs1482);
                     dt=lhs();
 
                     state._fsp--;
@@ -2543,42 +3022,59 @@
 
                     }
                     break;
-                case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:235:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
+                case 9 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:270:5: ^(start= VT_HEDGE dt= lhs )
                     {
-                    start=(DroolsTree)match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1219); 
+                    start=(DroolsTree)match(input,VT_HEDGE,FOLLOW_VT_HEDGE_in_lhs1497); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1223); 
+                    pushFollow(FOLLOW_lhs_in_lhs1501);
+                    dt=lhs();
 
+                    state._fsp--;
+
+
                     match(input, Token.UP, null); 
+                     retval.baseDescr = factory.createHedge(start, (dt!=null?dt.baseDescr:null));  
+
+                    }
+                    break;
+                case 10 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:274:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
+                    {
+                    start=(DroolsTree)match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1518); 
+
+                    match(input, Token.DOWN, null); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1522); 
+
+                    match(input, Token.UP, null); 
                     	retval.baseDescr = factory.createEval(start, pc);	
 
                     }
                     break;
-                case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:4: ^(start= VK_FORALL (dt= lhs )+ )
+                case 11 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:4: ^(start= VK_FORALL (dt= lhs )+ )
                     {
-                    start=(DroolsTree)match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1235); 
+                    start=(DroolsTree)match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1534); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:22: (dt= lhs )+
-                    int cnt34=0;
-                    loop34:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:22: (dt= lhs )+
+                    int cnt42=0;
+                    loop42:
                     do {
-                        int alt34=2;
-                        int LA34_0 = input.LA(1);
+                        int alt42=2;
+                        int LA42_0 = input.LA(1);
 
-                        if ( ((LA34_0>=VT_AND_PREFIX && LA34_0<=VT_OR_INFIX)||LA34_0==VT_PATTERN||LA34_0==VK_EVAL||LA34_0==VK_NOT||(LA34_0>=VK_EXISTS && LA34_0<=VK_FORALL)||LA34_0==FROM) ) {
-                            alt34=1;
+                        if ( ((LA42_0>=VT_AND_PREFIX && LA42_0<=VT_XOR)||LA42_0==VT_PATTERN||LA42_0==VT_HEDGE||LA42_0==VK_EVAL||LA42_0==VK_NOT||(LA42_0>=VK_EXISTS && LA42_0<=VK_FORANY)||LA42_0==FROM) ) {
+                            alt42=1;
                         }
 
 
-                        switch (alt34) {
+                        switch (alt42) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:237:23: dt= lhs
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:23: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1240);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1539);
                     	    dt=lhs();
 
                     	    state._fsp--;
@@ -2589,12 +3085,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt34 >= 1 ) break loop34;
+                    	    if ( cnt42 >= 1 ) break loop42;
                                 EarlyExitException eee =
-                                    new EarlyExitException(34, input);
+                                    new EarlyExitException(42, input);
                                 throw eee;
                         }
-                        cnt34++;
+                        cnt42++;
                     } while (true);
 
 
@@ -2603,18 +3099,87 @@
 
                     }
                     break;
-                case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:239:4: ^( FROM pn= lhs_pattern fe= from_elements )
+                case 12 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:5: ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) )
                     {
-                    match(input,FROM,FOLLOW_FROM_in_lhs1254); 
+                    start=(DroolsTree)match(input,VK_FORANY,FOLLOW_VK_FORANY_in_lhs1558); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1258);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:23: (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:24: arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )?
+                    {
+                    pushFollow(FOLLOW_lhs_in_lhs1563);
+                    arg=lhs();
+
+                    state._fsp--;
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:32: ( VK_SUBJECT sub= lhs )?
+                    int alt43=2;
+                    int LA43_0 = input.LA(1);
+
+                    if ( (LA43_0==VK_SUBJECT) ) {
+                        alt43=1;
+                    }
+                    switch (alt43) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:33: VK_SUBJECT sub= lhs
+                            {
+                            match(input,VK_SUBJECT,FOLLOW_VK_SUBJECT_in_lhs1566); 
+                            pushFollow(FOLLOW_lhs_in_lhs1570);
+                            sub=lhs();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:54: ( VK_WEIGHT wgt= lhs )?
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
+
+                    if ( (LA44_0==VK_WEIGHT) ) {
+                        alt44=1;
+                    }
+                    switch (alt44) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:55: VK_WEIGHT wgt= lhs
+                            {
+                            match(input,VK_WEIGHT,FOLLOW_VK_WEIGHT_in_lhs1575); 
+                            pushFollow(FOLLOW_lhs_in_lhs1579);
+                            wgt=lhs();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    match(input, Token.UP, null); 
+                     retval.baseDescr = factory.createForAny(start, arg.baseDescr, sub == null ? null : sub.baseDescr, wgt == null ? null : wgt.baseDescr); 
+
+                    }
+                    break;
+                case 13 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:282:4: ^( FROM pn= lhs_pattern fe= from_elements )
+                    {
+                    match(input,FROM,FOLLOW_FROM_in_lhs1597); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1601);
                     pn=lhs_pattern();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_from_elements_in_lhs1262);
+                    pushFollow(FOLLOW_from_elements_in_lhs1605);
                     fe=from_elements();
 
                     state._fsp--;
@@ -2625,10 +3190,10 @@
 
                     }
                     break;
-                case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:241:4: pn= lhs_pattern
+                case 14 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:4: pn= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1273);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1616);
                     pn=lhs_pattern();
 
                     state._fsp--;
@@ -2655,7 +3220,7 @@
     };
 
     // $ANTLR start "from_elements"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:245:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
     public final DescrBuilderTree.from_elements_return from_elements() throws RecognitionException {
         DescrBuilderTree.from_elements_return retval = new DescrBuilderTree.from_elements_return();
         retval.start = input.LT(1);
@@ -2670,50 +3235,50 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:246:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
-            int alt36=4;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
+            int alt46=4;
             switch ( input.LA(1) ) {
             case ACCUMULATE:
                 {
-                alt36=1;
+                alt46=1;
                 }
                 break;
             case COLLECT:
                 {
-                alt36=2;
+                alt46=2;
                 }
                 break;
             case VK_ENTRY_POINT:
                 {
-                alt36=3;
+                alt46=3;
                 }
                 break;
             case VT_FROM_SOURCE:
                 {
-                alt36=4;
+                alt46=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 36, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt36) {
+            switch (alt46) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:246:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
                     {
-                    start=(DroolsTree)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1294); 
+                    start=(DroolsTree)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1637); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1298);
+                    pushFollow(FOLLOW_lhs_in_from_elements1641);
                     dt=lhs();
 
                     state._fsp--;
 
                     	retval.patternSourceDescr = factory.createAccumulate(start, (dt!=null?dt.baseDescr:null));	
-                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1308);
+                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1651);
                     ret=accumulate_parts(retval.patternSourceDescr);
 
                     state._fsp--;
@@ -2725,12 +3290,12 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:250:4: ^(start= COLLECT dt= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:293:4: ^(start= COLLECT dt= lhs )
                     {
-                    start=(DroolsTree)match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1321); 
+                    start=(DroolsTree)match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1664); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1325);
+                    pushFollow(FOLLOW_lhs_in_from_elements1668);
                     dt=lhs();
 
                     state._fsp--;
@@ -2742,12 +3307,12 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:252:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
                     {
-                    start=(DroolsTree)match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1337); 
+                    start=(DroolsTree)match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1680); 
 
                     match(input, Token.DOWN, null); 
-                    entryId=(DroolsTree)match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1341); 
+                    entryId=(DroolsTree)match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1684); 
 
                     match(input, Token.UP, null); 
                     	retval.patternSourceDescr = factory.createEntryPoint(start, entryId);	
@@ -2755,9 +3320,9 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:254:4: fs= from_source_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:297:4: fs= from_source_clause
                     {
-                    pushFollow(FOLLOW_from_source_clause_in_from_elements1352);
+                    pushFollow(FOLLOW_from_source_clause_in_from_elements1695);
                     fs=from_source_clause();
 
                     state._fsp--;
@@ -2781,7 +3346,7 @@
 
 
     // $ANTLR start "accumulate_parts"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:258:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:301:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
     public final AccumulateDescr accumulate_parts(PatternSourceDescr patternSourceDescr) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -2791,27 +3356,27 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:259:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
 
-            if ( (LA37_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
-                alt37=1;
+            if ( (LA47_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
+                alt47=1;
             }
-            else if ( (LA37_0==VT_ACCUMULATE_ID_CLAUSE) ) {
-                alt37=2;
+            else if ( (LA47_0==VT_ACCUMULATE_ID_CLAUSE) ) {
+                alt47=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
-            switch (alt37) {
+            switch (alt47) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:259:4: ac1= accumulate_init_clause[$patternSourceDescr]
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:4: ac1= accumulate_init_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1373);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1716);
                     ac1=accumulate_init_clause(patternSourceDescr);
 
                     state._fsp--;
@@ -2821,9 +3386,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:261:4: ac2= accumulate_id_clause[$patternSourceDescr]
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:304:4: ac2= accumulate_id_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1384);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1727);
                     ac2=accumulate_id_clause(patternSourceDescr);
 
                     state._fsp--;
@@ -2850,7 +3415,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:265:1: 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 ) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:308:1: 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 ) ) ;
     public final DescrBuilderTree.accumulate_init_clause_return accumulate_init_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         DescrBuilderTree.accumulate_init_clause_return retval = new DescrBuilderTree.accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -2863,36 +3428,36 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:2: ( ^( 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 ) ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:4: ^( 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 ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:2: ( ^( 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 ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:4: ^( 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 ) )
             {
-            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1407); 
+            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1750); 
 
             match(input, Token.DOWN, null); 
-            start=(DroolsTree)match(input,VK_INIT,FOLLOW_VK_INIT_in_accumulate_init_clause1416); 
+            start=(DroolsTree)match(input,VK_INIT,FOLLOW_VK_INIT_in_accumulate_init_clause1759); 
 
             match(input, Token.DOWN, null); 
-            pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1420); 
+            pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1763); 
 
             match(input, Token.UP, null); 
-            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1428); 
+            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1771); 
 
             match(input, Token.DOWN, null); 
-            pc2=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1432); 
+            pc2=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1775); 
 
             match(input, Token.UP, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: (rev= accumulate_init_reverse_clause )?
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:7: (rev= accumulate_init_reverse_clause )?
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA38_0==VK_REVERSE) ) {
-                alt38=1;
+            if ( (LA48_0==VK_REVERSE) ) {
+                alt48=1;
             }
-            switch (alt38) {
+            switch (alt48) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:269:7: rev= accumulate_init_reverse_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:7: rev= accumulate_init_reverse_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1441);
+                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1784);
                     rev=accumulate_init_reverse_clause();
 
                     state._fsp--;
@@ -2903,10 +3468,10 @@
 
             }
 
-            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1448); 
+            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1791); 
 
             match(input, Token.DOWN, null); 
-            pc3=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1452); 
+            pc3=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1795); 
 
             match(input, Token.UP, null); 
 
@@ -2936,7 +3501,7 @@
     };
 
     // $ANTLR start "accumulate_init_reverse_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:278:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:321:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
     public final DescrBuilderTree.accumulate_init_reverse_clause_return accumulate_init_reverse_clause() throws RecognitionException {
         DescrBuilderTree.accumulate_init_reverse_clause_return retval = new DescrBuilderTree.accumulate_init_reverse_clause_return();
         retval.start = input.LT(1);
@@ -2945,13 +3510,13 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:279:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:279:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
             {
-            vk=(DroolsTree)match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1475); 
+            vk=(DroolsTree)match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1818); 
 
             match(input, Token.DOWN, null); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1479); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1822); 
 
             match(input, Token.UP, null); 
             	retval.vkReverse = vk;
@@ -2972,7 +3537,7 @@
 
 
     // $ANTLR start "accumulate_id_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:284:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
     public final AccumulateDescr accumulate_id_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -2980,14 +3545,14 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:285:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:285:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1501); 
+            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1844); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accumulate_id_clause1505); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1509); 
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accumulate_id_clause1848); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1852); 
 
             match(input, Token.UP, null); 
             	accumulateDescr = factory.setupAccumulateId(accumulateParam, id, pc);	
@@ -3016,7 +3581,7 @@
     };
 
     // $ANTLR start "from_source_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:289:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:332:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final DescrBuilderTree.from_source_clause_return from_source_clause() throws RecognitionException {
         from_source_clause_stack.push(new from_source_clause_scope());
         DescrBuilderTree.from_source_clause_return retval = new DescrBuilderTree.from_source_clause_return();
@@ -3026,25 +3591,25 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1531); 
+            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1874); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_from_source_clause1535); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: (pc= VT_PAREN_CHUNK )?
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_from_source_clause1878); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:30: (pc= VT_PAREN_CHUNK )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA39_0==VT_PAREN_CHUNK) ) {
-                alt39=1;
+            if ( (LA49_0==VT_PAREN_CHUNK) ) {
+                alt49=1;
             }
-            switch (alt39) {
+            switch (alt49) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:292:30: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:30: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1539); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1882); 
 
                     }
                     break;
@@ -3053,18 +3618,18 @@
 
             	((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr = factory.createAccessor(id, pc);	
             		retval.retAccessorDescr = ((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr;	
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: ( expression_chain )?
-            int alt40=2;
-            int LA40_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:338:3: ( expression_chain )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
 
-            if ( (LA40_0==VT_EXPRESSION_CHAIN) ) {
-                alt40=1;
+            if ( (LA50_0==VT_EXPRESSION_CHAIN) ) {
+                alt50=1;
             }
-            switch (alt40) {
+            switch (alt50) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:295:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:338:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1548);
+                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1891);
                     expression_chain();
 
                     state._fsp--;
@@ -3097,7 +3662,7 @@
     };
 
     // $ANTLR start "expression_chain"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:299:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:342:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final DescrBuilderTree.expression_chain_return expression_chain() throws RecognitionException {
         DescrBuilderTree.expression_chain_return retval = new DescrBuilderTree.expression_chain_return();
         retval.start = input.LT(1);
@@ -3108,43 +3673,43 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            start=(DroolsTree)match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1567); 
+            start=(DroolsTree)match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1910); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_expression_chain1571); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: (sc= VT_SQUARE_CHUNK )?
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_expression_chain1914); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:40: (sc= VT_SQUARE_CHUNK )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA41_0==VT_SQUARE_CHUNK) ) {
-                alt41=1;
+            if ( (LA51_0==VT_SQUARE_CHUNK) ) {
+                alt51=1;
             }
-            switch (alt41) {
+            switch (alt51) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:40: sc= VT_SQUARE_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:40: sc= VT_SQUARE_CHUNK
                     {
-                    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1575); 
+                    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1918); 
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: (pc= VT_PAREN_CHUNK )?
-            int alt42=2;
-            int LA42_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:60: (pc= VT_PAREN_CHUNK )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA42_0==VT_PAREN_CHUNK) ) {
-                alt42=1;
+            if ( (LA52_0==VT_PAREN_CHUNK) ) {
+                alt52=1;
             }
-            switch (alt42) {
+            switch (alt52) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:300:60: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:60: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1580); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1923); 
 
                     }
                     break;
@@ -3153,18 +3718,18 @@
 
             	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain(start, id, sc, pc);	
             		((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr.addInvoker(declarativeInvokerResult);	
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: ( expression_chain )?
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:346:3: ( expression_chain )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( (LA43_0==VT_EXPRESSION_CHAIN) ) {
-                alt43=1;
+            if ( (LA53_0==VT_EXPRESSION_CHAIN) ) {
+                alt53=1;
             }
-            switch (alt43) {
+            switch (alt53) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:303:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:346:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1588);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1931);
                     expression_chain();
 
                     state._fsp--;
@@ -3193,7 +3758,7 @@
 
 
     // $ANTLR start "lhs_pattern"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:306:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr baseDescr = null;
 
@@ -3203,31 +3768,31 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
             {
-            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1606); 
+            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1950); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1610);
+            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1954);
             fe=fact_expression();
 
             state._fsp--;
 
 
             match(input, Token.UP, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: (oc= over_clause )?
-            int alt44=2;
-            int LA44_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:40: (oc= over_clause )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA44_0==OVER) ) {
-                alt44=1;
+            if ( (LA54_0==OVER) ) {
+                alt54=1;
             }
-            switch (alt44) {
+            switch (alt54) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:307:39: oc= over_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:40: oc= over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1615);
+                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1960);
                     oc=over_clause();
 
                     state._fsp--;
@@ -3238,7 +3803,9 @@
 
             }
 
-            	baseDescr = factory.setupBehavior((fe!=null?fe.descr:null), oc);	
+            	
+            	 baseDescr = factory.setupBehavior((fe!=null?fe.descr:null), oc);	  
+            	
 
             }
 
@@ -3255,7 +3822,7 @@
 
 
     // $ANTLR start "over_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:311:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:356:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
     public final List over_clause() throws RecognitionException {
         List behaviorList = null;
 
@@ -3264,29 +3831,29 @@
 
         behaviorList = new LinkedList();
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:2: ( ^( OVER (oe= over_element )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:4: ^( OVER (oe= over_element )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:2: ( ^( OVER (oe= over_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:4: ^( OVER (oe= over_element )+ )
             {
-            match(input,OVER,FOLLOW_OVER_in_over_clause1640); 
+            match(input,OVER,FOLLOW_OVER_in_over_clause1985); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:11: (oe= over_element )+
-            int cnt45=0;
-            loop45:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:11: (oe= over_element )+
+            int cnt55=0;
+            loop55:
             do {
-                int alt45=2;
-                int LA45_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA45_0==VT_BEHAVIOR) ) {
-                    alt45=1;
+                if ( (LA55_0==VT_BEHAVIOR) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt45) {
+                switch (alt55) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:313:12: oe= over_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:12: oe= over_element
             	    {
-            	    pushFollow(FOLLOW_over_element_in_over_clause1645);
+            	    pushFollow(FOLLOW_over_element_in_over_clause1990);
             	    oe=over_element();
 
             	    state._fsp--;
@@ -3297,12 +3864,12 @@
             	    break;
 
             	default :
-            	    if ( cnt45 >= 1 ) break loop45;
+            	    if ( cnt55 >= 1 ) break loop55;
                         EarlyExitException eee =
-                            new EarlyExitException(45, input);
+                            new EarlyExitException(55, input);
                         throw eee;
                 }
-                cnt45++;
+                cnt55++;
             } while (true);
 
 
@@ -3323,7 +3890,7 @@
 
 
     // $ANTLR start "over_element"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:316:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
     public final BehaviorDescr over_element() throws RecognitionException {
         BehaviorDescr behavior = null;
 
@@ -3331,15 +3898,15 @@
         DroolsTree pc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:317:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:317:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:362:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:362:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element1666); 
+            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element2011); 
 
             match(input, Token.DOWN, null); 
-            match(input,ID,FOLLOW_ID_in_over_element1668); 
-            id2=(DroolsTree)match(input,ID,FOLLOW_ID_in_over_element1672); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element1676); 
+            match(input,ID,FOLLOW_ID_in_over_element2013); 
+            id2=(DroolsTree)match(input,ID,FOLLOW_ID_in_over_element2017); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element2021); 
 
             match(input, Token.UP, null); 
             	behavior = factory.createBehavior(id2,pc);	
@@ -3362,7 +3929,7 @@
     };
 
     // $ANTLR start "fact_expression"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:321:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_e!
 lement )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (!
 fe= fact_expression )+ ) | ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
     public final DescrBuilderTree.fact_expression_return fact_expression() throws RecognitionException {
         DescrBuilderTree.fact_expression_return retval = new DescrBuilderTree.fact_expression_return();
         retval.start = input.LT(1);
@@ -3372,6 +3939,7 @@
         DroolsTree pc=null;
         DroolsTree op=null;
         DroolsTree not=null;
+        DroolsTree approx=null;
         DroolsTree param=null;
         DroolsTree s=null;
         DroolsTree i=null;
@@ -3382,6 +3950,8 @@
 
         DescrBuilderTree.fact_expression_return fe = null;
 
+        List attribs = null;
+
         DescrBuilderTree.fact_expression_return fact = null;
 
         DescrBuilderTree.fact_expression_return left = null;
@@ -3397,159 +3967,161 @@
         	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( DOUBLE_PIPE left= fact_expression right= fact_expression ) | ^( DOUBLE_AMPER left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f!
 = FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
-            int alt53=23;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( ( DOUB!
 LE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            int alt70=23;
             switch ( input.LA(1) ) {
             case VT_FACT:
                 {
-                alt53=1;
+                alt70=1;
                 }
                 break;
             case VT_FACT_BINDING:
                 {
-                alt53=2;
+                alt70=2;
                 }
                 break;
             case VT_FACT_OR:
                 {
-                alt53=3;
+                alt70=3;
                 }
                 break;
             case VT_FIELD:
                 {
-                alt53=4;
+                alt70=4;
                 }
                 break;
             case VT_BIND_FIELD:
                 {
-                alt53=5;
+                alt70=5;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt53=6;
+                alt70=6;
                 }
                 break;
             case EQUAL:
                 {
-                alt53=7;
+                alt70=7;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt53=8;
+                alt70=8;
                 }
                 break;
             case GREATER:
                 {
-                alt53=9;
+                alt70=9;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt53=10;
+                alt70=10;
                 }
                 break;
             case LESS:
                 {
-                alt53=11;
+                alt70=11;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt53=12;
+                alt70=12;
                 }
                 break;
             case VK_OPERATOR:
                 {
-                alt53=13;
+                alt70=13;
                 }
                 break;
             case VK_IN:
                 {
-                alt53=14;
+                alt70=14;
                 }
                 break;
             case DOUBLE_PIPE:
+            case SINGLE_PIPE:
                 {
-                alt53=15;
+                alt70=15;
                 }
                 break;
             case DOUBLE_AMPER:
+            case SINGLE_AMPER:
                 {
-                alt53=16;
+                alt70=16;
                 }
                 break;
             case VT_ACCESSOR_PATH:
                 {
-                alt53=17;
+                alt70=17;
                 }
                 break;
             case STRING:
                 {
-                alt53=18;
+                alt70=18;
                 }
                 break;
             case INT:
                 {
-                alt53=19;
+                alt70=19;
                 }
                 break;
             case FLOAT:
                 {
-                alt53=20;
+                alt70=20;
                 }
                 break;
             case BOOL:
                 {
-                alt53=21;
+                alt70=21;
                 }
                 break;
             case NULL:
                 {
-                alt53=22;
+                alt70=22;
                 }
                 break;
             case VT_PAREN_CHUNK:
                 {
-                alt53=23;
+                alt70=23;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 53, 0, input);
+                    new NoViableAltException("", 70, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt53) {
+            switch (alt70) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? )
                     {
-                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression1699); 
+                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression2044); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_pattern_type_in_fact_expression1703);
+                    pushFollow(FOLLOW_pattern_type_in_fact_expression2048);
                     pt=pattern_type();
 
                     state._fsp--;
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:31: (fe= fact_expression )*
-                    loop46:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:31: (fe= fact_expression )*
+                    loop56:
                     do {
-                        int alt46=2;
-                        int LA46_0 = input.LA(1);
+                        int alt56=2;
+                        int LA56_0 = input.LA(1);
 
-                        if ( (LA46_0==VT_FACT||LA46_0==VT_PAREN_CHUNK||(LA46_0>=VT_FACT_BINDING && LA46_0<=VT_ACCESSOR_PATH)||LA46_0==VK_EVAL||LA46_0==VK_IN||LA46_0==VK_OPERATOR||LA46_0==STRING||(LA46_0>=BOOL && LA46_0<=DOUBLE_AMPER)||(LA46_0>=EQUAL && LA46_0<=NULL)) ) {
-                            alt46=1;
+                        if ( (LA56_0==VT_FACT||LA56_0==VT_PAREN_CHUNK||(LA56_0>=VT_FACT_BINDING && LA56_0<=VT_ACCESSOR_PATH)||LA56_0==VK_EVAL||LA56_0==VK_IN||LA56_0==VK_OPERATOR||LA56_0==STRING||(LA56_0>=BOOL && LA56_0<=DOUBLE_AMPER)||(LA56_0>=SINGLE_PIPE && LA56_0<=SINGLE_AMPER)||(LA56_0>=EQUAL && LA56_0<=NULL)) ) {
+                            alt56=1;
                         }
 
 
-                        switch (alt46) {
+                        switch (alt56) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:324:32: fe= fact_expression
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:32: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression1708);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2053);
                     	    fe=fact_expression();
 
                     	    state._fsp--;
@@ -3560,24 +4132,46 @@
                     	    break;
 
                     	default :
-                    	    break loop46;
+                    	    break loop56;
                         }
                     } while (true);
 
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:87: (attribs= constraint_attributes )?
+                    int alt57=2;
+                    int LA57_0 = input.LA(1);
 
+                    if ( (LA57_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt57=1;
+                    }
+                    switch (alt57) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:87: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2061);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createPattern(pt, exprList);	
+                    	retval.descr = factory.createPattern(pt, exprList, attribs);	
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:326:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:371:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
                     {
-                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression1722); 
+                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression2072); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1726); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1730);
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2076); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2080);
                     fact=fact_expression();
 
                     state._fsp--;
@@ -3589,17 +4183,17 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:373:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
                     {
-                    start=(DroolsTree)match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression1742); 
+                    start=(DroolsTree)match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression2093); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1746);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2097);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1750);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2101);
                     right=fact_expression();
 
                     state._fsp--;
@@ -3611,28 +4205,28 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:4: ^( VT_FIELD field= field_element (fe= fact_expression )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? )
                     {
-                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression1761); 
+                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression2113); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_field_element_in_fact_expression1765);
+                    pushFollow(FOLLOW_field_element_in_fact_expression2117);
                     field=field_element();
 
                     state._fsp--;
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: (fe= fact_expression )?
-                    int alt47=2;
-                    int LA47_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:37: (fe= fact_expression )?
+                    int alt58=2;
+                    int LA58_0 = input.LA(1);
 
-                    if ( (LA47_0==VT_FACT||LA47_0==VT_PAREN_CHUNK||(LA47_0>=VT_FACT_BINDING && LA47_0<=VT_ACCESSOR_PATH)||LA47_0==VK_EVAL||LA47_0==VK_IN||LA47_0==VK_OPERATOR||LA47_0==STRING||(LA47_0>=BOOL && LA47_0<=DOUBLE_AMPER)||(LA47_0>=EQUAL && LA47_0<=NULL)) ) {
-                        alt47=1;
+                    if ( (LA58_0==VT_FACT||LA58_0==VT_PAREN_CHUNK||(LA58_0>=VT_FACT_BINDING && LA58_0<=VT_ACCESSOR_PATH)||LA58_0==VK_EVAL||LA58_0==VK_IN||LA58_0==VK_OPERATOR||LA58_0==STRING||(LA58_0>=BOOL && LA58_0<=DOUBLE_AMPER)||(LA58_0>=SINGLE_PIPE && LA58_0<=SINGLE_AMPER)||(LA58_0>=EQUAL && LA58_0<=NULL)) ) {
+                        alt58=1;
                     }
-                    switch (alt47) {
+                    switch (alt58) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:331:37: fe= fact_expression
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:37: fe= fact_expression
                             {
-                            pushFollow(FOLLOW_fact_expression_in_fact_expression1769);
+                            pushFollow(FOLLOW_fact_expression_in_fact_expression2121);
                             fe=fact_expression();
 
                             state._fsp--;
@@ -3643,24 +4237,46 @@
 
                     }
 
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:62: (attribs= constraint_attributes )?
+                    int alt59=2;
+                    int LA59_0 = input.LA(1);
 
+                    if ( (LA59_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt59=1;
+                    }
+                    switch (alt59) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:62: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2126);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+
                     match(input, Token.UP, null); 
                     	if (null != fe){
-                    			retval.descr = factory.setupFieldConstraint(field, (fe!=null?fe.descr:null));
+                    			retval.descr = factory.setupFieldConstraint(field, (fe!=null?fe.descr:null), attribs);
                     		} else {
-                    			retval.descr = factory.setupFieldConstraint(field, null);
+                    			retval.descr = factory.setupFieldConstraint(field, null, attribs);
                     		}	
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:337:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
                     {
-                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression1780); 
+                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression2137); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression1784); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1788);
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2141); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2145);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3672,12 +4288,12 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:340:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
                     {
-                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression1799); 
+                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression2156); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression1803); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2160); 
 
                     match(input, Token.UP, null); 
                     	retval.descr = factory.createPredicate(pc);	
@@ -3685,12 +4301,12 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(op= EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:388:4: ^(op= EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression1816); 
+                    op=(DroolsTree)match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression2174); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1820);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2178);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3702,12 +4318,12 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:345:4: ^(op= NOT_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:4: ^(op= NOT_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression1832); 
+                    op=(DroolsTree)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression2190); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1836);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2194);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3719,12 +4335,12 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:347:4: ^(op= GREATER fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:392:4: ^(op= GREATER fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,GREATER,FOLLOW_GREATER_in_fact_expression1848); 
+                    op=(DroolsTree)match(input,GREATER,FOLLOW_GREATER_in_fact_expression2206); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1852);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2210);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3736,12 +4352,12 @@
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:349:4: ^(op= GREATER_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:394:4: ^(op= GREATER_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression1864); 
+                    op=(DroolsTree)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression2222); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1868);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2226);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3753,12 +4369,12 @@
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:351:4: ^(op= LESS fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:4: ^(op= LESS fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,LESS,FOLLOW_LESS_in_fact_expression1880); 
+                    op=(DroolsTree)match(input,LESS,FOLLOW_LESS_in_fact_expression2238); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1884);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2242);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3770,12 +4386,12 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:353:4: ^(op= LESS_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:398:4: ^(op= LESS_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression1896); 
+                    op=(DroolsTree)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression2254); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1900);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2258);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -3787,99 +4403,158 @@
                     }
                     break;
                 case 13 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^(op= VK_OPERATOR (not= VK_NOT )? (param= VT_SQUARE_CHUNK )? fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:4: ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? )
                     {
-                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression1912); 
+                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression2270); 
 
-                    match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: (not= VK_NOT )?
-                    int alt48=2;
-                    int LA48_0 = input.LA(1);
+                    if ( input.LA(1)==Token.DOWN ) {
+                        match(input, Token.DOWN, null); 
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:24: (not= VK_NOT )?
+                        int alt60=2;
+                        int LA60_0 = input.LA(1);
 
-                    if ( (LA48_0==VK_NOT) ) {
-                        alt48=1;
-                    }
-                    switch (alt48) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:24: not= VK_NOT
-                            {
-                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1916); 
+                        if ( (LA60_0==VK_NOT) ) {
+                            alt60=1;
+                        }
+                        switch (alt60) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:24: not= VK_NOT
+                                {
+                                not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2274); 
 
-                            }
-                            break;
+                                }
+                                break;
 
-                    }
+                        }
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:38: (param= VT_SQUARE_CHUNK )?
-                    int alt49=2;
-                    int LA49_0 = input.LA(1);
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:39: (approx= VK_APPROX )?
+                        int alt61=2;
+                        int LA61_0 = input.LA(1);
 
-                    if ( (LA49_0==VT_SQUARE_CHUNK) ) {
-                        alt49=1;
-                    }
-                    switch (alt49) {
-                        case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:355:38: param= VT_SQUARE_CHUNK
-                            {
-                            param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1921); 
+                        if ( (LA61_0==VK_APPROX) ) {
+                            alt61=1;
+                        }
+                        switch (alt61) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:39: approx= VK_APPROX
+                                {
+                                approx=(DroolsTree)match(input,VK_APPROX,FOLLOW_VK_APPROX_in_fact_expression2279); 
 
-                            }
-                            break;
+                                }
+                                break;
 
-                    }
+                        }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1926);
-                    fe=fact_expression();
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:56: (param= VT_SQUARE_CHUNK )?
+                        int alt62=2;
+                        int LA62_0 = input.LA(1);
 
-                    state._fsp--;
+                        if ( (LA62_0==VT_SQUARE_CHUNK) ) {
+                            alt62=1;
+                        }
+                        switch (alt62) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:56: param= VT_SQUARE_CHUNK
+                                {
+                                param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2284); 
 
+                                }
+                                break;
 
-                    match(input, Token.UP, null); 
-                    	retval.descr = factory.setupRestriction(op, not, (fe!=null?fe.descr:null), param);	
+                        }
 
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:81: (attribs= constraint_attributes )?
+                        int alt63=2;
+                        int LA63_0 = input.LA(1);
+
+                        if ( (LA63_0==VT_CONSTR_ATTRIBUTES) ) {
+                            alt63=1;
+                        }
+                        switch (alt63) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:81: attribs= constraint_attributes
+                                {
+                                pushFollow(FOLLOW_constraint_attributes_in_fact_expression2289);
+                                attribs=constraint_attributes();
+
+                                state._fsp--;
+
+
+                                }
+                                break;
+
+                        }
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:107: (fe= fact_expression )?
+                        int alt64=2;
+                        int LA64_0 = input.LA(1);
+
+                        if ( (LA64_0==VT_FACT||LA64_0==VT_PAREN_CHUNK||(LA64_0>=VT_FACT_BINDING && LA64_0<=VT_ACCESSOR_PATH)||LA64_0==VK_EVAL||LA64_0==VK_IN||LA64_0==VK_OPERATOR||LA64_0==STRING||(LA64_0>=BOOL && LA64_0<=DOUBLE_AMPER)||(LA64_0>=SINGLE_PIPE && LA64_0<=SINGLE_AMPER)||(LA64_0>=EQUAL && LA64_0<=NULL)) ) {
+                            alt64=1;
+                        }
+                        switch (alt64) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:107: fe= fact_expression
+                                {
+                                pushFollow(FOLLOW_fact_expression_in_fact_expression2294);
+                                fe=fact_expression();
+
+                                state._fsp--;
+
+
+                                }
+                                break;
+
+                        }
+
+
+                        match(input, Token.UP, null); 
                     }
+                    	retval.descr = factory.setupRestriction(op, not, (fe == null ? null : (fe!=null?fe.descr:null)), param, attribs);	
+
+                    }
                     break;
                 case 14 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
-                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression1937); 
+                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression2309); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:15: (not= VK_NOT )?
-                    int alt50=2;
-                    int LA50_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:15: (not= VK_NOT )?
+                    int alt65=2;
+                    int LA65_0 = input.LA(1);
 
-                    if ( (LA50_0==VK_NOT) ) {
-                        alt50=1;
+                    if ( (LA65_0==VK_NOT) ) {
+                        alt65=1;
                     }
-                    switch (alt50) {
+                    switch (alt65) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:15: not= VK_NOT
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:15: not= VK_NOT
                             {
-                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression1941); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2313); 
 
                             }
                             break;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:24: (fe= fact_expression )+
-                    int cnt51=0;
-                    loop51:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:24: (fe= fact_expression )+
+                    int cnt66=0;
+                    loop66:
                     do {
-                        int alt51=2;
-                        int LA51_0 = input.LA(1);
+                        int alt66=2;
+                        int LA66_0 = input.LA(1);
 
-                        if ( (LA51_0==VT_FACT||LA51_0==VT_PAREN_CHUNK||(LA51_0>=VT_FACT_BINDING && LA51_0<=VT_ACCESSOR_PATH)||LA51_0==VK_EVAL||LA51_0==VK_IN||LA51_0==VK_OPERATOR||LA51_0==STRING||(LA51_0>=BOOL && LA51_0<=DOUBLE_AMPER)||(LA51_0>=EQUAL && LA51_0<=NULL)) ) {
-                            alt51=1;
+                        if ( (LA66_0==VT_FACT||LA66_0==VT_PAREN_CHUNK||(LA66_0>=VT_FACT_BINDING && LA66_0<=VT_ACCESSOR_PATH)||LA66_0==VK_EVAL||LA66_0==VK_IN||LA66_0==VK_OPERATOR||LA66_0==STRING||(LA66_0>=BOOL && LA66_0<=DOUBLE_AMPER)||(LA66_0>=SINGLE_PIPE && LA66_0<=SINGLE_AMPER)||(LA66_0>=EQUAL && LA66_0<=NULL)) ) {
+                            alt66=1;
                         }
 
 
-                        switch (alt51) {
+                        switch (alt66) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:358:25: fe= fact_expression
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:25: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression1947);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2319);
                     	    fe=fact_expression();
 
                     	    state._fsp--;
@@ -3890,12 +4565,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt51 >= 1 ) break loop51;
+                    	    if ( cnt66 >= 1 ) break loop66;
                                 EarlyExitException eee =
-                                    new EarlyExitException(51, input);
+                                    new EarlyExitException(66, input);
                                 throw eee;
                         }
-                        cnt51++;
+                        cnt66++;
                     } while (true);
 
 
@@ -3905,72 +4580,134 @@
                     }
                     break;
                 case 15 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:361:4: ^( DOUBLE_PIPE left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:4: ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_expression1962); 
+                    if ( input.LA(1)==DOUBLE_PIPE||input.LA(1)==SINGLE_PIPE ) {
+                        input.consume();
+                        state.errorRecovery=false;
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        throw mse;
+                    }
 
+
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1966);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:42: (attribs= constraint_attributes )?
+                    int alt67=2;
+                    int LA67_0 = input.LA(1);
+
+                    if ( (LA67_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt67=1;
+                    }
+                    switch (alt67) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:42: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2345);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2350);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1970);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2354);
                     right=fact_expression();
 
                     state._fsp--;
 
 
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createOrRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null));	
+                    	retval.descr = factory.createOrRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null), attribs); 
 
                     }
                     break;
                 case 16 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:363:4: ^( DOUBLE_AMPER left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:4: ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
                     {
-                    match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_fact_expression1980); 
+                    if ( input.LA(1)==DOUBLE_AMPER||input.LA(1)==SINGLE_AMPER ) {
+                        input.consume();
+                        state.errorRecovery=false;
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        throw mse;
+                    }
 
+
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1984);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:43: (attribs= constraint_attributes )?
+                    int alt68=2;
+                    int LA68_0 = input.LA(1);
+
+                    if ( (LA68_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt68=1;
+                    }
+                    switch (alt68) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:43: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2380);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2385);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression1988);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2389);
                     right=fact_expression();
 
                     state._fsp--;
 
 
                     match(input, Token.UP, null); 
-                    	retval.descr = factory.createAndRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null));	
+                    	retval.descr = factory.createAndRestrictionConnective((left!=null?left.descr:null), (right!=null?right.descr:null), attribs); 
+                    		
+                    	
 
                     }
                     break;
                 case 17 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:366:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
-                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1999); 
+                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2402); 
 
                     match(input, Token.DOWN, null); 
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:366:23: (ae= accessor_element )+
-                    int cnt52=0;
-                    loop52:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:23: (ae= accessor_element )+
+                    int cnt69=0;
+                    loop69:
                     do {
-                        int alt52=2;
-                        int LA52_0 = input.LA(1);
+                        int alt69=2;
+                        int LA69_0 = input.LA(1);
 
-                        if ( (LA52_0==VT_ACCESSOR_ELEMENT) ) {
-                            alt52=1;
+                        if ( (LA69_0==VT_ACCESSOR_ELEMENT) ) {
+                            alt69=1;
                         }
 
 
-                        switch (alt52) {
+                        switch (alt69) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:366:24: ae= accessor_element
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:24: ae= accessor_element
                     	    {
-                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2004);
+                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2407);
                     	    ae=accessor_element();
 
                     	    state._fsp--;
@@ -3981,12 +4718,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt52 >= 1 ) break loop52;
+                    	    if ( cnt69 >= 1 ) break loop69;
                                 EarlyExitException eee =
-                                    new EarlyExitException(52, input);
+                                    new EarlyExitException(69, input);
                                 throw eee;
                         }
-                        cnt52++;
+                        cnt69++;
                     } while (true);
 
 
@@ -3996,49 +4733,49 @@
                     }
                     break;
                 case 18 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:368:4: s= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:417:4: s= STRING
                     {
-                    s=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_fact_expression2019); 
+                    s=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_fact_expression2422); 
                     	retval.descr = factory.createStringLiteralRestriction(s);	
 
                     }
                     break;
                 case 19 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:370:4: i= INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:419:4: i= INT
                     {
-                    i=(DroolsTree)match(input,INT,FOLLOW_INT_in_fact_expression2029); 
+                    i=(DroolsTree)match(input,INT,FOLLOW_INT_in_fact_expression2432); 
                     	retval.descr = factory.createIntLiteralRestriction(i);	
 
                     }
                     break;
                 case 20 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:372:4: f= FLOAT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:421:4: f= FLOAT
                     {
-                    f=(DroolsTree)match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2039); 
+                    f=(DroolsTree)match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2443); 
                     	retval.descr = factory.createFloatLiteralRestriction(f);	
 
                     }
                     break;
                 case 21 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:374:4: b= BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:423:4: b= BOOL
                     {
-                    b=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_fact_expression2049); 
+                    b=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_fact_expression2453); 
                     	retval.descr = factory.createBoolLiteralRestriction(b);	
 
                     }
                     break;
                 case 22 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: n= NULL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:425:4: n= NULL
                     {
-                    n=(DroolsTree)match(input,NULL,FOLLOW_NULL_in_fact_expression2059); 
+                    n=(DroolsTree)match(input,NULL,FOLLOW_NULL_in_fact_expression2463); 
                     	retval.descr = factory.createNullLiteralRestriction(n);	
 
                     }
                     break;
                 case 23 :
-                    // src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:427:4: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2069); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2473); 
                     	retval.descr = factory.createReturnValue(pc);	
 
                     }
@@ -4058,7 +4795,7 @@
 
 
     // $ANTLR start "field_element"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:382:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:431:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
@@ -4069,29 +4806,29 @@
         	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:385:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:385:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
-            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2091); 
+            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2495); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:385:24: (ae= accessor_element )+
-            int cnt54=0;
-            loop54:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:24: (ae= accessor_element )+
+            int cnt71=0;
+            loop71:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt71=2;
+                int LA71_0 = input.LA(1);
 
-                if ( (LA54_0==VT_ACCESSOR_ELEMENT) ) {
-                    alt54=1;
+                if ( (LA71_0==VT_ACCESSOR_ELEMENT) ) {
+                    alt71=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt71) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:385:25: ae= accessor_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:25: ae= accessor_element
             	    {
-            	    pushFollow(FOLLOW_accessor_element_in_field_element2096);
+            	    pushFollow(FOLLOW_accessor_element_in_field_element2500);
             	    ae=accessor_element();
 
             	    state._fsp--;
@@ -4102,12 +4839,12 @@
             	    break;
 
             	default :
-            	    if ( cnt54 >= 1 ) break loop54;
+            	    if ( cnt71 >= 1 ) break loop71;
                         EarlyExitException eee =
-                            new EarlyExitException(54, input);
+                            new EarlyExitException(71, input);
                         throw eee;
                 }
-                cnt54++;
+                cnt71++;
             } while (true);
 
 
@@ -4129,7 +4866,7 @@
 
 
     // $ANTLR start "accessor_element"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:389:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:438:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
     public final BaseDescr accessor_element() throws RecognitionException {
         BaseDescr element = null;
 
@@ -4138,29 +4875,29 @@
         List list_sc=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:390:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:390:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
-            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2120); 
+            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2524); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2124); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:390:34: (sc+= VT_SQUARE_CHUNK )*
-            loop55:
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2528); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:34: (sc+= VT_SQUARE_CHUNK )*
+            loop72:
             do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
+                int alt72=2;
+                int LA72_0 = input.LA(1);
 
-                if ( (LA55_0==VT_SQUARE_CHUNK) ) {
-                    alt55=1;
+                if ( (LA72_0==VT_SQUARE_CHUNK) ) {
+                    alt72=1;
                 }
 
 
-                switch (alt55) {
+                switch (alt72) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:390:34: sc+= VT_SQUARE_CHUNK
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:34: sc+= VT_SQUARE_CHUNK
             	    {
-            	    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2128); 
+            	    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2532); 
             	    if (list_sc==null) list_sc=new ArrayList();
             	    list_sc.add(sc);
 
@@ -4169,7 +4906,7 @@
             	    break;
 
             	default :
-            	    break loop55;
+            	    break loop72;
                 }
             } while (true);
 
@@ -4192,7 +4929,7 @@
 
 
     // $ANTLR start "pattern_type"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:394:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:443:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr pattern_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4202,29 +4939,29 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2149); 
+            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2553); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:28: (idList+= ID )+
-            int cnt56=0;
-            loop56:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:28: (idList+= ID )+
+            int cnt73=0;
+            loop73:
             do {
-                int alt56=2;
-                int LA56_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( (LA56_0==ID) ) {
-                    alt56=1;
+                if ( (LA73_0==ID) ) {
+                    alt73=1;
                 }
 
 
-                switch (alt56) {
+                switch (alt73) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:28: idList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:28: idList+= ID
             	    {
-            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_pattern_type2153); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_pattern_type2557); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4233,31 +4970,31 @@
             	    break;
 
             	default :
-            	    if ( cnt56 >= 1 ) break loop56;
+            	    if ( cnt73 >= 1 ) break loop73;
                         EarlyExitException eee =
-                            new EarlyExitException(56, input);
+                            new EarlyExitException(73, input);
                         throw eee;
                 }
-                cnt56++;
+                cnt73++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop57:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop74:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt74=2;
+                int LA74_0 = input.LA(1);
 
-                if ( (LA57_0==LEFT_SQUARE) ) {
-                    alt57=1;
+                if ( (LA74_0==LEFT_SQUARE) ) {
+                    alt74=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt74) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:395:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2157); 
-            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2161); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2561); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2565); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4266,7 +5003,7 @@
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop74;
                 }
             } while (true);
 
@@ -4289,7 +5026,7 @@
 
 
     // $ANTLR start "data_type"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:399:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:448:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr data_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4299,29 +5036,29 @@
         List list_rightList=null;
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2183); 
+            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2587); 
 
             match(input, Token.DOWN, null); 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:25: (idList+= ID )+
-            int cnt58=0;
-            loop58:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:25: (idList+= ID )+
+            int cnt75=0;
+            loop75:
             do {
-                int alt58=2;
-                int LA58_0 = input.LA(1);
+                int alt75=2;
+                int LA75_0 = input.LA(1);
 
-                if ( (LA58_0==ID) ) {
-                    alt58=1;
+                if ( (LA75_0==ID) ) {
+                    alt75=1;
                 }
 
 
-                switch (alt58) {
+                switch (alt75) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:25: idList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:25: idList+= ID
             	    {
-            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_data_type2187); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_data_type2591); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4330,31 +5067,31 @@
             	    break;
 
             	default :
-            	    if ( cnt58 >= 1 ) break loop58;
+            	    if ( cnt75 >= 1 ) break loop75;
                         EarlyExitException eee =
-                            new EarlyExitException(58, input);
+                            new EarlyExitException(75, input);
                         throw eee;
                 }
-                cnt58++;
+                cnt75++;
             } while (true);
 
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop59:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop76:
             do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA59_0==LEFT_SQUARE) ) {
-                    alt59=1;
+                if ( (LA76_0==LEFT_SQUARE) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt59) {
+                switch (alt76) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DescrBuilderTree.g:400:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2191); 
-            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2195); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2595); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2599); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -4363,7 +5100,7 @@
             	    break;
 
             	default :
-            	    break loop59;
+            	    break loop76;
                 }
             } while (true);
 
@@ -4384,243 +5121,358 @@
     }
     // $ANTLR end "data_type"
 
+
+    // $ANTLR start "cut"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:453:1: cut returns [boolean isCutter] : ^(start= VT_CUT VK_CUT ) ;
+    public final boolean cut() throws RecognitionException {
+        boolean isCutter = false;
+
+        DroolsTree start=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:3: ( ^(start= VT_CUT VK_CUT ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:5: ^(start= VT_CUT VK_CUT )
+            {
+            start=(DroolsTree)match(input,VT_CUT,FOLLOW_VT_CUT_in_cut2627); 
+
+            match(input, Token.DOWN, null); 
+            match(input,VK_CUT,FOLLOW_VK_CUT_in_cut2629); 
+
+            match(input, Token.UP, null); 
+             isCutter = true; 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return isCutter;
+    }
+    // $ANTLR end "cut"
+
+
+    // $ANTLR start "constr_identifier"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:458:1: constr_identifier returns [String id] : ^(start= VT_CONSTRID ans= VK_AT ) ;
+    public final String constr_identifier() throws RecognitionException {
+        String id = null;
+
+        DroolsTree start=null;
+        DroolsTree ans=null;
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:3: ( ^(start= VT_CONSTRID ans= VK_AT ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:5: ^(start= VT_CONSTRID ans= VK_AT )
+            {
+            start=(DroolsTree)match(input,VT_CONSTRID,FOLLOW_VT_CONSTRID_in_constr_identifier2657); 
+
+            match(input, Token.DOWN, null); 
+            ans=(DroolsTree)match(input,VK_AT,FOLLOW_VK_AT_in_constr_identifier2661); 
+
+            match(input, Token.UP, null); 
+             id = (ans!=null?ans.getText():null); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return id;
+    }
+    // $ANTLR end "constr_identifier"
+
     // Delegated rules
 
 
  
 
     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[]{0xD5FFE00000000028L,0x0000000000000007L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xD5FFE00000000028L,0x0000000000000007L});
-    public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement71 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_package_id_in_package_statement75 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id102 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id106 = new BitSet(new long[]{0x0000000000000008L,0x0000000000040000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement124 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement144 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement165 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement185 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement195 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VK_IMPORT_in_import_statement226 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_import_name_in_import_statement230 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement252 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement254 = new BitSet(new long[]{0x0000020000000000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement258 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name277 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name281 = new BitSet(new long[]{0x0000000000000008L,0x0000000000140000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name286 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_GLOBAL_in_global309 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_data_type_in_global313 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_VT_GLOBAL_ID_in_global317 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_FUNCTION_in_function339 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_data_type_in_function343 = new BitSet(new long[]{0x0000080000000000L});
-    public static final BitSet FOLLOW_VT_FUNCTION_ID_in_function348 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_parameters_in_function352 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_function356 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_TEMPLATE_in_template381 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template385 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template394 = new BitSet(new long[]{0x0000000000008000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_VK_END_in_template402 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_SLOT_in_template_slot422 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_data_type_in_template_slot426 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot430 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_QUERY_in_query452 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_QUERY_ID_in_query456 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_parameters_in_query460 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_VK_END_in_query469 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_RULE_in_rule496 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0800000000030000L,0x0000000012000000L});
-    public static final BitSet FOLLOW_VK_EXTEND_in_rule505 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule509 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule519 = new BitSet(new long[]{0x0000000000030000L,0x0000000012000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_when_part_in_rule539 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule544 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_WHEN_in_when_part563 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_when_part567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes589 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes591 = new BitSet(new long[]{0x01FFE00000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes597 = new BitSet(new long[]{0x01FFE00000000008L});
-    public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters621 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters626 = new BitSet(new long[]{0x0000004000000008L,0x0000000000040000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000004000000008L,0x0000000000040000L});
-    public static final BitSet FOLLOW_argument_in_param_definition653 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument673 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument676 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument680 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration706 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710 = new BitSet(new long[]{0x0000000000000000L,0x0000000002048000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration719 = new BitSet(new long[]{0x0000000000000000L,0x0000000002048000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000048000L});
-    public static final BitSet FOLLOW_VK_END_in_type_declaration738 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata763 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata767 = new BitSet(new long[]{0x0000000000100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_ID_in_decl_field799 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field803 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field808 = new BitSet(new long[]{0x0000000000000008L,0x0000000002000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field813 = new BitSet(new long[]{0x0000000000000008L,0x0000000002000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization840 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization844 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute867 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INT_in_rule_attribute872 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute876 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_NO_LOOP_in_rule_attribute887 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute891 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_AGENDA_GROUP_in_rule_attribute903 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute907 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DURATION_in_rule_attribute918 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INT_in_rule_attribute923 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute927 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute940 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute944 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_AUTO_FOCUS_in_rule_attribute954 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute958 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute969 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute973 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DATE_EXPIRES_in_rule_attribute983 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute987 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ENABLED_in_rule_attribute997 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute1002 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1006 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1017 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute1021 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1031 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_BOOL_in_rule_attribute1035 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute1045 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_STRING_in_rule_attribute1049 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1074 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1079 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1105 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1110 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1126 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1130 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_lhs_in_lhs1134 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1146 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1151 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1167 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1171 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_lhs_in_lhs1175 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1187 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1191 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_NOT_in_lhs1203 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1207 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_lhs1219 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1223 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_FORALL_in_lhs1235 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1240 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
-    public static final BitSet FOLLOW_FROM_in_lhs1254 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1258 = new BitSet(new long[]{0x0000000020000000L,0x0000001800000010L});
-    public static final BitSet FOLLOW_from_elements_in_lhs1262 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1273 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1294 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1298 = new BitSet(new long[]{0x0000000018000000L});
-    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1308 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_COLLECT_in_from_elements1321 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1325 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1337 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1341 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_from_source_clause_in_from_elements1352 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1373 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1384 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1407 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_INIT_in_accumulate_init_clause1416 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1420 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1428 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1432 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1448 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1452 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1475 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1479 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1501 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1505 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1509 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1531 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_from_source_clause1535 = new BitSet(new long[]{0x0000000040100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1539 = new BitSet(new long[]{0x0000000040000008L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1548 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1567 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1571 = new BitSet(new long[]{0x0000000040180008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1575 = new BitSet(new long[]{0x0000000040100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1580 = new BitSet(new long[]{0x0000000040000008L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1588 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1606 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1610 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1615 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause1640 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_over_element_in_over_clause1645 = new BitSet(new long[]{0x0000000000200008L});
-    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element1666 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element1668 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_ID_in_over_element1672 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element1676 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_in_fact_expression1699 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression1703 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1708 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1722 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1726 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1730 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1742 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1746 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1750 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1761 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression1765 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1769 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1780 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1784 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1788 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1799 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1803 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_EQUAL_in_fact_expression1816 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1820 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression1832 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1836 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_in_fact_expression1848 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1852 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression1864 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1868 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_in_fact_expression1880 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1884 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1896 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1900 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression1912 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1916 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1921 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1926 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_IN_in_fact_expression1937 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1941 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1947 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression1962 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1966 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1970 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression1980 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1984 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1988 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1999 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_fact_expression2004 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_STRING_in_fact_expression2019 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_fact_expression2029 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_fact_expression2039 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_fact_expression2049 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_fact_expression2059 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2091 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_field_element2096 = new BitSet(new long[]{0x0000002000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2120 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accessor_element2124 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2128 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2149 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2153 = new BitSet(new long[]{0x0000000000000008L,0x0000400000040000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2157 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2161 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
-    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2183 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2187 = new BitSet(new long[]{0x0000000000000008L,0x0000400000040000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2191 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2195 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit51 = new BitSet(new long[]{0xFFC0000000000028L,0x0000000E00000FABL});
+    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xFFC0000000000028L,0x0000000E00000FABL});
+    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,0x0000020000000000L});
+    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});
+    public static final BitSet FOLLOW_global_in_statement156 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement166 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement176 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement186 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement196 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VK_IMPORT_in_import_statement227 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_import_name_in_import_statement231 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement253 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement255 = new BitSet(new long[]{0x0000080000000000L});
+    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,0x00000A0000000000L});
+    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[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_VT_GLOBAL_ID_in_global318 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_FUNCTION_in_function340 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_data_type_in_function344 = new BitSet(new long[]{0x0000200000000000L});
+    public static final BitSet FOLLOW_VT_FUNCTION_ID_in_function349 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_parameters_in_function353 = new BitSet(new long[]{0x0000000000040000L});
+    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,0x0000000008000000L});
+    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});
+    public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot431 = new BitSet(new long[]{0x0000000000000008L});
+    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[]{0x0000400000400000L});
+    public static final BitSet FOLLOW_parameters_in_query461 = new BitSet(new long[]{0x0000400000400000L});
+    public static final BitSet FOLLOW_lhs_block_in_query466 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    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,0x0009000000000010L});
+    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,0x0009000000000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule531 = new BitSet(new long[]{0x0000000000020000L,0x0008000000000000L});
+    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[]{0x0000400000400000L});
+    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[]{0xFFC0000000000000L,0x0000000E00000003L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes598 = new BitSet(new long[]{0xFFC0000000000008L,0x0000000E00000003L});
+    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[]{0x0000010000000008L,0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition649 = new BitSet(new long[]{0x0000010000000008L,0x0000020000000000L});
+    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,0x0000000000000080L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    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,0x0001020008000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration720 = new BitSet(new long[]{0x0000000000000000L,0x0001020008000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration733 = new BitSet(new long[]{0x0000000000000000L,0x0000020008000000L});
+    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[]{0x0000010000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field809 = new BitSet(new long[]{0x0000000000000008L,0x0001000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field814 = new BitSet(new long[]{0x0000000000000008L,0x0001000000000000L});
+    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});
+    public static final BitSet FOLLOW_INT_in_rule_attribute873 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute877 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_NO_LOOP_in_rule_attribute888 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute892 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_AGENDA_GROUP_in_rule_attribute904 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute908 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DURATION_in_rule_attribute919 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_INT_in_rule_attribute924 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute928 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ACTIVATION_GROUP_in_rule_attribute941 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute945 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_AUTO_FOCUS_in_rule_attribute955 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute959 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DATE_EFFECTIVE_in_rule_attribute970 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute974 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DATE_EXPIRES_in_rule_attribute984 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute988 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENABLED_in_rule_attribute998 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute1003 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1007 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_RULEFLOW_GROUP_in_rule_attribute1018 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute1022 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_LOCK_ON_ACTIVE_in_rule_attribute1032 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_BOOL_in_rule_attribute1036 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute1046 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute1050 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_PRIOR_in_rule_attribute1059 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute1063 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENTAIL_in_rule_attribute1072 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_rule_attribute1076 = new BitSet(new long[]{0x0000000000000008L});
+    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,0x000000E480000000L});
+    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});
+    public static final BitSet FOLLOW_STRING_in_constr_attribute1174 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_TYPE_in_constr_attribute1186 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_constr_attribute1190 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_CUT_in_constr_attribute1203 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_STRING_in_constr_attribute1207 = new BitSet(new long[]{0x0000000000000008L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1300 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1325 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1351 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1376 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1405 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    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[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1434 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1438 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1462 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1466 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_NOT_in_lhs1478 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1482 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_HEDGE_in_lhs1497 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1501 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_lhs1518 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1522 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_FORALL_in_lhs1534 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1539 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_VK_FORANY_in_lhs1558 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1563 = new BitSet(new long[]{0x0000000000000008L,0x0000000060000000L});
+    public static final BitSet FOLLOW_VK_SUBJECT_in_lhs1566 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1570 = new BitSet(new long[]{0x0000000000000008L,0x0000000040000000L});
+    public static final BitSet FOLLOW_VK_WEIGHT_in_lhs1575 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1579 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_FROM_in_lhs1597 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1601 = new BitSet(new long[]{0x0000000080000000L,0x0C00000000002000L});
+    public static final BitSet FOLLOW_from_elements_in_lhs1605 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1616 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1637 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1641 = new BitSet(new long[]{0x0000000060000000L});
+    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1651 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_COLLECT_in_from_elements1664 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1668 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1680 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1684 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_from_source_clause_in_from_elements1695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1716 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1750 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_INIT_in_accumulate_init_clause1759 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1763 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1771 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1775 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1784 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1791 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1795 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1818 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1822 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1844 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1848 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1852 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1874 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_from_source_clause1878 = new BitSet(new long[]{0x0000000100100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1882 = new BitSet(new long[]{0x0000000100000008L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1891 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1910 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_expression_chain1914 = new BitSet(new long[]{0x0000000100180008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1918 = new BitSet(new long[]{0x0000000100100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1923 = new BitSet(new long[]{0x0000000100000008L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1931 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1950 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1954 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1960 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause1985 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_over_element_in_over_clause1990 = new BitSet(new long[]{0x0000000000200008L});
+    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element2011 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_over_element2013 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_over_element2017 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element2021 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_in_fact_expression2044 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression2048 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2053 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2061 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression2072 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2076 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2080 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression2093 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2097 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2101 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression2113 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_field_element_in_fact_expression2117 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2121 = new BitSet(new long[]{0x0002000000000008L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2126 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression2137 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2141 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2145 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression2156 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2160 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_EQUAL_in_fact_expression2174 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2178 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression2190 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2194 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_in_fact_expression2206 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2210 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression2222 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2226 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_in_fact_expression2238 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2242 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression2254 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2258 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression2270 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2274 = new BitSet(new long[]{0x0002007C00180048L,0xB0F0100104009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_VK_APPROX_in_fact_expression2279 = new BitSet(new long[]{0x0002007C00180048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2284 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2289 = new BitSet(new long[]{0x0000007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2294 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_IN_in_fact_expression2309 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2313 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2319 = new BitSet(new long[]{0x0000007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_set_in_fact_expression2334 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2345 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2350 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2354 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_set_in_fact_expression2370 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2380 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2385 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2389 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2402 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_fact_expression2407 = new BitSet(new long[]{0x0000008000000008L});
+    public static final BitSet FOLLOW_STRING_in_fact_expression2422 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_fact_expression2432 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_fact_expression2443 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_fact_expression2453 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_fact_expression2463 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2473 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2495 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_field_element2500 = new BitSet(new long[]{0x0000008000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2524 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accessor_element2528 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2532 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2553 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2557 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2561 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2565 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2587 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_data_type2591 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2599 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_VT_CUT_in_cut2627 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_CUT_in_cut2629 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CONSTRID_in_constr_identifier2657 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_AT_in_constr_identifier2661 = new BitSet(new long[]{0x0000000000000008L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -48,8 +48,11 @@
 	public static final String IN = "in";
 	public static final String OR = "or";
 	public static final String AND = "and";
+	public static final String EQUIV = "equiv";
+	public static final String XOR = "xor";
 	public static final String EXISTS = "exists";
 	public static final String FORALL = "forall";
+	public static final String FORANY = "forany";
 	public static final String ENTRY = "entry";
 	public static final String POINT = "point";
 	public static final String ACTION = "action";
@@ -57,7 +60,20 @@
 	public static final String RESULT = "result";
     public static final String END = "end";
     public static final String INIT = "init";
+    public static final String SUBJECT = "subject_to";
+    public static final String WEIGHT = "weight";
+    public static final String PRIOR = "prior";
+    public static final String ENTAIL = "entail_mode";
+    public static final String FILTER = "filter_str";
+    public static final String VERY = "very";
+    public static final String CID = "id";
+    public static final String CUT = "cut";
+    public static final String TYPE = "type";
+    public static final String ARGS = "args";
+     	
 	
+    
+    
 	public static boolean isOperator( final String operator, final boolean negated ) {
 	    try {
 	        Operator.determineOperator( operator, negated );

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/BaseDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -38,9 +38,11 @@
     private String            text             = "";
     private int				  id			   = -1;
     
-    
+    private boolean			  cutter		   = false;
+    private String 			  params 		   = null;
+    private String 			  label			   = null;
   
-    
+     
     public int getId() {
     	return id;
     }
@@ -132,4 +134,49 @@
     public void setStartCharacter(final int startCharacter) {
         this.startCharacter = startCharacter;
     }
+
+	/**
+	 * @param cutter the cutter to set
+	 */
+	public void setCutter(boolean cutter) {
+		this.cutter = cutter;
+	}
+
+	/**
+	 * @return the cutter
+	 */
+	public boolean isCutter() {
+		return cutter;
+	}
+
+	/**
+	 * @param params the params to set
+	 */
+	public void setParams(String params) {
+		this.params = params;
+	}
+
+	/**
+	 * @return the params
+	 */
+	public String getParams() {
+		return params;
+	}
+
+	/**
+	 * @param label the label to set
+	 */
+	public void setLabel(String label) {	
+		if (label != null)
+			System.err.println(label);
+		this.label = label;
+	}
+
+	/**
+	 * @return the label
+	 */
+	public String getLabel() {
+		
+		return label;
+	}
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/ConditionalElementDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/ConditionalElementDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/ConditionalElementDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -27,4 +27,8 @@
     public void addOrMerge(final BaseDescr baseDescr);
     
     public List<? extends BaseDescr> getDescrs();
+    
+    public String getParams();
+    
+    public String getLabel();
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -1,6 +1,8 @@
 package org.drools.lang.descr;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -518,7 +520,55 @@
 		}
 		return or;
 	}
-
+	
+	
+	
+	private void fillWithAttribs(BaseDescr descr, List<AttributeDescr> attribs) {
+		Map<String,String> atts = buildAttributes(attribs);
+		
+		String params = atts.get("args");
+		String id = atts.get("id");
+		String cutS = atts.get("cut");
+			boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+		String type = atts.get("type");
+		String prior = atts.get("prior");
+						
+		String p = params == null ? null : params;
+		if (p == null)
+			p = type;
+		else 
+			p+= type;
+			
+		descr.setParams(p);
+			
+		descr.setCutter(cutter);		
+		descr.setLabel(id);		
+	}
+	
+	
+	
+	public OrDescr createOr(DroolsTree start, List<BaseDescr> lhsList, List<AttributeDescr> attribs) {
+		Map<String,String> atts = buildAttributes(attribs);
+		
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//			boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+//		String prior = atts.get("prior");
+//			
+						
+		OrDescr or = createOr(start, lhsList);
+		fillWithAttribs(or, attribs);
+					
+//		or.setParams((params == null ? "" : params)+(type == null ? "" : type));
+//			
+//		or.setCutter(cutter);		
+//		or.setLabel(id);
+		return or;
+	}
+	
+	
 	/**
 	 * Factory method that creates an AndDescr. This method handles prefixed and
 	 * infixed formats.
@@ -542,6 +592,28 @@
 		}
 		return and;
 	}
+	
+	public AndDescr createAnd(DroolsTree start, List<BaseDescr> lhsList, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);	
+//		
+//
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//			boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+//		String prior = atts.get("prior");
+		
+		AndDescr and = createAnd(start, lhsList);
+		fillWithAttribs(and, attribs);
+			
+//		and.setParams((params == null ? "" : params)+(type == null ? "" : type));
+//		and.setCutter(cutter);
+//		and.setLabel(id);
+		return and;
+	}
+	
+	
 
 	/**
 	 * Factory method that creates an ExistsDescr.
@@ -582,6 +654,33 @@
 		not.addDescr(baseDescr);
 		return not;
 	}
+	
+	
+	
+	
+	/**
+	 * Factory method that creates a HedgeDescr.
+	 * 
+	 * @param start
+	 *            hedge statement, used to get offset location
+	 * @param baseDescr
+	 *            binded descriptor
+	 * @return HedgeDescr filled.
+	 * @see HedgeDescr
+	 */
+	public HedgeDescr createHedge(DroolsTree start, BaseDescr baseDescr) {
+		HedgeDescr hedge = new HedgeDescr();
+		hedge.setLocation(getColumnLocation(start), getColumnLocation(start));
+		hedge.setStartCharacter(getStartOffsetLocation(start));
+		hedge.setEndLocation(baseDescr.getEndLine(), baseDescr.getEndColumn());
+		hedge.setEndCharacter(baseDescr.getEndCharacter());
+		hedge.addDescr(baseDescr);
+		
+			hedge.setModifier(baseDescr.getText());			
+			
+		return hedge;
+	}
+	
 
 	/**
 	 * Factory method that creates an EvalDescr.
@@ -626,7 +725,36 @@
 		}
 		return forAll;
 	}
+	
+	
+	
+	public ForAnyDescr createForAny(DroolsTree start, BaseDescr arg, BaseDescr constr, BaseDescr wgt) {
+		ForAnyDescr forAny = new ForAnyDescr();
+		forAny.setLocation(getColumnLocation(start), getColumnLocation(start));
+		forAny.setStartCharacter(getStartOffsetLocation(start));
 
+		if (wgt != null) {
+			forAny.setEndLocation(wgt.getEndLine(), wgt.getEndColumn());
+			forAny.setEndCharacter(wgt.getEndCharacter());
+		} else if (constr != null) {
+			forAny.setEndLocation(constr.getEndLine(), constr.getEndColumn());
+			forAny.setEndCharacter(constr.getEndCharacter());
+		} else {
+			forAny.setEndLocation(arg.getEndLine(), arg.getEndColumn());
+			forAny.setEndCharacter(arg.getEndCharacter());
+		}
+		
+		forAny.addDescr(arg);
+		forAny.addDescr(constr);
+		forAny.addDescr(wgt);
+		return forAny;
+	}
+	
+	
+	
+	
+	
+
 	/**
 	 * Factory method that creates a PatternDescr.
 	 * 
@@ -692,6 +820,20 @@
 		collect.setInputPattern((PatternDescr) baseDescr);
 		return collect;
 	}
+	
+	
+	
+//	public CutDescr createCut(DroolsTree start, DroolsTree end) {
+//		CutDescr cut = new CutDescr();
+//		cut.setLocation(getColumnLocation(start), getColumnLocation(start));
+//		cut.setStartCharacter(getStartOffsetLocation(start));
+//		cut
+//				.setEndLocation(getLineLocation(end),getColumnLocation(end));
+//		cut.setEndCharacter(getEndOffsetLocation(end));
+//		//cut.setInputPattern((PatternDescr) baseDescr);
+//		return cut;
+//	}
+	
 
 	/**
 	 * Factory method that creates an EntryPointDescr.
@@ -926,7 +1068,17 @@
 	 * @return
 	 */
 	public PatternDescr createPattern(BaseDescr dataType,
-			List<BaseDescr> exprList) {
+			List<BaseDescr> exprList, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);
+//		
+//
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//			boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+//		String prior = atts.get("prior");
+		
 		PatternDescr pattern = new PatternDescr();
 		pattern.setLocation(dataType.getEndLine(), dataType.getEndColumn());
 		pattern.setEndLocation(dataType.getEndLine(), dataType.getEndColumn());
@@ -963,9 +1115,35 @@
 					.getEndCharacter());
 		}
 
+		fillWithAttribs(pattern, attribs);
+		
+//		pattern.setLabel(id);
+//		pattern.setCutter(cutter);
+		
 		return pattern;
 	}
 
+	
+	
+	private Map<String, String> buildAttributes(List<AttributeDescr> attribs) {
+		HashMap<String,String> map = new HashMap<String,String>();
+		
+		if (attribs == null)
+			return map;
+		
+		for (AttributeDescr attDesc : attribs) {
+			String value = attDesc.getValue();
+			if (value != null && value.startsWith("\""))
+				value = value.substring(1,value.length()-1);
+			String oldVal = map.put(attDesc.getName(), value);			
+			if (oldVal != null)
+				throw new RuntimeDroolsException("Duplicate attribute found : "+oldVal);
+		}
+		
+		return map;
+	}
+	
+
 	/**
 	 * Method that setups a pattern binding.
 	 * 
@@ -1026,11 +1204,30 @@
 	 */
 	public FieldConstraintDescr setupFieldConstraint(
 			FieldConstraintDescr field, BaseDescr descr) {
+		return setupFieldConstraint(field, descr, new ArrayList<AttributeDescr>());
+	}
+	
+	public FieldConstraintDescr setupFieldConstraint(
+			FieldConstraintDescr field, BaseDescr descr, List<AttributeDescr> attribs) {
+		
+//		Map<String,String> atts = buildAttributes(attribs);
+//		String param = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+				
 		if (null != descr && descr instanceof RestrictionDescr) {
-			field.getRestriction().addOrMerge((RestrictionDescr) descr);
+			RestrictionDescr restDescr = (RestrictionDescr) descr;
+				fillWithAttribs(restDescr, attribs);
+//				restDescr.setCutter(cutter);
+//				restDescr.setLabel(id);
+			field.getRestriction().addOrMerge(restDescr);
 		}
+				
 		return field;
 	}
+		
 
 	/**
 	 * Factory method that creates a FieldBindingDescr.
@@ -1086,7 +1283,7 @@
 	 * @see EvaluatorBasedRestrictionDescr
 	 */
 	public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
-			BaseDescr descr) {
+			BaseDescr descr) {		
 		if (descr instanceof EvaluatorBasedRestrictionDescr) {
 			EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
 			evaluator.setEvaluator(operator.getText());
@@ -1095,6 +1292,8 @@
 			} else {
 				evaluator.setNegated(true);
 			}
+		} else if (descr == null) {
+			descr = new LiteralRestrictionDescr(operator.getText(),not != null,null,null,LiteralRestrictionDescr.TYPE_NULL);
 		}
 		return descr;
 	}
@@ -1116,13 +1315,23 @@
 	 * @see EvaluatorBasedRestrictionDescr
 	 */
 	public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
-			BaseDescr descr, DroolsTree param) {
+			BaseDescr descr, DroolsTree configParams, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);
+//		
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+//						
 		BaseDescr retDescr = setupRestriction(operator, not, descr);
-		if (null != param && descr instanceof EvaluatorBasedRestrictionDescr) {
-			EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
-			evaluator.setParameterText(param.getText().substring(1,
-					param.getText().length() - 1));
+		if (null != configParams && retDescr instanceof EvaluatorBasedRestrictionDescr) {
+			EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) retDescr;
+			String paramStr = configParams == null ? null : (configParams.getText().substring(1,configParams.getText().length()-1));
+			evaluator.setParameterText(paramStr);
 		}
+		
+		fillWithAttribs(retDescr, attribs);
 		return retDescr;
 	}
 
@@ -1203,6 +1412,26 @@
 		return or;
 
 	}
+	
+	
+	public BaseDescr createOrRestrictionConnective(BaseDescr left,
+			BaseDescr right, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+			
+				
+		BaseDescr or = createAndRestrictionConnective(left, right);						
+//		or.setParams((params == null ? "" : params)+(type == null ? "" : type));			
+//		or.setCutter(cutter);
+//		
+//		or.setLabel(id);
+		fillWithAttribs(or, attribs);
+		return or;
+	}
 
 	/**
 	 * Factory method that creates a RestrictionConnectiveDescr of type AND or
@@ -1239,6 +1468,26 @@
 
 		return and;
 	}
+	
+	
+	public BaseDescr createAndRestrictionConnective(BaseDescr left,
+			BaseDescr right, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+//			
+				
+		BaseDescr and = createAndRestrictionConnective(left, right);
+		fillWithAttribs(and, attribs);				
+//		and.setParams((params == null ? "" : params)+(type == null ? "" : type));			
+//				and.setCutter(cutter);
+//		
+//		and.setLabel(id);	
+		return and;
+	}
 
 	/**
 	 * Factory method that creates an EvaluatorBasedRestrictionDescr.
@@ -1391,7 +1640,93 @@
 		return fieldConstraint;
 	}
 
+	
+	
 	/**
+	 * Factory method that creates a XorDescr
+	 * 
+	 * @param start
+	 *            xor statement, used to get offset location
+	 * @param baseDescr
+	 *            binded descriptor
+	 * @return XorDescr filled.
+	 * @see XorDescr
+	 */
+	public XorDescr createXor(DroolsTree start, List<BaseDescr> lhsList) {
+		XorDescr xor = new XorDescr();
+		xor.setLocation(getColumnLocation(start), getColumnLocation(start));
+		xor.setStartCharacter(getStartOffsetLocation(start));
+		xor.setEndLocation(lhsList.get(lhsList.size() - 1).getEndLine(),
+				lhsList.get(lhsList.size() - 1).getEndColumn());
+		xor.setEndCharacter(lhsList.get(lhsList.size() - 1).getEndCharacter());
+		for (BaseDescr baseDescr : lhsList) {
+			xor.addDescr(baseDescr);
+		}
+		return xor;
+	}
+	
+	public XorDescr createXor(DroolsTree start, List<BaseDescr> lhsList, List<AttributeDescr> attribs) {
+		Map<String,String> atts = buildAttributes(attribs);
+		
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+		
+		XorDescr xor = createXor(start, lhsList);
+		fillWithAttribs(xor, attribs);
+//		xor.setParams((params == null ? "" : params)+(type == null ? "" : type));
+//		xor.setCutter(cutter);
+//		xor.setLabel(id);
+		return xor;
+	}
+	
+	
+	/**
+	 * Factory method that creates a EqvDescr
+	 * 
+	 * @param start
+	 *            Eqv statement, used to get offset location
+	 * @param baseDescr
+	 *            binded descriptor
+	 * @return EqvDescr filled.
+	 * @see EqvDescr
+	 */
+	public EqvDescr createEquiv(DroolsTree start, List<BaseDescr> lhsList) {
+		EqvDescr eqv = new EqvDescr();
+		eqv.setLocation(getColumnLocation(start), getColumnLocation(start));
+		eqv.setStartCharacter(getStartOffsetLocation(start));
+		eqv.setEndLocation(lhsList.get(lhsList.size() - 1).getEndLine(),
+				lhsList.get(lhsList.size() - 1).getEndColumn());
+		eqv.setEndCharacter(lhsList.get(lhsList.size() - 1).getEndCharacter());
+		for (BaseDescr baseDescr : lhsList) {
+			eqv.addDescr(baseDescr);
+		}
+		return eqv;
+	}
+	
+	public EqvDescr createEquiv(DroolsTree start, List<BaseDescr> lhsList, List<AttributeDescr> attribs) {
+//		Map<String,String> atts = buildAttributes(attribs);
+//		
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+		
+		EqvDescr eqv = createEquiv(start, lhsList);			 			
+		fillWithAttribs(eqv, attribs);
+//		eqv.setParams((params == null ? "" : params)+(type == null ? "" : type));
+//		eqv.setCutter(cutter);
+//		eqv.setLabel(id);
+		return eqv;
+	}
+	
+	
+	
+	
+	/**
 	 * Factory method that creates an accessor element descriptor.
 	 * 
 	 * @param id

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/FieldConstraintDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -48,5 +48,9 @@
     public RestrictionConnectiveDescr getRestriction() {
         return this.restriction;
     }
+    
+    public boolean isCutter() {
+    	return this.restriction.isCutter();
+    }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/PatternDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/PatternDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/PatternDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -33,6 +33,7 @@
     private int                     rightParentCharacter = -1;
     private PatternSourceDescr      source;
     private List<BehaviorDescr>     behaviors;
+       
 
     public PatternDescr() {
         this( null,
@@ -166,5 +167,9 @@
         }
         return clone;
     }
+    
+    
+    
 
+	
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionConnectiveDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -83,4 +83,13 @@
             }
         };
     }
+    
+    public boolean isCutter() {
+    	for (RestrictionDescr rd : this.restrictions)
+    		if (rd.isCutter())
+    			return true;
+    	return false;    	
+    }
+    
 }
+

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionDescr.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/RestrictionDescr.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -24,5 +24,9 @@
 public class RestrictionDescr extends BaseDescr {
 
     private static final long serialVersionUID = 400L;
+    
+    
+    
+    
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -22,9 +22,13 @@
 import org.drools.lang.descr.AndDescr;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.ConditionalElementDescr;
+import org.drools.lang.descr.EqvDescr;
 import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.ForAnyDescr;
+import org.drools.lang.descr.HedgeDescr;
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.XorDescr;
 import org.drools.rule.GroupElement;
 import org.drools.rule.GroupElementFactory;
 import org.drools.rule.Pattern;
@@ -50,7 +54,15 @@
                                     final Pattern prefixPattern) {
         final ConditionalElementDescr cedescr = (ConditionalElementDescr) descr;
 
-        final GroupElement ge = newGroupElementFor( cedescr.getClass() );
+        final GroupElement ge;
+        if (cedescr.getParams() == null)
+        	ge = newGroupElementFor( cedescr.getClass() );
+        else 
+        	ge = newGroupElementFor(cedescr.getClass(),cedescr.getParams());
+        
+        if (descr.getLabel() != null)
+        	ge.setLabel(descr.getLabel());
+        
         context.getBuildStack().push( ge );
 
         if ( prefixPattern != null ) {
@@ -93,9 +105,38 @@
             return GroupElementFactory.newNotInstance();
         } else if ( ExistsDescr.class.isAssignableFrom( descr ) ) {
             return GroupElementFactory.newExistsInstance();
-        } else {
+        } else if ( XorDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newXorInstance();
+        } else if ( EqvDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newEqvInstance();    
+        } else if ( HedgeDescr.class.isAssignableFrom( descr)) {
+        	return GroupElementFactory.newHedgeInstance();
+        }
+        else {
             throw new RuntimeDroolsException( "BUG: Not able to create a group element for descriptor: " + descr.getName() );
         }
     }
+    
+    
+    private GroupElement newGroupElementFor(final Class descr, String params) {
+        if ( AndDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newAndInstance(params);
+        } else if ( OrDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newOrInstance(params);
+        } else if ( NotDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newNotInstance(params);
+        } else if ( ExistsDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newExistsInstance(params);
+        } else if ( XorDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newXorInstance(params);
+        } else if ( EqvDescr.class.isAssignableFrom( descr ) ) {
+            return GroupElementFactory.newEqvInstance(params);    
+        } else if ( HedgeDescr.class.isAssignableFrom( descr)) {
+        	return GroupElementFactory.newHedgeInstance( params );
+        }
+        else {
+            throw new RuntimeDroolsException( "BUG: Not able to create a group element for descriptor: " + descr.getName() );
+        }
+    }
 
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -24,6 +24,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.drools.Order;
 import org.drools.base.ClassObjectType;
 import org.drools.base.FieldFactory;
 import org.drools.base.ValueType;
@@ -128,6 +129,8 @@
                                                           "ObjectType not correctly defined" ) );
             return null;
         }
+        
+        
 
         ObjectType objectType = null;
 
@@ -223,6 +226,12 @@
 
         // poping the pattern
         context.getBuildStack().pop();
+        
+        if (patternDescr.isCutter())
+        	pattern.setCutter(true);
+        
+        if (patternDescr.getLabel() != null)
+        	pattern.setLabel(patternDescr.getLabel());
 
         return pattern;
     }
@@ -231,6 +240,14 @@
                                  final Pattern pattern,
                                  final Object constraint,
                                  final AbstractCompositeConstraint container) {
+    	
+    	boolean cutter = false;
+    	String label = null;
+    	if (constraint instanceof RestrictionDescr) {
+    		cutter = ((RestrictionDescr) constraint).isCutter();
+    		label = ((RestrictionDescr) constraint).getLabel();
+    	}
+    	
         if ( constraint instanceof FieldBindingDescr ) {
             build( context,
                    pattern,
@@ -260,9 +277,12 @@
                 if ( and.getType().equals( Constraint.ConstraintType.UNKNOWN ) ) {
                     this.setConstraintType( pattern,
                                             (MutableTypeConstraint) and );
-                }
+                }                
                 container.addConstraint( and );
             }
+            and.setCutter(cutter);
+            and.setLabel(label);
+            and.setParams(((AndDescr) constraint ).getParams());
         } else if ( constraint instanceof OrDescr ) {
             OrConstraint or = new OrConstraint();
             for ( Iterator it = ((OrDescr) constraint).getDescrs().iterator(); it.hasNext(); ) {
@@ -279,8 +299,12 @@
                     this.setConstraintType( pattern,
                                             (MutableTypeConstraint) or );
                 }
+                
                 container.addConstraint( or );
             }
+            or.setCutter(cutter);  
+            or.setLabel(label);
+            or.setParams(((OrDescr) constraint ).getParams());
         } else {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                           (BaseDescr) constraint,
@@ -403,6 +427,14 @@
                                                           "This is a bug: Unkown restriction type '" + restriction.getClass() + "' for pattern '" + pattern.getObjectType().toString() + "' in rule '" + context.getRule().getName() + "'" ) );
         }
 
+        
+        boolean isCutter = fieldConstraintDescr.isCutter();
+        constraint.setCutter(isCutter);
+        
+        
+        
+        
+        
         if ( container == null ) {
             pattern.addConstraint( constraint );
         } else {
@@ -506,6 +538,10 @@
                                                         extractor,
                                                         fieldConstraintDescr,
                                                         restrictionDescr );
+                restrictions[index].setLabel(restrictionDescr.getLabel());
+                
+                
+                
                 if ( restrictions[index] == null ) {
                     context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                                   fieldConstraintDescr,

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -128,7 +128,14 @@
                 final Calendar cal = Calendar.getInstance();
                 cal.setTime( DateUtils.parseDate( attributeDescr.getValue() ) );
                 rule.setDateExpires( cal );
+            } else if ( name.equals( "prior" ) ) {
+            	rule.setPriorDescription(attributeDescr.getValue().substring(1,attributeDescr.getValue().length()-1));
+            } else if ( name.equals( "entail_mode" ) ) {
+            	rule.setEntailMode(attributeDescr.getValue());
+            } else if ( name.equals( "filter_str" ) ) {
+            	rule.setFilterStrategy(attributeDescr.getValue());
             }
+            
         }
 
         buildSalience( context );

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2009-05-15 03:41:16 UTC (rev 26541)
@@ -39,17 +39,21 @@
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.CollectDescr;
 import org.drools.lang.descr.EntryPointDescr;
+import org.drools.lang.descr.EqvDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.ForAnyDescr;
 import org.drools.lang.descr.ForallDescr;
 import org.drools.lang.descr.FromDescr;
 import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.HedgeDescr;
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.ProcessDescr;
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RuleDescr;
+import org.drools.lang.descr.XorDescr;
 import org.drools.rule.Function;
 import org.drools.rule.JavaDialectRuntimeData;
 import org.drools.rule.LineMappings;
@@ -61,6 +65,7 @@
 import org.drools.rule.builder.ConsequenceBuilder;
 import org.drools.rule.builder.EnabledBuilder;
 import org.drools.rule.builder.EntryPointBuilder;
+import org.drools.rule.builder.ForAnyBuilder;
 import org.drools.rule.builder.ForallBuilder;
 import org.drools.rule.builder.FromBuilder;
 import org.drools.rule.builder.FunctionBuilder;
@@ -110,6 +115,9 @@
     private static final ForallBuilder               FORALL_BUILDER                = new ForallBuilder();
     private static final EntryPointBuilder           ENTRY_POINT_BUILDER           = new EntryPointBuilder();
     private static final GroupElementBuilder         GE_BUILDER                    = new GroupElementBuilder();
+    private static final ForAnyBuilder               FORANY_BUILDER                = new ForAnyBuilder();
+    
+    
 
     // a map of registered builders
     private static Map                               builders;
@@ -191,9 +199,19 @@
 
         builders.put( NotDescr.class,
                       GE_BUILDER );
+        
+        builders.put( XorDescr.class,
+                GE_BUILDER );
+        
+        builders.put( EqvDescr.class,
+                GE_BUILDER );
 
         builders.put( ExistsDescr.class,
                       GE_BUILDER );
+        
+        builders.put( ForAnyDescr.class,
+                FORANY_BUILDER );
+        
 
         builders.put( PatternDescr.class,
                       PATTERN_BUILDER );
@@ -209,6 +227,9 @@
 
         builders.put( EvalDescr.class,
                       EVAL_BUILDER );
+        
+        builders.put( HedgeDescr.class,
+                GE_BUILDER );
 
         builders.put( EntryPointDescr.class,
                       ENTRY_POINT_BUILDER );
@@ -362,6 +383,8 @@
     public FromBuilder getFromBuilder() {
         return FROM_BUILDER;
     }
+    
+    
 
     public EntryPointBuilder getEntryPointBuilder() {
         return ENTRY_POINT_BUILDER;

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-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-05-15 03:41:16 UTC (rev 26541)
@@ -33,6 +33,8 @@
 	VT_OR_PREFIX;
 	VT_AND_INFIX;
 	VT_OR_INFIX;
+	VT_EQUIV;
+	VT_XOR;
 
 	VT_ACCUMULATE_INIT_CLAUSE;
 	VT_ACCUMULATE_ID_CLAUSE;
@@ -55,6 +57,20 @@
 	VT_GLOBAL_ID;
 	VT_FUNCTION_ID;
 	VT_PARAM_LIST;
+	
+	VT_CONSTRID;
+	
+	
+	VT_HEDGE;
+	
+	VT_CONSTR_ATTRIBUTES;
+  
+  VT_CONSTRID;  
+  VT_CUT;
+  VT_PRIOR;
+  VT_ARGS;
+  VT_TYPE;
+	
 
 	VK_DATE_EFFECTIVE;
 	VK_DATE_EXPIRES;
@@ -84,14 +100,36 @@
 	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;
 }
 
 @parser::header {
@@ -391,7 +429,7 @@
 	public void emitErrorMessage(String msg) {
 	}
 }
-
+ 
 compilation_unit
 	:	package_statement?
 		statement*
@@ -721,6 +759,9 @@
 	|	ruleflow_group 
 	|	lock_on_active
 	|	dialect 
+	| prior
+	| entail_mode
+	| filter
 	;
 finally {
 	if (isEditorInterfaceEnabled && isFailed) {
@@ -795,7 +836,25 @@
 	:	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*)
@@ -807,35 +866,81 @@
 lhs_or
 @init{
 	Token orToken = null;
-}	:	(LEFT_PAREN or_key)=> 
+}	:	(LEFT_PAREN or_key constr_parameters?)=> 
 		LEFT_PAREN  {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
-			or=or_key
+			or=or_key				
+			constr_parameters?
 	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
 			lhs_and+ 
 		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} // PREFIX 
-		-> ^(VT_OR_PREFIX[$or.start] lhs_and+ RIGHT_PAREN)
+		-> ^(VT_OR_PREFIX[$or.start] constr_parameters? lhs_and+ RIGHT_PAREN)
+	
+	
+	| (LEFT_PAREN equiv_key constr_parameters?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      equiv=equiv_key      
+      constr_parameters?
+  { 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_parameters? lhs_and lhs_and RIGHT_PAREN)
+	
+	| (LEFT_PAREN xor_key constr_parameters?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      xor=xor_key      
+      constr_parameters?
+  { 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_parameters? lhs_and lhs_and RIGHT_PAREN)
+	
+	
 	|	(lhs_and -> lhs_and) 
-		( (or_key|DOUBLE_PIPE)=> (value=or_key {orToken = $value.start;} |pipe=DOUBLE_PIPE {orToken = $pipe; emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);}) 
+		( (or_key  constr_parameters? |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] $lhs_or lhs_and))*
+		-> ^(VT_OR_INFIX[orToken]  constr_parameters? $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
 @init{
 	Token andToken = null;
-}	:	(LEFT_PAREN and_key)=> 
+}	:	(LEFT_PAREN and_key square_chunk?)=> 
 		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
 			and=and_key
+			square_chunk?
+			constr_parameters?
 	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
 			lhs_unary+ 
 		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}  // PREFIX
-		-> ^(VT_AND_PREFIX[$and.start] lhs_unary+ RIGHT_PAREN)
-	|	(lhs_unary -> lhs_unary) 
-		( (and_key|DOUBLE_AMPER)=> (value=and_key {andToken = $value.start;} |amper=DOUBLE_AMPER {andToken = $amper; emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);}) 
+		-> ^(VT_AND_PREFIX[$and.start] square_chunk? constr_parameters? lhs_unary+ RIGHT_PAREN)
+		
+	|	
+	
+	(lhs_unary -> lhs_unary) 
+		( (and_key square_chunk? |DOUBLE_AMPER)=> 
+		( value=and_key constr_parameters? 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] $lhs_and lhs_unary) )*
+		-> ^(VT_AND_INFIX[andToken] square_chunk? constr_parameters? $lhs_and  lhs_unary ) )*			  
 	;
 
 lhs_unary
@@ -844,6 +949,7 @@
 		|	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);	}
@@ -899,11 +1005,27 @@
 		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
 @init { boolean isFailed = true;	}
 @after { isFailed = false;	}
-	:	lhs_pattern
+	:	
+	  lhs_pattern
 		over_clause?
 		(
 			FROM^
@@ -1071,11 +1193,14 @@
 	  -> ^(VT_EXPRESSION_CHAIN[$DOT] ID square_chunk? paren_chunk? expression_chain?)
 	;
 
+	
 lhs_pattern
-	:	fact_binding -> ^(VT_PATTERN fact_binding)
-	|	fact -> ^(VT_PATTERN fact)
-	;
+  : fact_binding -> ^(VT_PATTERN fact_binding) //^(VT_CUT cut_key)?
+  | fact  -> ^(VT_PATTERN fact) //^(VT_CUT cut_key)?     
+  ;
+	
 
+  
 fact_binding
  	:	label
 		( fact
@@ -1101,11 +1226,15 @@
 	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	}
 			constraints? 
 		RIGHT_PAREN {	isFailedOnConstraints = false;	}
+		 constr_parameters? 
 	{	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)
+		
+		
+		
+	->	^(VT_FACT pattern_type constraints? constr_parameters? RIGHT_PAREN)
 	;
 finally {
 	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
@@ -1125,16 +1254,124 @@
 	:	or_constr
 	;
 
+
+
+
 or_constr
-	:	and_constr ( DOUBLE_PIPE^ 
-	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	} and_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_parameters             
+           and_constr
+      -> ^(SINGLE_PIPE 
+            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+            constr_parameters? 
+            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_parameters?                 
+           unary_constr           
+      -> ^(SINGLE_AMPER 
+            // square_chunk? ^(VT_CONSTRID constr_identifier)? cut?
+            constr_parameters? 
+            unary_constr unary_constr)
+    |
+    unary_constr      
+  ;      
+
+
+
+/*
+or_constr
+	:		          
+                      
+     (
+        and_constr  
+          (SINGLE_PIPE
+           square_chunk?
+           constr_parameters?                 
+           and_constr
+          )
+          (DOUBLE_PIPE                         
+           and_constr
+          )*
+                
+        -> ^(SINGLE_PIPE constr_parameters? and_constr+)
+     
+     |
+     
+      and_constr
+        (DOUBLE_PIPE^                         
+         and_constr
+        )*
+        
+     )                  
 	;
 
 and_constr
-	:	unary_constr ( DOUBLE_AMPER^ 
-	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);;	} unary_constr )*
+
+	:	 	 
+	   	          
+     (
+          unary_constr   
+          (SINGLE_AMPER
+           square_chunk?
+           constr_parameters?                 
+           unary_constr
+          )
+          (DOUBLE_AMPER                         
+           unary_constr
+          )*
+                
+          -> ^(SINGLE_AMPER constr_parameters? unary_constr+)
+     
+     |
+        unary_constr
+        (DOUBLE_AMPER^                         
+         unary_constr
+        )*
+     )   
 	;
 
+*/
+
+
 unary_constr
 options { k=2; }
 @init { boolean isFailed = true;	}
@@ -1159,10 +1396,11 @@
 	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?))
-	|	accessor_path or_restr_connective
-		-> ^(VT_FIELD accessor_path or_restr_connective)
+		-> ^(VT_BIND_FIELD label ^(VT_FIELD accessor_path or_restr_connective? ))
+	|	accessor_path or_restr_connective 
+		-> ^(VT_FIELD accessor_path or_restr_connective )
 	;
 
 label
@@ -1172,8 +1410,8 @@
 	;
 
 or_restr_connective
-	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^ 
-	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}  and_restr_connective )* 
+	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^  
+	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}   and_restr_connective )* 
 	;
 catch [ RecognitionException re ] {
 	if (!lookaheadTest){
@@ -1203,7 +1441,10 @@
 options{
 k=3;
 }	:	compound_operator
-	|	simple_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! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
 			or_restr_connective 
 		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} 
@@ -1251,22 +1492,62 @@
 }
 
 simple_operator
- at init {if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);}
+ at init {
+  if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
+}
 	:	
-	(
-		EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	}
-	|	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	}
-	|	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	}
-	|	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	not_key?
-		(	operator_key^ square_chunk?	)
-	)
-	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
-	expression_value
+	   ( 
+		    EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+		    { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+		    } 		    		   
+        //expression_value
+        
+        
+	   |	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+	      
+	      }
+        //expression_value
+        
+	   |	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+	      {  emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value 
+	   
+	   |	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   |	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	} //ans=constr_parameters?
+	      { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	      
+	      }
+        //expression_value
+	   
+	   
+	   )	   	 	      	
 	;
 
+
+custom_operator
+  :  
+     not_key?
+     approx_symb? operator_key^
+     square_chunk?      
+     { emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
+        
+    }        
+  ;
+
 //Simple Syntax Sugar
 compound_operator 
 @init { if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); }
@@ -1284,7 +1565,76 @@
 		input.consume();
 		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
 	}	}
+	
+	
+	
+/*	
+constr_parameters
+  : AT!
+      
+  ;	
+  */
+  
+constr_parameters
+ :   
+  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    
+  ;    
+  
+  
+  
+
 operator_key
 	:      {(isPluggableEvaluator(false))}? => id=ID
 	       { emit($id, DroolsEditorType.IDENTIFIER); }
@@ -1466,7 +1816,7 @@
 		emit($id2, DroolsEditorType.KEYWORD);	}
 		->	VK_DATE_EFFECTIVE[$start, text]
 	;
-
+ 
 date_expires_key
 @init{
 	String text = "";
@@ -1561,6 +1911,25 @@
 		->	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);	}
@@ -1648,8 +2017,21 @@
 and_key
 	:	{(validateIdentifierKey(DroolsSoftKeywords.AND))}?=>  id=ID
 	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_AND[$id]
+		->	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
@@ -1662,6 +2044,12 @@
 	{	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
@@ -1697,7 +2085,75 @@
 	{	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]
+  ;  
+    
+  
+
+
+
+	
+approx_symb
+  : APPROX -> VK_APPROX
+  ;	
+  
+	
+	
+
 WS      :       (	' '
                 |	'\t'
                 |	'\f'
@@ -1784,6 +2240,16 @@
 	:	'when'
 	;
 
+
+APPROX
+  : '~'
+  ;
+
+CUT 
+  : '!'
+  ;
+  
+
 AT	:	'@'
 	;
 
@@ -1874,6 +2340,14 @@
 DOUBLE_PIPE
 	:	'||'
 	;
+	
+SINGLE_AMPER
+  : '&'
+  ;
+  
+SINGLE_PIPE
+  : '|'
+  ;	
 
 SH_STYLE_SINGLE_LINE_COMMENT	
 	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
@@ -1884,7 +2358,7 @@
 C_STYLE_SINGLE_LINE_COMMENT	
 	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
                 { $channel=HIDDEN; }
-	;
+	; 
 
 MULTI_LINE_COMMENT
 	:	'/*' (options{greedy=false;} : .)* '*/'
@@ -1892,5 +2366,5 @@
 	;
 
 MISC 	:
-		'!' | '$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' | '|' | '&'
+		'$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' 
 	;

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-05-15 02:20:14 UTC (rev 26540)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-05-15 03:41:16 UTC (rev 26541)
@@ -48,7 +48,7 @@
 compilation_unit
 	:	^(VT_COMPILATION_UNIT package_statement statement*)
 	;
-
+ 
 package_statement returns [String packageName]
 	:	^(VK_PACKAGE packageId=package_id)
 	{	this.packageDescr = factory.createPackage($packageId.idList);	
@@ -203,9 +203,31 @@
 	|	^(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_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);	}
 	;
+
+
+constraint_attributes returns [List attrList]
+ at init{
+  $attrList = new LinkedList<AttributeDescr>();
+} : ^(VT_CONSTR_ATTRIBUTES (conAtt=constr_attribute {attrList.add($conAtt.attributeDescr);})+)
+  ;
+  
+constr_attribute returns [AttributeDescr attributeDescr] 
+  : (
+    ^(attrName=VK_CONSTRID value=STRING) 
+  | ^(attrName=VK_ARGS value=STRING)  
+  | ^(attrName=VK_TYPE value=STRING)   
+  | ^(attrName=VK_CUT value=STRING)   
+  | ^(attrName=VK_PRIOR value=STRING)   
+  )
+  { $attributeDescr = factory.createAttribute($attrName, $value); }
+  ;  
 	
 lhs_block returns [AndDescr andDescr]
 @init{
@@ -216,26 +238,47 @@
 lhs	returns [BaseDescr baseDescr]
 @init{
 	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
-}	:	^(start=VT_OR_PREFIX (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
-	{	$baseDescr = factory.createOr($start, lhsList);	}
-	|	^(start=VT_OR_INFIX dt1=lhs dt2=lhs)
+}	:	^(start=VT_OR_PREFIX attribs=constraint_attributes? (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
+	{	$baseDescr = factory.createOr($start, lhsList, attribs);	}
+	|	^(start=VT_OR_INFIX attribs=constraint_attributes? dt1=lhs dt2=lhs)
 	{	lhsList.add($dt1.baseDescr);
 		lhsList.add($dt2.baseDescr);
-		$baseDescr = factory.createOr($start, lhsList);	}
-	|	^(start=VT_AND_PREFIX (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
-	{	$baseDescr = factory.createAnd($start, lhsList);	}
-	|	^(start=VT_AND_INFIX dt1=lhs dt2=lhs)
+		$baseDescr = factory.createOr($start, lhsList, attribs);	}
+	|	^(start=VT_AND_PREFIX attribs=constraint_attributes? (dt=lhs {	lhsList.add($dt.baseDescr);	})+)
+	{	$baseDescr = factory.createAnd($start, lhsList, attribs);	}
+	|	^(start=VT_AND_INFIX attribs=constraint_attributes? dt1=lhs dt2=lhs)
 	{	lhsList.add($dt1.baseDescr);
 		lhsList.add($dt2.baseDescr);
-		$baseDescr = factory.createAnd($start, lhsList);	}
+		$baseDescr = factory.createAnd($start, lhsList, attribs);	}
+		
+	|  ^(start=VT_EQUIV attribs=constraint_attributes? dt1=lhs dt2=lhs)
+  { lhsList.add($dt1.baseDescr);
+    lhsList.add($dt2.baseDescr);
+    $baseDescr = factory.createEquiv($start, lhsList, attribs);  }	
+  |  ^(start=VT_XOR attribs=constraint_attributes? dt1=lhs dt2=lhs)
+  { lhsList.add($dt1.baseDescr);
+    lhsList.add($dt2.baseDescr);
+    $baseDescr = factory.createXor($start, lhsList, attribs);  }  
+		
+		
+		
 	|	^(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
@@ -303,9 +346,11 @@
 		expression_chain?)
 	;
 
-lhs_pattern returns [BaseDescr baseDescr]
-	:	^(VT_PATTERN fe=fact_expression) oc=over_clause?
-	{	$baseDescr = factory.setupBehavior($fe.descr, $oc.behaviorList);	}
+lhs_pattern returns [BaseDescr baseDescr] 
+	:	^(VT_PATTERN fe=fact_expression ) oc=over_clause?
+	{	
+	 $baseDescr = factory.setupBehavior($fe.descr, $oc.behaviorList);	  
+	}
 	;
 
 over_clause returns [List behaviorList]
@@ -321,23 +366,23 @@
 fact_expression returns [BaseDescr descr]
 @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)
+}	:	^(VT_FACT pt=pattern_type (fe=fact_expression {exprList.add($fe.descr);})* attribs=constraint_attributes?)
+	{	$descr = factory.createPattern($pt.dataType, exprList, attribs);	}
+	|	^(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)
+	|	^(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?)
+	|	^(VT_FIELD field=field_element fe=fact_expression? attribs=constraint_attributes?)
 	{	if (null != fe){
-			$descr = factory.setupFieldConstraint($field.element, $fe.descr);
+			$descr = factory.setupFieldConstraint($field.element, $fe.descr, attribs);
 		} else {
-			$descr = factory.setupFieldConstraint($field.element, null);
+			$descr = factory.setupFieldConstraint($field.element, null, attribs);
 		}	}
 	|	^(VT_BIND_FIELD label=VT_LABEL fe=fact_expression)
 	{	$descr = factory.createFieldBinding($label, $fe.descr);	}
 
-	|	^(VK_EVAL pc=VT_PAREN_CHUNK)
+	|	^(VK_EVAL pc=VT_PAREN_CHUNK) 
 	{	$descr = factory.createPredicate($pc);	}
 
 	|	^(op=EQUAL fe=fact_expression)
@@ -352,23 +397,27 @@
 	{	$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? param=VT_SQUARE_CHUNK? fe=fact_expression)
-	{	$descr = factory.setupRestriction($op, $not, $fe.descr, $param);	}
-
+	|	^(op=VK_OPERATOR not=VK_NOT? approx=VK_APPROX? param=VT_SQUARE_CHUNK? attribs=constraint_attributes? fe=fact_expression?)
+	{	$descr = factory.setupRestriction($op, $not, (fe == null ? null : $fe.descr), $param, attribs);	}
+	
+ 
 	|	^(VK_IN not=VK_NOT? (fe=fact_expression {exprList.add($fe.descr);})+)
 	{	$descr = factory.createRestrictionConnective($not, exprList);	}
 
-	|	^(DOUBLE_PIPE left=fact_expression right=fact_expression)
-	{	$descr = factory.createOrRestrictionConnective($left.descr, $right.descr);	}
-	|	^(DOUBLE_AMPER left=fact_expression right=fact_expression)
-	{	$descr = factory.createAndRestrictionConnective($left.descr, $right.descr);	}
+	|	^((DOUBLE_PIPE | SINGLE_PIPE)  attribs=constraint_attributes? left=fact_expression right=fact_expression )
+	{	$descr = factory.createOrRestrictionConnective($left.descr, $right.descr, attribs); }	
+	  
+	|	^((DOUBLE_AMPER | SINGLE_AMPER) attribs=constraint_attributes? left=fact_expression right=fact_expression )
+	{	$descr = factory.createAndRestrictionConnective($left.descr, $right.descr, attribs); 
+		
+	} 
 
 	|	^(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);	}
+	{	$descr = factory.createIntLiteralRestriction($i);	} 
 	|	f=FLOAT
 	{	$descr = factory.createFloatLiteralRestriction($f);	}
 	|	b=BOOL
@@ -400,3 +449,14 @@
 	:	^(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; }
+  ;
+  
+constr_identifier returns [String id] 
+  : ^(start=VT_CONSTRID ans=VK_AT) 
+    { $id = $ans.text; }    
+  ;    
+	
\ No newline at end of file




More information about the jboss-svn-commits mailing list