let fold f v t =
    let rec aux v = function
      | { content = c ; children = [] } -> f v c
      | { content = c ; children = l } ->
          let v = f v c in
          List.fold_left aux v l
    in
      aux v t