class Hamster::Vector
def update_root(index, item)
def update_root(index, item) root, levels = @root, @levels while index >= (1 << (BITS_PER_LEVEL * (levels + 1))) root = [root].freeze levels += 1 end new_root = update_leaf_node(root, levels * BITS_PER_LEVEL, index, item) if new_root.equal?(root) self else self.class.alloc(new_root, @size > index ? @size : index + 1, levels) end end