public async Task DeleteAsync(ITableCategory category, TaskContext context)
        {
            var authentication = context.Authentication;

            if (context.AllowException == false)
            {
                if (await VerifyAsync() == true)
                {
                    return;
                }
            }
            await category.DeleteAsync(authentication);

            context.Pop(category);

            async Task <bool> VerifyAsync()
            {
                if ((await category.GetAllTablesAsync(item => true)).Any() == true)
                {
                    return(false);
                }
                return(await category.Dispatcher.InvokeAsync(() =>
                {
                    if (category.Parent == null)
                    {
                        return false;
                    }
                    return true;
                }));
            }
        }
        public async Task MoveAsync(ITableCategory category, TaskContext context)
        {
            var authentication = context.Authentication;
            var categories     = category.GetService(typeof(ITableCategoryCollection)) as ITableCategoryCollection;
            var categoryPath   = await categories.Dispatcher.InvokeAsync(() => categories.Random().Path);

            if (context.AllowException == false)
            {
                if (await VerifyAsync() == false)
                {
                    return;
                }
            }
            await category.MoveAsync(authentication, categoryPath);

            async Task <bool> VerifyAsync()
            {
                if ((await category.GetAllTablesAsync(item => item.TableState != TableState.None)).Any() == true)
                {
                    return(false);
                }
                return(await category.Dispatcher.InvokeAsync(() =>
                {
                    if (category.Parent == null)
                    {
                        return false;
                    }
                    if (categoryPath.StartsWith(category.Path) == true)
                    {
                        return false;
                    }
                    if (category.Parent.Path == categoryPath)
                    {
                        return false;
                    }
                    if (categoryPath.StartsWith(category.Path) == true)
                    {
                        return false;
                    }
                    return true;
                }));
            }
        }