/// <summary>
        /// Gets the lower and upper bounds of this tree.
        /// </summary>
        /// <param name="lowerBounds">The first key in the tree</param>
        /// <param name="upperBounds">The final key in the tree</param>
        /// <remarks>
        /// If the tree contains no data. <see cref="lowerBounds"/> is set to it's maximum value
        /// and <see cref="upperBounds"/> is set to it's minimum value.
        /// </remarks>
        public void GetKeyRange(TKey lowerBounds, TKey upperBounds)
        {
            LeafStorage.SeekToFirstNode();
            bool firstFound = LeafStorage.TryGetFirstRecord(lowerBounds, m_tempValue);

            LeafStorage.SeekToLastNode();
            bool lastFound = LeafStorage.TryGetLastRecord(upperBounds, m_tempValue);

            if (firstFound && lastFound)
            {
                return;
            }
            lowerBounds.SetMax();
            upperBounds.SetMin();
        }