def initialize_copy(other_ary)
      if other_ary.kind_of? List
        @_list = other_ary._list.dup
      elsif other_ary.respond_to? :to_a
        @_list = other_ary.to_a
      else
        raise ArgumentError, 'must be either a List or respond to `to_a`'
      end
    end
def initialize_copy(other_ary)
      if other_ary.kind_of? List
        @_list = other_ary._list.dup
      elsif other_ary.respond_to? :to_a
        @_list = other_ary.to_a
      else
        raise ArgumentError, 'must be either a List or respond to `to_a`'
      end
    end
From Array
 ary.replace(other_ary)  -> ary
 ary.initialize_copy(other_ary)   -> ary

 Replaces the contents of +self+ with the contents of +other_ary+,
 truncating or expanding if necessary.

    a = [ "a", "b", "c", "d", "e" ]
    a.replace([ "x", "y", "z" ])   #=> ["x", "y", "z"]
    a                              #=> ["x", "y", "z"]