docs: public final DSLMapParser.scope_section_return scope_section() throws RecognitionException {
  		DSLMapParser.scope_section_return retval = new DSLMapParser.scope_section_return();
  		retval.start = input.LT(1);
  
  		Object root_0 = null;
  
  		Token LEFT_SQUARE11=null;
  		Token RIGHT_SQUARE12=null;
  		ParserRuleReturnScope value1 =null;
  		ParserRuleReturnScope value2 =null;
  		ParserRuleReturnScope value3 =null;
  		ParserRuleReturnScope value4 =null;
  
  		Object LEFT_SQUARE11_tree=null;
  		Object RIGHT_SQUARE12_tree=null;
  		RewriteRuleTokenStream stream_RIGHT_SQUARE=new RewriteRuleTokenStream(adaptor,"token RIGHT_SQUARE");
  		RewriteRuleTokenStream stream_LEFT_SQUARE=new RewriteRuleTokenStream(adaptor,"token LEFT_SQUARE");
  		RewriteRuleSubtreeStream stream_any_key=new RewriteRuleSubtreeStream(adaptor,"rule any_key");
  		RewriteRuleSubtreeStream stream_condition_key=new RewriteRuleSubtreeStream(adaptor,"rule condition_key");
  		RewriteRuleSubtreeStream stream_keyword_key=new RewriteRuleSubtreeStream(adaptor,"rule keyword_key");
  		RewriteRuleSubtreeStream stream_consequence_key=new RewriteRuleSubtreeStream(adaptor,"rule consequence_key");
  
  		try {
  			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:131:5: ( LEFT_SQUARE (value1= condition_key |value2= consequence_key |value3= keyword_key |value4= any_key ) RIGHT_SQUARE -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? ) )
  			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:131:7: LEFT_SQUARE (value1= condition_key |value2= consequence_key |value3= keyword_key |value4= any_key ) RIGHT_SQUARE
  			{
  			LEFT_SQUARE11=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_scope_section412); if (state.failed) return retval; 
  			if ( state.backtracking==0 ) stream_LEFT_SQUARE.add(LEFT_SQUARE11);
  
  			// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:132:9: (value1= condition_key |value2= consequence_key |value3= keyword_key |value4= any_key )
  			int alt6=4;
  			int LA6_0 = input.LA(1);
  			if ( (LA6_0==LITERAL) ) {
  				int LA6_1 = input.LA(2);
  				if ( (((validateIdentifierKey("condition")||validateIdentifierKey("when"))&&synpred6_DSLMap())) ) {
  					alt6=1;
  				}
  				else if ( ((synpred7_DSLMap()&&(validateIdentifierKey("consequence")||validateIdentifierKey("then")))) ) {
  					alt6=2;
  				}
  				else if ( ((synpred8_DSLMap()&&(validateIdentifierKey("keyword")))) ) {
  					alt6=3;
  				}
  				else if ( ((validateIdentifierKey("*"))) ) {
  					alt6=4;
  				}
  
  				else {
  					if (state.backtracking>0) {state.failed=true; return retval;}
  					int nvaeMark = input.mark();
  					try {
  						input.consume();
  						NoViableAltException nvae =
  							new NoViableAltException("", 6, 1, input);
  						throw nvae;
  					} finally {
  						input.rewind(nvaeMark);
  					}
  				}
  
  			}
  
  			else {
  				if (state.backtracking>0) {state.failed=true; return retval;}
  				NoViableAltException nvae =
  					new NoViableAltException("", 6, 0, input);
  				throw nvae;
  			}
  
  			switch (alt6) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:132:10: value1= condition_key
  					{
  					pushFollow(FOLLOW_condition_key_in_scope_section425);
  					value1=condition_key();
  					state._fsp--;
  					if (state.failed) return retval;
  					if ( state.backtracking==0 ) stream_condition_key.add(value1.getTree());
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:133:11: value2= consequence_key
  					{
  					pushFollow(FOLLOW_consequence_key_in_scope_section439);
  					value2=consequence_key();
  					state._fsp--;
  					if (state.failed) return retval;
  					if ( state.backtracking==0 ) stream_consequence_key.add(value2.getTree());
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:134:11: value3= keyword_key
  					{
  					pushFollow(FOLLOW_keyword_key_in_scope_section453);
  					value3=keyword_key();
  					state._fsp--;
  					if (state.failed) return retval;
  					if ( state.backtracking==0 ) stream_keyword_key.add(value3.getTree());
  					}
  					break;
  				case 4 :
  					// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:135:11: value4= any_key
  					{
  					pushFollow(FOLLOW_any_key_in_scope_section467);
  					value4=any_key();
  					state._fsp--;
  					if (state.failed) return retval;
  					if ( state.backtracking==0 ) stream_any_key.add(value4.getTree());
  					}
  					break;
  
  			}
  
  			RIGHT_SQUARE12=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_scope_section483); if (state.failed) return retval; 
  			if ( state.backtracking==0 ) stream_RIGHT_SQUARE.add(RIGHT_SQUARE12);
  
  			// AST REWRITE
  			// elements: value2, value3, value1, value4
  			// token labels: 
  			// rule labels: retval, value3, value4, value1, value2
  			// token list labels: 
  			// rule list labels: 
  			// wildcard labels: 
  			if ( state.backtracking==0 ) {
  			retval.tree = root_0;
  			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
  			RewriteRuleSubtreeStream stream_value3=new RewriteRuleSubtreeStream(adaptor,"rule value3",value3!=null?value3.getTree():null);
  			RewriteRuleSubtreeStream stream_value4=new RewriteRuleSubtreeStream(adaptor,"rule value4",value4!=null?value4.getTree():null);
  			RewriteRuleSubtreeStream stream_value1=new RewriteRuleSubtreeStream(adaptor,"rule value1",value1!=null?value1.getTree():null);
  			RewriteRuleSubtreeStream stream_value2=new RewriteRuleSubtreeStream(adaptor,"rule value2",value2!=null?value2.getTree():null);
  
  			root_0 = (Object)adaptor.nil();
  			// 138:5: -> ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
  			{
  				// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:138:8: ^( VT_SCOPE[$LEFT_SQUARE, \"SCOPE SECTION\"] ( $value1)? ( $value2)? ( $value3)? ( $value4)? )
  				{
  				Object root_1 = (Object)adaptor.nil();
  				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SCOPE, LEFT_SQUARE11, "SCOPE SECTION"), root_1);
  				// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:138:51: ( $value1)?
  				if ( stream_value1.hasNext() ) {
  					adaptor.addChild(root_1, stream_value1.nextTree());
  				}
  				stream_value1.reset();
  
  				// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:138:60: ( $value2)?
  				if ( stream_value2.hasNext() ) {
  					adaptor.addChild(root_1, stream_value2.nextTree());
  				}
  				stream_value2.reset();
  
  				// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:138:69: ( $value3)?
  				if ( stream_value3.hasNext() ) {
  					adaptor.addChild(root_1, stream_value3.nextTree());
  				}
  				stream_value3.reset();
  
  				// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:138:78: ( $value4)?
  				if ( stream_value4.hasNext() ) {
  					adaptor.addChild(root_1, stream_value4.nextTree());
  				}
  				stream_value4.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 {
  			// do for sure before leaving
  		}
  		return retval;
  	}