anchor.diff:  type Neo4jKeyAttribute() =
       inherit Attribute()
   
  -type NodeMatch<'TKey> = 
  +[<NoComparison>]
  +type internal NodeMatch<'TKey> = 
       { Key : 'TKey
         TypeInfo : Type }
       static member Create<'T>(key: 'TKey) =
  
positive.code:                     ])
          | None -> raiseNeo4jNodeTypeException<'TTargetNode>()
  
      let deleteRelationship (sourceNode: NodeMatch<'TSourceKey>) (relationshipType: Type) (targetNode: NodeMatch<'TTargetKey>) (query: ICypherFluentQuery) =
          let sourceMatchExpr' = tryGenerateMatchExpr sourceNode "sourceNode"
          let targetMatchExpr' = tryGenerateMatchExpr targetNode "targetNode"
          match sourceMatchExpr', targetMatchExpr' with
  
negative.code:             )
          )
  
      let inline private tryGenerateMatchExpr (data: NodeMatch<'TKey>) nodeName =
          tryGetNeo4jKeyName data.TypeInfo
          |> Option.map (fun keyName ->
              sprintf "%s:%s {%s:'%O'}" nodeName data.TypeInfo.Name keyName data.Key
          )
  
      // TODO denisok: enforce INeo4jRelationship
      let internal createNodeAndUniquelyRelateTo (sourceNode: NodeMatch<'TSourceKey>) (relationship: 'TRelationship) (targetNodeToCreate: 'TTargetNode) (query: ICypherFluentQuery) =
          let sourceNodeMatchExpr' = tryGenerateMatchExpr sourceNode "sourceNode"
          match sourceNodeMatchExpr' with
          | Some sourceNodeMatchExpr ->
  