anchor.diff:     | _ -> None
   let inline setThe (x: 'x) (xZ: Zipper<'x, 'x>) = xZ.Set x
   
  -let inline upAny (xZ: Zipper<'x>) = xZ.Up ()
  +let mapAny (y2y: 'y -> 'y) (xZ: Zipper<'x>) =
  +  match xZ with
  +   | :? Zipper<'x, 'y> as xyZ -> xyZ.Get () |> y2y |> xyZ.Set :> Zipper<_>
  +   | _ -> xZ
  +
  +let mapThe (x2x: 'x -> 'x) (xxZ: Zipper<'x, 'x>) =
  +  xxZ.Get () |> x2x |> xxZ.Set
  +
   let inline downHeadAny (xZ: Zipper<'x>) = xZ.DownHeadAny ()
   let inline downHeadThe (xZ: Zipper<'x>) = xZ.DownHeadThe ()
   let inline downLastAny (xZ: Zipper<'x>) = xZ.DownLastAny ()
  
positive.code:       | :? Zipper<'x, 'x> as xZ -> Some xZ
        | _ -> upThe xZ
  
  let rec fromZipper (xZ: Zipper<'x>) : 'x =
    match upAny xZ with
     | None ->
       match xZ with
        | :? Zipper<'x, 'x> as xxZ -> xxZ.Get ()
        | _ -> failwith "Bug"
     | Some xZ ->
       fromZipper xZ
  
negative.code: let inline nextThe (xZ: Zipper<'x>) = xZ.NextThe ()
  let inline prevAny (xZ: Zipper<'x>) = xZ.PrevAny ()
  let inline prevThe (xZ: Zipper<'x>) = xZ.PrevThe ()
  let inline upAny (xZ: Zipper<'x>) = xZ.Up ()
  let rec upThe (xZ: Zipper<'x>) : option<Zipper<'x, 'x>> =
    match upAny xZ with
     | None -> None
  