(* note that second argument is an 'a tree?, not the more abstract 'a m *)
(* type is ('a -> 'b W) -> 'a tree? -> 'b tree? W == 'b treeT(W) *)
val distribute : ('a -> ('x,'b) Wrapped.m) -> 'a tree option -> ('x,'b) m
(* note that second argument is an 'a tree?, not the more abstract 'a m *)
(* type is ('a -> 'b W) -> 'a tree? -> 'b tree? W == 'b treeT(W) *)
val distribute : ('a -> ('x,'b) Wrapped.m) -> 'a tree option -> ('x,'b) m