anchor.diff:              | LeftOrRightRel(lnode,rel,rnode) ->
                   sprintf "%s-%s-%s" lnode.CypherExpr rel.CypherExpr rnode.CypherExpr
   
  +        member x.CypherExprForMerge =
  +            match x with
  +            | LeftRel((NodeExpr.Var(_) as lnode), RelExpr.NamedValue(relName, relType, _), (NodeExpr.Var(_) as rnode),_) ->
  +                sprintf "%s<-[%s:%s]-%s" lnode.CypherExpr relName relType.Name rnode.CypherExpr
  +            | RightRel((NodeExpr.Var(_) as lnode), RelExpr.NamedValue(relName, relType, _), (NodeExpr.Var(_) as rnode),_) ->
  +                sprintf "%s-[%s:%s]->%s" lnode.CypherExpr relName relType.Name rnode.CypherExpr
  +            | _ -> failwith (sprintf "Invalid MERGE expression: %A" x)
  +
           member x.Create(cypher: ICypherFluentQuery) =
               match x with
               | LeftRel(lnode,rel,rnode,isUnique)
  
positive.code:             | CreateRelationCall _ -> Choice1Of2 (executeCreate cypher next)
              | DeleteNodeCall _
              | DeleteRelationshipCall _ -> Choice1Of2 (executeDelete cypher next)
              | _ -> unexpectedExpr context next
          let context = "After WHERE expression"
              
  
negative.code:         | DeleteRelationshipCall(Var(rel)) ->
              printfn "Delete relationship: %s (type: %s)" rel.Name rel.Type.Name
              cypher.Delete(rel.Name)
          | _ -> unexpectedExpr "DELETE expression" deleteExpr
  
      let private executeMerge (cypher: ICypherFluentQuery) mergeExpr =
          match mergeExpr with
          | MergeRelationCall patternExpr -> patternExpr.Merge(cypher)
          | _ -> unsupportedScenario "MERGE expression" mergeExpr
  
      let private executeWhere<'T> (cypher: ICypherFluentQuery) (whereExpr: Expr): InterpreterResult<'T> =
          let executeNextExpr context cypher next =
  