sig
  class virtual node :
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method virtual base_uri :
        unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method virtual children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual getAttributeNode : unit -> Dm.attribute
      method virtual getCommentNode : unit -> Dm.comment
      method virtual getDocumentNode : unit -> Dm.document
      method virtual getElementNode : unit -> Dm.element
      method virtual getProcessingInstructionNode :
        unit -> Dm.processingInstruction
      method virtual getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method virtual insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual insert_first : Dm.node Cursor.cursor -> unit
      method virtual node_kind : unit -> Dm_types._NodeKind
      method virtual node_lang : unit -> Datatypes.xs_string option
      method virtual node_name : unit -> Dm_atomic.atomicQName option
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual rename : Datatypes.xs_QName -> unit
      method virtual replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual string_value : unit -> Datatypes.xs_string
      method virtual typed_value :
        unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual document :
    Dm_atomic.atomicAnyURI option Pervasives.ref ->
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method virtual children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method virtual document_uri : unit -> Dm_atomic.atomicAnyURI option
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method virtual insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual insert_first : Dm.node Cursor.cursor -> unit
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method node_name : unit -> Dm_atomic.atomicQName option
      method virtual nodeid : unit -> Nodeid.nodeid
      method parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method rename : Datatypes.xs_QName -> unit
      method replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method string_value : unit -> Datatypes.xs_string
      method typed_value : unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual element :
    Dm_atomic.atomicAnyURI option Pervasives.ref ->
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method virtual children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method virtual elemName : unit -> Namespace_symbols.relem_symbol
      method virtual export_typed_value : unit -> Dm_atomic.atomicValue list
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method has_element_content : unit -> bool
      method virtual implementation : unit -> string
      method virtual insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual insert_first : Dm.node Cursor.cursor -> unit
      method virtual namespace_environment : unit -> Namespace_context.nsenv
      method virtual nilled : unit -> Dm_types.nilled
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method virtual node_name : unit -> Dm_atomic.atomicQName option
      method virtual node_type : unit -> Namespace_symbols.rtype_symbol
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual rename : Datatypes.xs_QName -> unit
      method virtual replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method string_value : unit -> Datatypes.xs_string
      method virtual typed_value :
        unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual attribute :
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual attrName : unit -> Namespace_symbols.rattr_symbol
      method attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method virtual export_typed_value : unit -> Dm_atomic.atomicValue list
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method insert_first : Dm.node Cursor.cursor -> unit
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method virtual node_name : unit -> Dm_atomic.atomicQName option
      method virtual node_type : unit -> Namespace_symbols.rtype_symbol
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual rename : Datatypes.xs_QName -> unit
      method replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual string_value : unit -> Datatypes.xs_string
      method virtual typed_value :
        unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual text :
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method insert_first : Dm.node Cursor.cursor -> unit
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method node_name : unit -> Dm_atomic.atomicQName option
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method rename : Datatypes.xs_QName -> unit
      method replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual string_value : unit -> Datatypes.xs_string
      method typed_value : unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual comment :
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method insert_first : Dm.node Cursor.cursor -> unit
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method node_name : unit -> Dm_atomic.atomicQName option
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method rename : Datatypes.xs_QName -> unit
      method replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual string_value : unit -> Datatypes.xs_string
      method typed_value : unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
  and virtual processingInstruction :
    object
      method ancestor :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method ancestor_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method attributes :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.attribute Cursor.cursor
      method base_uri : unit -> Dm_atomic.atomicAnyURI option Pervasives.ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual content : unit -> Dm_atomic.atomicString
      method delete : Dm.node -> unit
      method descendant :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method descendant_or_self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method detach : Dm.node -> unit
      method virtual docorder : unit -> Nodeid.docorder
      method following :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method getAttributeNode : unit -> Dm.attribute
      method getCommentNode : unit -> Dm.comment
      method getDocumentNode : unit -> Dm.document
      method getElementNode : unit -> Dm.element
      method getProcessingInstructionNode : unit -> Dm.processingInstruction
      method getTextNode : unit -> Dm.text
      method get_access_ops_dm : Dm.node Dm_types.access_ops
      method virtual implementation : unit -> string
      method insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method insert_first : Dm.node Cursor.cursor -> unit
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method virtual node_name : unit -> Dm_atomic.atomicQName option
      method virtual nodeid : unit -> Nodeid.nodeid
      method virtual parent :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node option
      method preceding :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual rename : Datatypes.xs_QName -> unit
      method replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method virtual reset_parent : unit -> unit
      method self :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method virtual string_value : unit -> Datatypes.xs_string
      method virtual target : unit -> Dm_atomic.atomicString
      method typed_value : unit -> Dm_atomic.atomicValue Cursor.cursor
      method virtual update_parent : Dm.node -> unit
    end
end