docs: public final BaseDescr xpathChunk() throws RecognitionException {
  		BaseDescr result = null;
  
  
  		try {
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:5: ( ( xpathSeparator ID )=> xpathSeparator ID ( DOT ID )* ( HASH ID )? ( LEFT_SQUARE xpathExpressionList RIGHT_SQUARE )? )
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:7: ( xpathSeparator ID )=> xpathSeparator ID ( DOT ID )* ( HASH ID )? ( LEFT_SQUARE xpathExpressionList RIGHT_SQUARE )?
  			{
  			pushFollow(FOLLOW_xpathSeparator_in_xpathChunk2947);
  			xpathSeparator();
  			state._fsp--;
  			if (state.failed) return result;
  			match(input,ID,FOLLOW_ID_in_xpathChunk2949); if (state.failed) return result;
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:47: ( DOT ID )*
  			loop59:
  			while (true) {
  				int alt59=2;
  				int LA59_0 = input.LA(1);
  				if ( (LA59_0==DOT) ) {
  					int LA59_2 = input.LA(2);
  					if ( (LA59_2==ID) ) {
  						alt59=1;
  					}
  
  				}
  
  				switch (alt59) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:48: DOT ID
  					{
  					match(input,DOT,FOLLOW_DOT_in_xpathChunk2952); if (state.failed) return result;
  					match(input,ID,FOLLOW_ID_in_xpathChunk2954); if (state.failed) return result;
  					}
  					break;
  
  				default :
  					break loop59;
  				}
  			}
  
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:57: ( HASH ID )?
  			int alt60=2;
  			int LA60_0 = input.LA(1);
  			if ( (LA60_0==HASH) ) {
  				alt60=1;
  			}
  			switch (alt60) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:58: HASH ID
  					{
  					match(input,HASH,FOLLOW_HASH_in_xpathChunk2959); if (state.failed) return result;
  					match(input,ID,FOLLOW_ID_in_xpathChunk2961); if (state.failed) return result;
  					}
  					break;
  
  			}
  
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:68: ( LEFT_SQUARE xpathExpressionList RIGHT_SQUARE )?
  			int alt61=2;
  			int LA61_0 = input.LA(1);
  			if ( (LA61_0==LEFT_SQUARE) ) {
  				alt61=1;
  			}
  			switch (alt61) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:569:69: LEFT_SQUARE xpathExpressionList RIGHT_SQUARE
  					{
  					match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_xpathChunk2966); if (state.failed) return result;
  					pushFollow(FOLLOW_xpathExpressionList_in_xpathChunk2968);
  					xpathExpressionList();
  					state._fsp--;
  					if (state.failed) return result;
  					match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_xpathChunk2970); if (state.failed) return result;
  					}
  					break;
  
  			}
  
  			}
  
  		}
  
  		catch (RecognitionException re) {
  		    throw re;
  		}
  
  		finally {
  			// do for sure before leaving
  		}
  		return result;
  	}