docs: public final BaseDescr equalityExpression() throws RecognitionException {
  		BaseDescr result = null;
  
  
  		Token op=null;
  		BaseDescr left =null;
  		BaseDescr right =null;
  
  		try {
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:300:3: (left= instanceOfExpression ( (op= EQUALS |op= NOT_EQUALS ) right= instanceOfExpression )* )
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:300:5: left= instanceOfExpression ( (op= EQUALS |op= NOT_EQUALS ) right= instanceOfExpression )*
  			{
  			pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression1477);
  			left=instanceOfExpression();
  			state._fsp--;
  			if (state.failed) return result;
  			if ( state.backtracking==0 ) { if( buildDescr  ) { result = left; } }
  			// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:301:3: ( (op= EQUALS |op= NOT_EQUALS ) right= instanceOfExpression )*
  			loop32:
  			while (true) {
  				int alt32=2;
  				int LA32_0 = input.LA(1);
  				if ( (LA32_0==EQUALS||LA32_0==NOT_EQUALS) ) {
  					alt32=1;
  				}
  
  				switch (alt32) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:301:5: (op= EQUALS |op= NOT_EQUALS ) right= instanceOfExpression
  					{
  					// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:301:5: (op= EQUALS |op= NOT_EQUALS )
  					int alt31=2;
  					int LA31_0 = input.LA(1);
  					if ( (LA31_0==EQUALS) ) {
  						alt31=1;
  					}
  					else if ( (LA31_0==NOT_EQUALS) ) {
  						alt31=2;
  					}
  
  					else {
  						if (state.backtracking>0) {state.failed=true; return result;}
  						NoViableAltException nvae =
  							new NoViableAltException("", 31, 0, input);
  						throw nvae;
  					}
  
  					switch (alt31) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:301:7: op= EQUALS
  							{
  							op=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_equalityExpression1489); if (state.failed) return result;
  							}
  							break;
  						case 2 :
  							// src/main/resources/org/drools/compiler/lang/DRL6Expressions.g:301:19: op= NOT_EQUALS
  							{
  							op=(Token)match(input,NOT_EQUALS,FOLLOW_NOT_EQUALS_in_equalityExpression1495); if (state.failed) return result;
  							}
  							break;
  
  					}
  
  					if ( state.backtracking==0 ) {  helper.setHasOperator( true );
  					       if( input.LA( 1 ) != DRL6Lexer.EOF ) helper.emit( Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT ); }
  					pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression1511);
  					right=instanceOfExpression();
  					state._fsp--;
  					if (state.failed) return result;
  					if ( state.backtracking==0 ) { if( buildDescr  ) {
  					               result = new RelationalExprDescr( (op!=null?op.getText():null), false, null, left, right );
  					           }
  					         }
  					}
  					break;
  
  				default :
  					break loop32;
  				}
  			}
  
  			}
  
  		}
  
  		catch (RecognitionException re) {
  		    throw re;
  		}
  
  		finally {
  			// do for sure before leaving
  		}
  		return result;
  	}