docs: public final BaseDescr unaryExpression() throws RecognitionException {
  		BaseDescr result = null;
  
  
  		BaseDescr ue =null;
  		ParserRuleReturnScope left =null;
  
  		try {
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:481:5: ( PLUS ue= unaryExpression | MINUS ue= unaryExpression | INCR primary | DECR primary |left= unaryExpressionNotPlusMinus )
  			int alt49=5;
  			switch ( input.LA(1) ) {
  			case PLUS:
  				{
  				alt49=1;
  				}
  				break;
  			case MINUS:
  				{
  				alt49=2;
  				}
  				break;
  			case INCR:
  				{
  				alt49=3;
  				}
  				break;
  			case DECR:
  				{
  				alt49=4;
  				}
  				break;
  			case BOOL:
  			case DECIMAL:
  			case DIV:
  			case DOT:
  			case FLOAT:
  			case HEX:
  			case ID:
  			case LEFT_PAREN:
  			case LEFT_SQUARE:
  			case LESS:
  			case NEGATION:
  			case NULL:
  			case QUESTION_DIV:
  			case STAR:
  			case STRING:
  			case TILDE:
  			case TIME_INTERVAL:
  				{
  				alt49=5;
  				}
  				break;
  			default:
  				if (state.backtracking>0) {state.failed=true; return result;}
  				NoViableAltException nvae =
  					new NoViableAltException("", 49, 0, input);
  				throw nvae;
  			}
  			switch (alt49) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:481:9: PLUS ue= unaryExpression
  					{
  					match(input,PLUS,FOLLOW_PLUS_in_unaryExpression2351); if (state.failed) return result;
  					pushFollow(FOLLOW_unaryExpression_in_unaryExpression2355);
  					ue=unaryExpression();
  					state._fsp--;
  					if (state.failed) return result;
  					if ( state.backtracking==0 ) { if( buildDescr ) {
  					            result = ue;
  					            if( result instanceof AtomicExprDescr ) {
  					                ((AtomicExprDescr)result).setExpression( "+" + ((AtomicExprDescr)result).getExpression() );
  					            }
  					        } }
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:488:7: MINUS ue= unaryExpression
  					{
  					match(input,MINUS,FOLLOW_MINUS_in_unaryExpression2373); if (state.failed) return result;
  					pushFollow(FOLLOW_unaryExpression_in_unaryExpression2377);
  					ue=unaryExpression();
  					state._fsp--;
  					if (state.failed) return result;
  					if ( state.backtracking==0 ) { if( buildDescr ) {
  					            result = ue;
  					            if( result instanceof AtomicExprDescr ) {
  					                ((AtomicExprDescr)result).setExpression( "-" + ((AtomicExprDescr)result).getExpression() );
  					            }
  					        } }
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:495:9: INCR primary
  					{
  					match(input,INCR,FOLLOW_INCR_in_unaryExpression2397); if (state.failed) return result;
  					pushFollow(FOLLOW_primary_in_unaryExpression2399);
  					primary();
  					state._fsp--;
  					if (state.failed) return result;
  					}
  					break;
  				case 4 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:496:9: DECR primary
  					{
  					match(input,DECR,FOLLOW_DECR_in_unaryExpression2409); if (state.failed) return result;
  					pushFollow(FOLLOW_primary_in_unaryExpression2411);
  					primary();
  					state._fsp--;
  					if (state.failed) return result;
  					}
  					break;
  				case 5 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:497:9: left= unaryExpressionNotPlusMinus
  					{
  					pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression2423);
  					left=unaryExpressionNotPlusMinus();
  					state._fsp--;
  					if (state.failed) return result;
  					if ( state.backtracking==0 ) { if( buildDescr ) { result = (left!=null?((DRL6Expressions.unaryExpressionNotPlusMinus_return)left).result:null); } }
  					}
  					break;
  
  			}
  		}
  
  		catch (RecognitionException re) {
  		    throw re;
  		}
  
  		finally {
  			// do for sure before leaving
  		}
  		return result;
  	}