def <<(stuff)
      case stuff
        when Array  # call this method recursively
          stuff.each do |item|
            self << item
          end
        when Rosemary::Node
          nodes << stuff.id
        when String
          nodes << stuff.to_i
        when Integer
          nodes << stuff
        else
          tags.merge!(stuff)
       end
       self    # return self to allow chaining
    end
def <<(stuff)
      case stuff
        when Array  # call this method recursively
          stuff.each do |item|
            self << item
          end
        when Rosemary::Node
          nodes << stuff.id
        when String
          nodes << stuff.to_i
        when Integer
          nodes << stuff
        else
          tags.merge!(stuff)
       end
       self    # return self to allow chaining
    end
Add one or more tags or nodes to this way.

 The argument can be one of the following:

 * If the argument is a Hash or an OSM::Tags object, those tags are added.
 * If the argument is an OSM::Node object, its ID is added to the list of node IDs.
 * If the argument is an Integer or String containing an Integer, this ID is added to the list of node IDs.
 * If the argument is an Array the function is called recursively, i.e. all items in the Array are added.

 Returns the way to allow chaining.

 @return [Rosemary::Way] the way itself