//------------------------------------------------------
        //
        //  Public Methods
        //
        //------------------------------------------------------

        #region Public Methods

        /// <summary>
        /// Get the parent of the specified element, in the current view
        /// </summary>
        /// <param name="element">element to get the parent of</param>
        /// <returns>The parent of the specified element; can be null if
        /// specified element was the root element</returns>
        /// <remarks>The view used is determined by the condition passed to
        /// the constructor - elements that do not satisfy that condition
        /// are skipped over</remarks>
        public AutomationElement GetParent(AutomationElement element)
        {
            Misc.ValidateArgumentNonNull(element, "element");
            return(element.Navigate(NavigateDirection.Parent, _condition, null));
        }
 /// <summary>
 /// Get the previous sibling of the specified element, in the current view,
 /// prefetching properties
 /// </summary>
 /// <param name="element">element to get the previous sibling of</param>
 /// <param name="request">CacheRequest specifying information to be prefetched</param>
 /// <returns>The previous sibling of the specified element - or null if the
 /// specified element has no previous sibling</returns>
 /// <remarks>The view used is determined by the condition passed to
 /// the constructor - elements that do not satisfy that condition
 /// are skipped over</remarks>
 public AutomationElement GetPreviousSibling(AutomationElement element, CacheRequest request)
 {
     Misc.ValidateArgumentNonNull(element, "element");
     Misc.ValidateArgumentNonNull(request, "request");
     return(element.Navigate(NavigateDirection.PreviousSibling, _condition, request));
 }
 /// <summary>
 /// Get the last child of the specified element, in the current view,
 /// prefetching properties
 /// </summary>
 /// <param name="element">element to get the last child of</param>
 /// <param name="request">CacheRequest specifying information to be prefetched</param>
 /// <returns>The last child of the specified element - or null if
 /// the specified element has no children</returns>
 /// <remarks>The view used is determined by the condition passed to
 /// the constructor - elements that do not satisfy that condition
 /// are skipped over</remarks>
 public AutomationElement GetLastChild(AutomationElement element, CacheRequest request)
 {
     Misc.ValidateArgumentNonNull(element, "element");
     Misc.ValidateArgumentNonNull(request, "request");
     return(element.Navigate(NavigateDirection.LastChild, _condition, request));
 }
        //------------------------------------------------------
        //
        //  Public Methods
        //
        //------------------------------------------------------
 
        #region Public Methods

        /// <summary>
        /// Get the parent of the specified element, in the current view
        /// </summary>
        /// <param name="element">element to get the parent of</param>
        /// <returns>The parent of the specified element; can be null if
        /// specified element was the root element</returns>
        /// <remarks>The view used is determined by the condition passed to
        /// the constructor - elements that do not satisfy that condition
        /// are skipped over</remarks>
        public AutomationElement GetParent(AutomationElement element)
        {
            Misc.ValidateArgumentNonNull(element, "element");
            return element.Navigate(NavigateDirection.Parent, _condition, null);
        }
 /// <summary>
 /// Get the previous sibling of the specified element, in the current view,
 /// prefetching properties
 /// </summary>
 /// <param name="element">element to get the previous sibling of</param>
 /// <param name="request">CacheRequest specifying information to be prefetched</param>
 /// <returns>The previous sibling of the specified element - or null if the
 /// specified element has no previous sibling</returns>
 /// <remarks>The view used is determined by the condition passed to
 /// the constructor - elements that do not satisfy that condition
 /// are skipped over</remarks>
 public AutomationElement GetPreviousSibling(AutomationElement element, CacheRequest request)
 {
     Misc.ValidateArgumentNonNull(element, "element");
     Misc.ValidateArgumentNonNull(request, "request");
     return element.Navigate(NavigateDirection.PreviousSibling, _condition, request);
 }
 /// <summary>
 /// Get the last child of the specified element, in the current view,
 /// prefetching properties
 /// </summary>
 /// <param name="element">element to get the last child of</param>
 /// <param name="request">CacheRequest specifying information to be prefetched</param>
 /// <returns>The last child of the specified element - or null if
 /// the specified element has no children</returns>
 /// <remarks>The view used is determined by the condition passed to
 /// the constructor - elements that do not satisfy that condition
 /// are skipped over</remarks>
 public AutomationElement GetLastChild(AutomationElement element, CacheRequest request)
 {
     Misc.ValidateArgumentNonNull(element, "element");
     Misc.ValidateArgumentNonNull(request, "request");
     return element.Navigate(NavigateDirection.LastChild, _condition, request);
 }