type Fix<'T> = delegate of 'T -> Fix<'T>
  
  let internal invoke (node : Node) (visitor:Fix<Node>)  =
    visitor.Invoke(node)

  let internal apply (visitors : seq<Fix<Node>>) (node : Node) =
    visitors |> 
    Seq.map (invoke node) 

  let internal Visit (visitors : seq<Fix<Node>>) =
    BuildNodeSequence
    |> Seq.fold apply visitors
    |> ignore

  ...
  Visit (ToSeq visitor)
  ...