/// <summary> /// Do not call this function directly. Instead, call MoveTo(). /// </summary> /// <param name="getElementMethod"></param> private void _MoveTo(GetElementDelegate getElementMethod) { var element = GetNearbyElement(getElementMethod); if (element == null) { throw new TreeNavigationFailedException(); } #pragma warning disable CA2000 // Call IDisposable.Dispose() var desktopElement = new DesktopElement(element, true, false); #pragma warning restore CA2000 desktopElement.PopulateMinimumPropertiesForSelection(); if (desktopElement.IsRootElement() == false) { this.SelectAction?.SetCandidateElement(desktopElement); this.SelectAction?.Select(); } else { // if it is desktop, release it. desktopElement.Dispose(); throw new TreeNavigationFailedException(); } }