anchor.diff:  	| 'UPPER' LPAREN string_primary RPAREN;
   
   single_valued_path_expression
  -	: state_field_path_expression 
  +	: state_field_path_expr 
   	| single_valued_association_path_expression
   	;
   
  -state_field_path_expression
  +state_field_path_expr
   	: (identification_variable | single_valued_association_path_expression) DOT state_field
   	;
   
  
positive.code: 	;
  
  string_primary
  	: state_field_path_expression
  	| string_literal
  	| functions_returning_strings
  	;
  
  datetime_expression
  	: datetime_primary
  	;
  
  datetime_primary
  	: state_field_path_expression
  	| functions_returning_datetime
  	;
  
  boolean_expression
  	: boolean_primary
  	;
  
  boolean_primary
  	: state_field_path_expression
  	| boolean_literal
  	;
  
  
negative.code: 	: (keyNOT)? conditional_primary;
  
  conditional_primary
  	: simple_cond_expr | LPAREN cond_expr RPAREN;
  
  simple_cond_expr
  	: comparison_expr
  	| between_expr
  	| like_expr
  	| in_expression
  	| null_comparison_expr
  	| empty_collection_comparison_expr
  	| collection_member_expr
  	;
  
  between_expr
  	: arithmetic_expr (keyNOT)? 'BETWEEN' arithmetic_expr keyAND arithmetic_expr
  	| string_expr (keyNOT)? 'BETWEEN' string_expr keyAND string_expr
  	| datetime_expr (keyNOT)? 'BETWEEN' datetime_expr keyAND datetime_expr;
  
  in_expression
  	: state_field_path_expr (keyNOT)? 'IN' LPAREN  (in_item (COMMA in_item)*) RPAREN;
  
  in_item
  	: string_literal
  