sig
  type stype_specifier = {
    pstype_specifier_desc : Xquery_type_ast.stype_specifier_desc;
    pstype_specifier_loc : Finfo.finfo;
  }
  and stype_specifier_desc =
      STypeRef of Xquery_common_ast.tname
    | SAnonymous of Xquery_type_ast.stype_derivation
  and stype_derivation =
      SRestriction of Xquery_type_ast.stype_specifier
    | SList of Xquery_type_ast.stype_specifier
    | SUnion of Xquery_type_ast.stype_specifier list
  type deriv =
      TRestriction of Xquery_common_ast.tname
    | TExtension of Xquery_common_ast.tname
  type xtype = {
    pxtype_desc : Xquery_type_ast.xtype_desc;
    pxtype_loc : Finfo.finfo;
  }
  and xtype_desc =
      TAtomicRef of Xquery_common_ast.tname
    | TAttributeRef of Xquery_common_ast.aname
    | TAttributeLocal of Xquery_common_ast.aname *
        Xquery_type_ast.stype_specifier
    | TElementRef of Xquery_common_ast.ename
    | TElementLocal of Xquery_common_ast.ename * Xquery_common_ast.nillable *
        Xquery_type_ast.xtype_specifier
    | TDocument of Xquery_type_ast.xtype
    | TText
    | TProcessingInstruction
    | TComment
    | TGroupRef of Xquery_common_ast.gname
    | TAttrGroupRef of Xquery_common_ast.gname
    | TBound of Xquery_type_ast.xtype * Occurrence.occurs * Occurrence.occurs
    | TSequence of Xquery_type_ast.xtype * Xquery_type_ast.xtype
    | TEmpty
    | TChoice of Xquery_type_ast.xtype * Xquery_type_ast.xtype
    | TNone
    | TInterleave of Xquery_type_ast.xtype * Xquery_type_ast.xtype
  and xtype_specifier =
      TSpecSimple of Xquery_type_ast.stype_specifier
    | TSpecComplex of Xquery_type_ast.ctype_specifier
  and ctype_specifier = {
    pctype_specifier_desc : Xquery_type_ast.ctype_specifier_desc;
    pctype_specifier_loc : Finfo.finfo;
  }
  and ctype_specifier_desc =
      TTypeRef of Xquery_common_ast.tname
    | TAnonymous of Xquery_type_ast.ctype_derivation
  and ctype_derivation =
      Xquery_type_ast.deriv option * Xquery_type_ast.xtype option *
      Xquery_common_ast.mixed * Xquery_type_ast.xtype
  type xtype_derivation =
      TComplexDerivation of Xquery_type_ast.ctype_derivation
    | TSimpleDerivation of Xquery_type_ast.stype_derivation
  type substitutes_for =
      TSubstitutesFor of Xquery_common_ast.ename
    | TNonSubstitutesFor
  type xelem_derivation =
      Xquery_type_ast.substitutes_for * Xquery_common_ast.nillable *
      Xquery_type_ast.xtype_specifier
  type xtype_declaration = {
    pxtype_declaration_desc : Xquery_type_ast.xtype_declaration_desc;
    pxtype_declaration_loc : Finfo.finfo;
  }
  and xtype_declaration_desc =
      TAttributeDecl of Xquery_common_ast.aname *
        Xquery_type_ast.stype_specifier
    | TElementDecl of Xquery_common_ast.ename *
        Xquery_type_ast.xelem_derivation
    | TTypeDecl of Xquery_common_ast.tname * Xquery_type_ast.xtype_derivation
    | TGroupDecl of Xquery_common_ast.gname * Xquery_type_ast.xtype
    | TAttrGroupDecl of Xquery_common_ast.gname * Xquery_type_ast.xtype
  type xschema = {
    xschema_imported_schemas : Xquery_type_ast.xschema list;
    xschema_namespace_declarations :
      Xquery_common_ast.namespace_declaration list;
    xschema_type_declarations : Xquery_type_ast.xtype_declaration list;
  }
end