public override async Task <bool> OnExecute()
        {
            if (!HarvestField.CanExecuteSpecial)
            {
                return(await UprootVine.OnExecute());
            }
            if (!UprootVine.CanExecuteSpecial)
            {
                return(await HarvestField.OnExecute());
            }

            var selectedOption =
                await
                PlayerSelection.Select("Select action", "Choose to harvest 1 field or uproot 1 vine",
                                       "harvest 1 field", "uproot 1 vine");

            if (selectedOption == Selection.None)
            {
                return(false);
            }
            if (selectedOption == Selection.Option1)
            {
                return(await HarvestField.OnExecute());
            }
            return(await UprootVine.OnExecute());
        }
        protected override async Task <bool> ApplyOption1(IGameState gameState)
        {
            var success = await HarvestField.OnExecute();

            if (!success)
            {
                return(false);
            }

            if (!HarvestField.CanExecuteSpecial)
            {
                return(true);
            }
            success = await HarvestField.OnExecute();

            if (!success)
            {
                return(await MetroDialog.DoneOrCancelVisitor("harvesting"));
            }

            return(true);
        }