anchor.diff:  ----
   
   . *Patterns*:
  +.. Leave nodes and relationships anonymous 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), (vehicle)-->(manufacturer)
  +MATCH (:Person)-->(vehicle:Car), (vehicle:Car)-->(:Company)
   RETURN count(vehicle)
   ----
   +
   .Good
   [source, cypher]
   ----
  -MATCH (person)-->(vehicle)-->(manufacturer)
  +MATCH (:Person)-->(vehicle:Car)-->(:Company)
   RETURN count(vehicle)
   ----
   
  
positive.code: .Bad
  [source, cypher]
  ----
  MATCH (person)-->(vehicle)-->(manufacturer)
        <--(country)
  RETURN count(vehicle)
  ----
  +
  .Good
  [source, cypher]
  ----
  MATCH (person)-->(vehicle)-->(manufacturer)<--
        (country)
  RETURN count(vehicle)
  ----
  
  
negative.code: [source, cypher]
  ----
  MATCH (member:Member {name: 'Mark Needham'})
        -[:HAS_MEMBERSHIP]->()-[:OF_GROUP]->(:Group)-[:HAS_TOPIC]->(topic)
  WITH member, topic, count(*) AS score
  MATCH (topic)<-[:HAS_TOPIC]-(otherGroup:Group)
  WHERE NOT (member)-[:HAS_MEMBERSHIP]->(:Membership)-[:OF_GROUP]->(otherGroup)
  RETURN otherGroup.name, collect(topic.name), sum(score) AS score
  ORDER BY score DESC
  ----
  