anchor.diff:  let rec move directions (z:'a TreeZipper) =
       directions
         |> Seq.map getMove
  -      |> Seq.fold (|>) z
  -        
  -/// Creates a zipper from a tree
  -let zipper t = { Focus = t; Path = [] } +      |> Seq.fold (|>) z       
positive.code: [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module FSharpx.DataStructures.TreeZipper
  
  /// A simple binarys tree
  type 'a Tree=
     | Leaf
     | Branch of 'a * 'a Tree * 'a Tree
  
  type TreeDirection =  Left | Right
  type ZipperDirection = Up | Left | Right 
  
  /// The tree zipper datastructure
  type 'a TreeZipper  = { 
  
negative.code: /// Moves the zipper one level up
  let up z =
      match z.Path with
      | (Left,v,other)::ep ->  { Focus = Branch(v,z.Focus,other); Path = ep }
      | (Right,v,other)::ep -> { Focus = Branch(v,other,z.Focus); Path = ep }
      | [] -> failwith "can't go up" // because ep only goes down and is empty 
  
  /// Moves the zipper to the top
  