/*
 * call-seq:
 *  +(node_set)
 *
 *  Concatenation - returns a new NodeSet built by concatenating the node set
 *  with +node_set+ to produce a third NodeSet
 */
static VALUE plus(VALUE self, VALUE rb_other)
{
  xmlNodeSetPtr node_set;
  xmlNodeSetPtr other;
  xmlNodeSetPtr new;

  if(! rb_funcall(rb_other, rb_intern("is_a?"), 1, cNokogiriXmlNodeSet))
    rb_raise(rb_eArgError, "node_set must be a Nokogiri::XML::NodeSet");

  Data_Get_Struct(self, xmlNodeSet, node_set);
  Data_Get_Struct(rb_other, xmlNodeSet, other);

  new = xmlXPathNodeSetMerge(NULL, node_set);
  new = xmlXPathNodeSetMerge(new, other);

  return Nokogiri_wrap_xml_node_set(new);
}