    /*
     * call-seq:
     *  children
     *
     * Get the list of children for this node as a NodeSet
     */
    static VALUE children(VALUE self)
    {
      xmlNodePtr node;
      xmlNodePtr child;
      xmlNodeSetPtr set;
      VALUE document;
      VALUE node_set;

      Data_Get_Struct(self, xmlNode, node);

      child = node->children;
      set = xmlXPathNodeSetCreate(child);

      document = DOC_RUBY_OBJECT(node->doc);

      if(!child) return Nokogiri_wrap_xml_node_set(set, document);

      child = child->next;
      while(NULL != child) {
        xmlXPathNodeSetAddUnique(set, child);
        child = child->next;
      }

      node_set = Nokogiri_wrap_xml_node_set(set, document);

      return node_set;
    }