/// <summary>
        /// Any armies that are surrounded by our own territories (or our teammates) should move towards the nearest enemy.
        /// </summary>
        public static void Go(BotMain bot)
        {
            foreach (var landlocked in bot.Standing.Territories.Values.Where(o => o.OwnerPlayerID == bot.PlayerID &&
                                                                             bot.Map.Territories[o.ID].ConnectedTo.Keys.All(c => bot.IsTeammateOrUs(bot.Standing.Territories[c].OwnerPlayerID)) &&
                                                                             !bot.AvoidTerritories.Contains(o.ID) &&
                                                                             bot.MakeOrders.GetArmiesAvailable(o.ID) > 0))
            {
                if (bot.PastTime(5))
                {
                    //Extreme cases (i.e. where one player controls all of a big map), this algorithm can take forever.  We don't care about these extreme cases since they've already won.  Stop processing after too long
                    AILog.Log("MoveLandlockedUp", "Giving up due to time");
                    break;
                }

                var moveTowards = bot.MoveTowardsNearestBorder(landlocked.ID, true);

                if (moveTowards.HasValue && !bot.AvoidTerritories.Contains(moveTowards.Value))
                {
                    var armies = bot.MakeOrders.GetArmiesAvailable(landlocked.ID);
                    AILog.Log("MoveLandlockedUp", "Ordering " + armies + " armies from " + bot.TerrString(landlocked.ID) + " to " + bot.TerrString(moveTowards.Value));
                    bot.Orders.AddAttack(landlocked.ID, moveTowards.Value, AttackTransferEnum.Transfer, armies, false);
                }
            }
        }