public void Step(ref ForcedRecoveryStepState token, int condition)
        {
            TurnEV     currentTurn = turnService.GetCurrentTurnEV(entitiesDB);
            IPieceData piece       = pieceFactory.CreateIPieceData(token.PieceMoved.Piece.PieceType);

            bool forcedRecoveryPossible = token.PieceMoved.Tier.TopOfTower && // Paranoia check
                                          piece.Abilities.PostMove.Contains(PostMoveAbility.FORCED_RECOVERY) &&
                                          !HasDestinationTiles(token.PieceMoved) &&
                                          checkService.ForcedRecoveryResolvesOrDoesNotCreateCheck(token.PieceMoved, currentTurn, entitiesDB);

            NextAction(ref token, forcedRecoveryPossible);
        }