Subst.Lazytype module_decl = {mdl_type: modtype,mdl_attributes: Parsetree.attributes,mdl_loc: Location.t,mdl_uid: Shape.Uid.t,};and modtype = | MtyL_ident(Path.t)| MtyL_signature(signature)| MtyL_functor(functor_parameter, modtype)| MtyL_alias(Path.t);and modtype_declaration = {mtdl_type: option(modtype),mtdl_attributes: Parsetree.attributes,mtdl_loc: Location.t,mtdl_uid: Shape.Uid.t,};and signature_item = | SigL_value(Ident.t, Types.value_description, Types.visibility)| SigL_type(Ident.t, Types.type_declaration, Types.rec_status, Types.visibility)| SigL_typext(Ident.t, Types.extension_constructor, Types.ext_status, Types.visibility)| SigL_module(Ident.t, Types.module_presence, module_decl, Types.rec_status,
Types.visibility)| SigL_modtype(Ident.t, modtype_declaration, Types.visibility)| SigL_class(Ident.t, Types.class_declaration, Types.rec_status, Types.visibility)| SigL_class_type(Ident.t, Types.class_type_declaration, Types.rec_status,
Types.visibility);let of_module_decl: Types.module_declaration => module_decl;let of_modtype: Types.module_type => modtype;let of_modtype_decl: Types.modtype_declaration => modtype_declaration;let of_signature: Types.signature => signature;let of_signature_items: list(signature_item) => signature;let of_signature_item: Types.signature_item => signature_item;let module_decl: scoping => t => module_decl => module_decl;let modtype_decl: scoping => t => modtype_declaration => modtype_declaration;let signature_item: scoping => t => signature_item => signature_item;let force_module_decl: module_decl => Types.module_declaration;let force_modtype: modtype => Types.module_type;let force_modtype_decl: modtype_declaration => Types.modtype_declaration;let force_signature: signature => Types.signature;let force_signature_once: signature => list(signature_item);let force_signature_item: signature_item => Types.signature_item;