anchor.diff:  //    | _ -> instance      
         | _ -> failwithf "Unexpected type: %s" (mtype.ToString())
   
  -let makeSingleWalker (f: obj -> obj -> string list -> unit) (mtype: Type) (path: string list) : Expr =
  +let makeWalkerLambdaExpr (f: obj -> obj -> string list -> unit) (mtype: Type) (path: string list) : Expr =
       let arg1 = Var("x", mtype, false)
       let useArg1 = Expr.Var(arg1)
       let arg2 = Var("y", mtype, false)
  
positive.code:     let instance2Var = Var("instance2", t2, false)
      let instance2Arg = Expr.Var(instance2Var)
      Expr.Lambda(instance1Var, Expr.Lambda(instance2Var, sequenceExprs instance1Arg instance2Arg))
  
  //    /// Compare Application
  //    let returnNotUnitSecond (_: 'a) (v2: 'b) = v2
  //    let inline applyCompare (prmType: Type) (name: string list) prm1 prm2 compFunExpr = 
  //        let inputs = Expr.NewTuple [Expr.Value (List.rev name); prm1; prm2]
  //        let app = Expr.Application(compFunExpr, inputs)
  //        let meth = (getMethod <@ returnNotUnitSecond X X @>).MakeGenericMethod([|typeof<unit>; prmType|])
  //        Expr.Call(meth, [app; prm2])
  
  //let makeSingleArgWalkExpr (mtype: Type) (path: string list) dispatchOnType : Expr =
  //    let arg = Var("x", mtype, false)
  //    let useArg = Expr.Var(arg)
  //    let contents = dispatchOnType mtype path useArg
  //    Expr.Lambda(arg, contents)
  
  let genFieldWalker (instance1: Expr) (instance2: Expr) (field: PropertyInfo) (path: string list) dispatchOnType : Expr = 
      let p1val = Expr.PropertyGet(instance1, field) 
  
negative.code:     |> List.map (fun field -> field.Name :: path, field)
      |> List.map (fun (fpath, field) -> genFieldWalker instance1 instance2 field fpath dispatchOnType)
      |> List.reduce (fun e1 e2 ->  sequenceExprs e1 e2) 
  
  let makeFuncionCall (f: obj -> obj -> string list -> unit) (path: string list) (instance1: Expr) (instance2: Expr) =
      let objExpr1 = Expr.Coerce(instance1, typeof<obj>)
  