def delete_at(index)
      if index < 0
        index = @entry_counter + index
      end

      return nil if index < 0 || index >= @entry_counter

      deleted_value = nil
      @store.transaction do
        deleted_value = @root.delete_at(index)
        self.entry_counter -= 1

        # Eliminate single entry nodes at the top.
        while !@root.is_leaf? && @root.size == 1
          @root = @root.children.first
          @root.parent = nil
        end
      end

      deleted_value
    end
def delete_at(index)
      if index < 0
        index = @entry_counter + index
      end

      return nil if index < 0 || index >= @entry_counter

      deleted_value = nil
      @store.transaction do
        deleted_value = @root.delete_at(index)
        self.entry_counter -= 1

        # Eliminate single entry nodes at the top.
        while !@root.is_leaf? && @root.size == 1
          @root = @root.children.first
          @root.parent = nil
        end
      end

      deleted_value
    end
Delete the element at the specified index, returning that element, or
 nil if the index is out of range.
 @param index [Integer] Index in the BigArray
 @return [Object] found value or nil