anchor.diff:                      ])
           | None -> raiseNeo4jNodeTypeException<'TTargetNode>()
   
  -    let deleteRelationship (sourceNode: NodeMatch<'TSourceKey>) (relationshipType: Type) (targetNode: NodeMatch<'TTargetKey>) (query: ICypherFluentQuery) =
  +    let internal 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
  
positive.code:             )
          )
  
      let inline private tryGenerateMatchNode (node: 'T) nodeName =
          tryFindNeo4jKey node
          |> Option.map (fun (keyName, keyValue) ->
              sprintf "(%s:%s {%s:'%O'})" nodeName typeof<'T>.Name keyName keyValue
          )
  
      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
          )
  
      let createNode (node: 'T) (query: ICypherFluentQuery) =
          let argName = "arg"
          let createText = sprintf "(node:%s {%s})" typeof<'T>.Name argName
          query.Create(createText)
               .WithParam(argName, node)
  
      // TODO denisok: enforce INeo4jRelationship
      let createNodeAndUniquelyRelateTo (sourceNode: NodeMatch<'TSourceKey>) (relationship: 'TRelationship) (targetNodeToCreate: 'TTargetNode) (query: ICypherFluentQuery) =
          let sourceNodeMatchExpr' = tryGenerateMatchExpr sourceNode "sourceNode"
          match sourceNodeMatchExpr' with
          | Some sourceNodeMatchExpr ->
  
negative.code:                  .Set(setText)
                   .WithParam(argName, node)
          | None -> raiseNeo4jNodeTypeException<'T>()
  