def <<(item)
    if item.kind_of? Zyps::Location
      self.location = item
    elsif item.kind_of? Zyps::Color
      self.color = item
    elsif item.kind_of? Zyps::Vector
      self.vector = item
    else
      raise "Invalid item: #{item.class}"
    end
    self
  end
def <<(item)
    if item.kind_of? Zyps::Location
      self.location = item
    elsif item.kind_of? Zyps::Color
      self.color = item
    elsif item.kind_of? Zyps::Vector
      self.vector = item
    else
      raise "Invalid item: #{item.class}"
    end
    self
  end
Overloads the << operator to put the new item into the correct
list or assign it to the correct attribute.
Assignment is done based on item's class or a parent class of item.