public static FantasyTeam RunOptimizer(Player playerUpForAuction)
        {
            FantasyTeam mock = new FantasyTeam("mock");

            foreach(string key in Brain.MyDraft.MyTeam.PercentageBudgetsByPosition.Keys)
            {
                mock.PercentageBudgetsByPosition.Add(key, Brain.MyDraft.MyTeam.PercentageBudgetsByPosition[key]);
            }
            
            foreach (Player p in Brain.MyDraft.MyTeam.Roster)
            {
                mock.addMockPlayer(p);
            }

            if(playerUpForAuction != null)
            {
                mock.addMockPlayer(playerUpForAuction);
            }

            foreach (string position in new string[]{"K","DST","TE","QB","RB","WR"})
            {
                int numberPositionRosterSpots = mock.Roster.Count(p => p.Position.Equals(position));
                OptimizePosition(mock, position, numberPositionRosterSpots);
            }

            return mock;
        }
        private static void OptimizePosition(FantasyTeam mockTeam, string position, int spotsAlreadyFilled)
        {
            int numberOfTotalSpots = Brain.MyDraft.RosterSpotsByPosition[position];
            int percentageBudgetForPosition = mockTeam.PercentageBudgetsByPosition[position];
            int percentageBudgetForBench = mockTeam.PercentageBudgetsByPosition["BENCH"];

            List<Player> players = new List<Player>();
            players.AddRange(Brain.MyDraft.PlayersByPosition[position]);

            while (spotsAlreadyFilled < numberOfTotalSpots)
            {
                int dollarBudgetForPosition = mockTeam.GetBudgetDollarForPosition(position);

                int numberOfSpotsAvailable = numberOfTotalSpots - spotsAlreadyFilled;
                int dollarBudgetForThisPlayer = numberOfSpotsAvailable > 1 ? (int)Math.Ceiling(dollarBudgetForPosition / 2.0) : dollarBudgetForPosition;

                Player bestPlayer = players.Where(p => p.Dollar <= dollarBudgetForThisPlayer && !mockTeam.Roster.Contains(p))
                    .OrderByDescending(s => s.Points).First();

                mockTeam.addMockPlayer(bestPlayer);

                players.Remove(bestPlayer);
                spotsAlreadyFilled++;
            }

            if (mockTeam.PercentageBudgetsByPosition[position] > 0)
            {
                var increase = mockTeam.PercentageBudgetsByPosition[position] * Brain.MyDraft.LeagueSalarayCap / 100;
                mockTeam.AdjustedCap += increase;
            }
        }