/// <summary>Remove the value at the specified location</summary>
        /// <param name="arrayIndex">Absolute index in the vector-array</param>
        /// <returns>Value that was removed</returns>
        public T RemoveAt(int arrayIndex)
        {
            Contract.Requires(arrayIndex >= 0 && arrayIndex <= this.Capacity);
            int offset, level = ColaStore.FromIndex(arrayIndex, out offset);

            return(RemoveAt(level, offset));
        }
        /// <summary>Store a value at a specific location in the arrayh</summary>
        /// <param name="arrayIndex">Absolute index in the vector-array</param>
        /// <param name="value">Value to store</param>
        /// <returns>Previous value at that location</returns>
        public T SetAt(int arrayIndex, T value)
        {
            Contract.Assert(arrayIndex >= 0 && arrayIndex <= this.Capacity);

            int offset;
            int level = ColaStore.FromIndex(arrayIndex, out offset);

            return(SetAt(level, offset, value));
        }