docs: public final void selector() throws RecognitionException {
  		Token DOT20=null;
  		Token DOT21=null;
  		Token DOT22=null;
  		Token ID23=null;
  		Token LEFT_SQUARE24=null;
  		Token RIGHT_SQUARE25=null;
  
  		try {
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:697:5: ( ( DOT super_key )=> DOT super_key superSuffix | ( DOT new_key )=> DOT new_key ( nonWildcardTypeArguments )? innerCreator | ( DOT ID )=> DOT ID ( ( LEFT_PAREN )=> arguments )? | ( LEFT_SQUARE )=> LEFT_SQUARE expression RIGHT_SQUARE )
  			int alt91=4;
  			int LA91_0 = input.LA(1);
  			if ( (LA91_0==DOT) ) {
  				int LA91_1 = input.LA(2);
  				if ( (synpred41_DRL6Expressions()) ) {
  					alt91=1;
  				}
  				else if ( (synpred42_DRL6Expressions()) ) {
  					alt91=2;
  				}
  				else if ( (synpred43_DRL6Expressions()) ) {
  					alt91=3;
  				}
  
  				else {
  					if (state.backtracking>0) {state.failed=true; return;}
  					int nvaeMark = input.mark();
  					try {
  						input.consume();
  						NoViableAltException nvae =
  							new NoViableAltException("", 91, 1, input);
  						throw nvae;
  					} finally {
  						input.rewind(nvaeMark);
  					}
  				}
  
  			}
  			else if ( (LA91_0==LEFT_SQUARE) && (synpred45_DRL6Expressions())) {
  				alt91=4;
  			}
  
  			switch (alt91) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:697:9: ( DOT super_key )=> DOT super_key superSuffix
  					{
  					DOT20=(Token)match(input,DOT,FOLLOW_DOT_in_selector4235); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(DOT20, DroolsEditorType.SYMBOL); }
  					pushFollow(FOLLOW_super_key_in_selector4239);
  					super_key();
  					state._fsp--;
  					if (state.failed) return;
  					pushFollow(FOLLOW_superSuffix_in_selector4241);
  					superSuffix();
  					state._fsp--;
  					if (state.failed) return;
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:698:9: ( DOT new_key )=> DOT new_key ( nonWildcardTypeArguments )? innerCreator
  					{
  					DOT21=(Token)match(input,DOT,FOLLOW_DOT_in_selector4257); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(DOT21, DroolsEditorType.SYMBOL); }
  					pushFollow(FOLLOW_new_key_in_selector4261);
  					new_key();
  					state._fsp--;
  					if (state.failed) return;
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:698:84: ( nonWildcardTypeArguments )?
  					int alt89=2;
  					int LA89_0 = input.LA(1);
  					if ( (LA89_0==LESS) ) {
  						alt89=1;
  					}
  					switch (alt89) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:698:85: nonWildcardTypeArguments
  							{
  							pushFollow(FOLLOW_nonWildcardTypeArguments_in_selector4264);
  							nonWildcardTypeArguments();
  							state._fsp--;
  							if (state.failed) return;
  							}
  							break;
  
  					}
  
  					pushFollow(FOLLOW_innerCreator_in_selector4268);
  					innerCreator();
  					state._fsp--;
  					if (state.failed) return;
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:699:9: ( DOT ID )=> DOT ID ( ( LEFT_PAREN )=> arguments )?
  					{
  					DOT22=(Token)match(input,DOT,FOLLOW_DOT_in_selector4284); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(DOT22, DroolsEditorType.SYMBOL); }
  					ID23=(Token)match(input,ID,FOLLOW_ID_in_selector4306); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(ID23, DroolsEditorType.IDENTIFIER); }
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:701:19: ( ( LEFT_PAREN )=> arguments )?
  					int alt90=2;
  					int LA90_0 = input.LA(1);
  					if ( (LA90_0==LEFT_PAREN) ) {
  						int LA90_1 = input.LA(2);
  						if ( (synpred44_DRL6Expressions()) ) {
  							alt90=1;
  						}
  					}
  					switch (alt90) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:701:20: ( LEFT_PAREN )=> arguments
  							{
  							pushFollow(FOLLOW_arguments_in_selector4335);
  							arguments();
  							state._fsp--;
  							if (state.failed) return;
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 4 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:703:9: ( LEFT_SQUARE )=> LEFT_SQUARE expression RIGHT_SQUARE
  					{
  					LEFT_SQUARE24=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_selector4356); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(LEFT_SQUARE24, DroolsEditorType.SYMBOL); }
  					pushFollow(FOLLOW_expression_in_selector4383);
  					expression();
  					state._fsp--;
  					if (state.failed) return;
  					RIGHT_SQUARE25=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_selector4408); if (state.failed) return;
  					if ( state.backtracking==0 ) { helper.emit(RIGHT_SQUARE25, DroolsEditorType.SYMBOL); }
  					}
  					break;
  
  			}
  		}
  
  		catch (RecognitionException re) {
  		    throw re;
  		}
  
  		finally {
  			// do for sure before leaving
  		}
  	}