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