class Gem::List

def self.prepend(list, value)

def self.prepend(list, value)
  return List.new(value) unless list
  List.new value, list
end

def each

def each
  n = self
  while n
    yield n.value
    n = n.tail
  end
end

def initialize(value = nil, tail = nil)

def initialize(value = nil, tail = nil)
  @value = value
  @tail = tail
end

def prepend(value)

def prepend(value)
  List.new value, self
end

def pretty_print(q) # :nodoc:

:nodoc:
def pretty_print(q) # :nodoc:
  q.pp to_a
end

def to_a

def to_a
  super.reverse
end