anchor.diff:  === Syntax
   
   ----
  -expression = …
  +expression = <current definition of expression>
              | property exists
              | subquery exists
              | simple subquery exists
  
positive.code: ==== Property exists
  
  In the property checking form, any expression is accepted as the input.
  If the input expression returns a +null+ value, +EXISTS(...)+ returns false, and for all other values, it will return +true+.
  This form of +EXISTS(...)+ is equivalent to checking for +null+ using +IS NOT NULL+; i.e. +EXISTS(expr)+ is equivalent to +expr IS NOT NULL+.
  
  This form is there to make property existence checking idiomatic in Cypher - we do not want the user thinking of missing properties as checking for +null+ values.
  
negative.code: 
   * It has to be a read-only query. Updating the graph as part of a predicate is not allowed.
   * It cannot end in a +RETURN+ clause, nor may it contain +UNION+
   * If +WITH+ ends the subquery, it should be able to change the cardinality of the subquery.
   In other words, the +WITH+ clause should include +WHERE+ or +SKIP+, since these sub-clauses can turn a query that returns rows into one that does not.
  
  ==== Simple subquery exists
  When the subquery can be described with a single +MATCH-WHERE+ clause, the +MATCH+ keyword can be omitted, as in example 2A and B.
  The difference between this form and a simple pattern predicate, which is already available, is that this form allows for introducing new variables inside the +EXISTS(...)+ scope.
  
  === Examples
  _Example 1A:_
  
  Return all nodes that have a property named `slogan`.
  [source, cypher]
  ----
  MATCH (actor)
  WHERE EXISTS(actor.slogan)
  RETURN actor
  ----
  
  