anchor.diff:  RETURN person.name
   ----
   
  -.. Use a space after each comma in lists and enumerations.
  +. Use a space after each comma in lists and enumerations.
   +
   .Bad
   [source, cypher]
  
positive.code: RETURN length(p)
  ----
  
  .. No space in label predicates.
  +
  .Bad
  [source, cypher]
  
negative.code: RETURN n1 IS NULL && n2 IS NOT NULL
  ----
  
  . When patterns wrap lines, break after arrows, not before.
  +
  .Bad
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car)-->(:Company)
        <--(:Country)
  RETURN count(vehicle)
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car)-->(:Company)<--
        (:Country)
  RETURN count(vehicle)
  ----
  
  . Surround node patterns with parentheses.
  .. This only concerns old Cypher code, as omitting parentheses is no longer legal in Cypher.
  +
  .Bad
  [source, cypher]
  ----
  MATCH person-->vehicle
  RETURN person, vehicle
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (person)-->(vehicle)
  RETURN person, vehicle
  ----
  
  . Avoid having to use back-ticks to escape characters and keywords.
  +
  .Bad
  [source, cypher]
  ----
  MATCH (`odd-ch@racter$`:`Spaced Label` {`&property`: 42})
  RETURN labels(`odd-ch@racter$`)
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (node:NonSpacedLabel {property: 42})
  RETURN labels(node)
  ----
  
  . Do not use a semicolon at the end of the statement.
  +
  .Bad
  [source, cypher]
  ----
  RETURN 1;
  ----
  +
  .Good
  [source, cypher]
  ----
  RETURN 1
  ----
  
  ==== Patterns
  
  . Use anonymous nodes and relationships when the variable would not be used.
  +
  .Bad
  [source, cypher]
  ----
  CREATE (a:End {prop: 42}),
         (b:End {prop: 3}),
         (c:Begin {prop: id(a)})
  ----
  +
  .Good
  [source, cypher]
  ----
  CREATE (a:End {prop: 42}),
         (:End {prop: 3}),
         (:Begin {prop: id(a)})
  ----
  
  . Chain patterns together to avoid repeating variables.
  +
  .Bad
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car), (vehicle:Car)-->(:Company)
  RETURN count(vehicle)
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car)-->(:Company)
  RETURN count(vehicle)
  ----
  
  . Put named nodes before anonymous nodes.
  +
  .Bad
  [source, cypher]
  ----
  MATCH ()-->(vehicle:Car)-->(manufacturer:Company)
  WHERE manufacturer.founded_year < 2000
  RETURN vehicle.mileage
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (manufacturer:Company)<--(vehicle:Car)<--()
  WHERE manufacturer.founded_year < 2000
  RETURN vehicle.mileage
  ----
  
  . Keep anchor nodes at the beginning of the `MATCH` clause.
  +
  .Bad
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car)-->(manufacturer:Company)
  WHERE manufacturer.founded_year < 2000
  RETURN vehicle.mileage
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (manufacturer:Company)<--(vehicle:Car)<--(:Person)
  WHERE manufacturer.founded_year < 2000
  RETURN vehicle.mileage
  ----
  
  . Prefer outgoing (left to right) pattern relationships to incoming pattern relationships.
  +
  .Bad
  [source, cypher]
  ----
  MATCH (:Country)-->(:Company)<--(vehicle:Car)<--(:Person)
  RETURN vehicle.mileage
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (:Person)-->(vehicle:Car)-->(:Company)<--(:Country)
  RETURN vehicle.mileage
  ----
  
  ==== Spacing
  
  . For literal maps:
  .. No space between the opening brace and the first key
  .. No space between key and colon
  .. One space between colon and value
  .. No space between value and comma
  .. One space between comma and next key
  .. No space between the last value and the closing brace
  +
  .Bad
  [source, cypher]
  