anchor.diff:  ;
   
   protected
  +safe_atom returns [Expression e]
  +	{
  +		e = null;
  +		UnaryExpression ue = null;
  +	}:
  +	e = atom
  +	(NULLABLE_SUFFIX {
  +			ue = new UnaryExpression(e.LexicalInfo);
  +			ue.Operator = UnaryOperatorType.SafeAccess;
  +			ue.Operand = e;
  +			e = ue;
  +		}
  +	)?
  +;
  +
  +protected
   slicing_expression returns [Expression e]
   	{
   		e = null;
  
positive.code: 		TypeReferenceCollection genericArguments = null;
  		Expression initializer = null;
  	} :
  	e=atom
  	( options { greedy=true; }:
  		(
  			lbrack:LBRACK
  
negative.code: 					)*
  				)?
  			RPAREN
  			(NULLABLE_SUFFIX {
  					ue = new UnaryExpression(e.LexicalInfo);
  					ue.Operator = UnaryOperatorType.SafeAccess;
  					ue.Operand = e;
  					e = ue;
  				}
  			)?
  			(
  				(
  					(hash_literal_test)=>initializer=hash_literal
  