def append(item)
      return initialize(item) if empty?
      Node.new(item, left: tail).tap { |new_tail|
        tail.right = new_tail
        self.tail  = new_tail