+structure Attrs : sig
+ type t
+ datatype node
+ = Attributes of string list
+ include WRAPPED
+ sharing type node' = node
+ sharing type obj = t
+ end
+
+functor DoWrap1(type node) : S = struct
+type t = node Wrap.t
+open Wrap
+type node' = node
+type obj = t
+end
+
+datatype exp_node
+ = Let of varpat_t list * rhs_t * exp_t
+ | Do of simpleexp_t * exp_t
+ | FunExp of fundef_t list * exp_t
+ | ContExp of BomId.t * varpat_t list option * exp_t * exp_t
+ | If of simpleexp_t * exp_t * exp_t
+ | Case of simpleexp_t * caserule_t list
+ | Typecase of TyParam.t * tycaserule_t list
+ | Apply of LongValueId.t * simpleexp_t list option * simpleexp_t list option
+ | Throw of BomId.t * tyargs_t option * simpleexp_t list option
+ | Return of simpleexp_t list option
+and rhs_node
+ = Composite of exp_t
+ | Simple of simpleexp_t
+
+withtype type_t = type_node Wrap.t
+ and tyargs_t = tyargs_node Wrap.t
+
+functor DoWrap(type node) : sig
+ type t = node Wrap.t
+ include WRAPPED
+ sharing type node' = node
+ sharing type obj = t
+ end =
+struct
+type t = node Wrap.t
+open Wrap
+type node' = node
+type obj = t
+end
+