Webidl.DataSourcetype attribute = {is_static : bool;is_readonly : bool;is_inherit : bool;type_with_ext : Syntax.Ast.type_with_ext;name : string;}type operation = {specials : special list;is_static : bool;return_type : Syntax.Ast.return_type;ident : string option;arguments : (Syntax.Ast.extends * Syntax.Ast.argument) list;}type dictionary_member = {is_required : bool;type_with_ext : Syntax.Ast.type_with_ext;ident : string;default : Syntax.Ast.default_value option;}type dictionary = {ident : string;inheritance : string option;dictionary_members : (Syntax.Ast.extends * dictionary_member) list;}type namespace = {ident : string;namespace_members : (Syntax.Ast.extends * namespace_member) list;}type maplike = {is_readonly : bool;key_type : Syntax.Ast.type_with_ext;value_type : Syntax.Ast.type_with_ext;}type interface_member = [ | `Const of Syntax.Ast.const_type * string * Syntax.Ast.const_value| `Operation of operation| `Stringifier of [ operation_or_attribute | `None ]| `Iterable of Syntax.Ast.type_with_ext * Syntax.Ast.type_with_ext option| `Attribute of attribute| `Maplike of maplike| `Setlike of setlike ]type interface = {ident : string;inheritance : string option;interface_members : (Syntax.Ast.extends * interface_member) list;}type mixin_member = [ | `Const of Syntax.Ast.const_type * string * Syntax.Ast.const_value| `Operation of operation| `Stringifier of [ operation_or_attribute | `None ]| `Attribute of attribute| `Maplike of maplike| `Setlike of setlike ]type partial = [ | `Interface of interface| `Mixin of mixin| `Dictionary of dictionary| `Namespace of namespace ]type definition = [ | `Callback of callback| `Interface of interface| `Mixin of mixin| `Namespace of namespace| `Partial of partial| `Dictionary of dictionary| `Enum of string * string list| `Typedef of Syntax.Ast.type_with_ext * string| `Implements of string * string| `Includes of string * string ]