public static ISearchContext GetScopeContextUsingParent <TOwner>(this ScopeSource scopeSource, IUIComponent <TOwner> parentComponent)
            where TOwner : PageObject <TOwner>
        {
            switch (scopeSource)
            {
            case ScopeSource.Parent:
                return(parentComponent.ScopeContext);

            case ScopeSource.Grandparent:
                return((parentComponent.Parent ?? throw UIComponentNotFoundException.ForParentOf(parentComponent.ComponentFullName)).ScopeContext);

            case ScopeSource.PageObject:
                return(parentComponent.Owner.ScopeContext);

            case ScopeSource.Page:
                return((parentComponent?.Context ?? AtataContext.Current).Driver);

            default:
                throw ExceptionFactory.CreateForUnsupportedEnumValue(scopeSource, nameof(scopeSource));
            }
        }
        public static ISearchContext GetScopeContext(this ScopeSource scopeSource, UIComponent component, SearchOptions options = null)
        {
            options = options ?? new SearchOptions();

            switch (scopeSource)
            {
            case ScopeSource.Parent:
                return((component.Parent ?? throw UIComponentNotFoundException.ForParentOf(component.ComponentFullName)).GetScopeContext(options));

            case ScopeSource.Grandparent:
                return((component.Parent?.Parent ?? throw UIComponentNotFoundException.ForGrandparentOf(component.ComponentFullName)).GetScopeContext(options));

            case ScopeSource.PageObject:
                return(component.Owner.GetScopeContext(options));

            case ScopeSource.Page:
                return(component.Driver);

            default:
                throw ExceptionFactory.CreateForUnsupportedEnumValue(scopeSource, nameof(scopeSource));
            }
        }