sig
  class virtual galaxNode :
    Galax_nodeid.galax_nodeid ->
    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 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 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 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 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 virtual rename : Datatypes.xs_QName -> unit
      method virtual replace : Dm.node Cursor.cursor -> Dm.node -> unit
      method virtual replace_value : Dm.text -> unit
      method 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 update_parent : Dm.node -> unit
    end
  class galaxDocumentNode :
    Galax_nodeid.galax_nodeid ->
    Dm_atomic.atomicAnyURI option Pervasives.ref ->
    Dm.node list ->
    Encoding.encoding option ->
    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 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 docorder : unit -> Nodeid.docorder
      method 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 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 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 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 update_parent : Dm.node -> unit
    end
  class galaxElementNode :
    Galax_nodeid.galax_nodeid ->
    Dm_atomic.atomicAnyURI option Pervasives.ref ->
    Namespace_symbols.relem_symbol ->
    Namespace_context.nsenv ->
    Dm.attribute list ->
    Dm.node list ->
    Dm_types.nilled ->
    Namespace_symbols.rtype_symbol ->
    Dm_atomic.atomicValue list ->
    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 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 docorder : unit -> Nodeid.docorder
      method elemName : unit -> Namespace_symbols.relem_symbol
      method 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 implementation : unit -> string
      method insert : Dm.node Cursor.cursor -> Dm.node -> unit
      method insert_first : Dm.node Cursor.cursor -> unit
      method namespace_environment : unit -> Namespace_context.nsenv
      method nilled : unit -> Dm_types.nilled
      method node_kind : unit -> Dm_types._NodeKind
      method node_lang : unit -> Datatypes.xs_string option
      method node_name : unit -> Dm_atomic.atomicQName option
      method node_type : unit -> Namespace_symbols.rtype_symbol
      method 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 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 update_parent : Dm.node -> unit
    end
  class galaxAttributeNode :
    Galax_nodeid.galax_nodeid ->
    Namespace_symbols.rattr_symbol ->
    Dm_atomic.atomicString ->
    Namespace_symbols.rtype_symbol ->
    Dm_atomic.atomicValue list ->
    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 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 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 docorder : unit -> Nodeid.docorder
      method 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 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 node_type : unit -> Namespace_symbols.rtype_symbol
      method 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 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 update_parent : Dm.node -> unit
    end
  class galaxTextNode :
    Galax_nodeid.galax_nodeid ->
    Dm_atomic.atomicString ->
    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 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 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 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 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 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 update_parent : Dm.node -> unit
    end
  class galaxCommentNode :
    Galax_nodeid.galax_nodeid ->
    Dm_atomic.atomicString ->
    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 ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method 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 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 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 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 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 update_parent : Dm.node -> unit
    end
  class galaxProcessingInstructionNode :
    Galax_nodeid.galax_nodeid ->
    Dm_atomic.atomicString ->
    Dm_atomic.atomicString ->
    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 ref
      method children :
        (Xquery_type_core_ast.cxschema option * Xquery_algebra_ast.anode_test)
        option -> Dm.node Cursor.cursor
      method 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 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 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 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 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 target : unit -> Dm_atomic.atomicString
      method typed_value : unit -> Dm_atomic.atomicValue Cursor.cursor
      method update_parent : Dm.node -> unit
    end
  val register_deep_copy_fun :
    (Nodeid_context.nodeid_context ->
     Nodeid.docid -> Dm.node Cursor.cursor -> Dm.node list) ->
    unit
end