def delete_at(index)
      return self if index >= @size || index < -@size
      index += @size if index < 0

      suffix = flatten_suffix(@root, @levels * BITS_PER_LEVEL, index, [])
      return replace_suffix(index, suffix.tap { |a| a.shift })
    end
def delete_at(index)
      return self if index >= @size || index < -@size
      index += @size if index < 0

      suffix = flatten_suffix(@root, @levels * BITS_PER_LEVEL, index, [])
      return replace_suffix(index, suffix.tap { |a| a.shift })
    end
Return a new `Tuple` with the element at `index` removed. If the given `index`
 does not exist, return `self`.

 @example
   Erlang::Tuple["A", "B", "C", "D"].delete_at(2)
   # => Erlang::Tuple["A", "B", "D"]

 @param index [Integer] The index to remove
 @return [Tuple]