def before
      return to_enum(__callee__) unless block_given?
      return if chain_head?

      item = prev

      loop do
        yield item
        item = item.prev
      end
    end
def before
      return to_enum(__callee__) unless block_given?
      return if chain_head?

      item = prev

      loop do
        yield item
        item = item.prev
      end
    end
Iterates over each item before this, in reverse order. If a block is not
 given an enumerator is returned.

 Note that raising a StopIteraion inside the block will cause the loop to
 silently stop the iteration early.