Hm. The contract of such an object would be to respond to methods as if it we're a node set.

I don't see a way around a type check somewhere though, but if you like that more than the monkey-patching.

Rouch cut:
```ruby
class NodeSetWrapper
  attr_reader :nodeset

  def initialize(node_or_nodeset)
    if node_or_nodeset.is_a?(Nokogiri::XML::NodeSet)
      @nodeset = node_or_nodeset
    else
      @nodeset = Nokogiri::XML::NodeSet.new(node_or_nodeset.document, [node_or_nodeset])
    end
end
```

This means you'd have to remember to always wrap an element with that object before using it... Hm...