public SwissBracket(List <IPlayer> _players, PairingMethod _pairing = PairingMethod.Slide, int _maxGamesPerMatch = 1, int _numberOfRounds = 0)
        {
            if (null == _players)
            {
                throw new ArgumentNullException("_players");
            }

            Players       = _players;
            Id            = 0;
            BracketType   = BracketType.SWISS;
            PairingMethod = _pairing;

            // Limit the number of rounds to make,
            // according to user input and the playercount.
            MaxRounds = _numberOfRounds;
            if (Players.Count > 8 && MaxRounds > (int)(Players.Count * 0.5))
            {
                MaxRounds = Players.Count / 2;
            }
            else if (Players.Count <= 8 && MaxRounds >= Players.Count)
            {
                MaxRounds = Players.Count - 1;
            }

            CreateBracket(_maxGamesPerMatch);
        }
 /// <summary>
 /// Creates a new Swiss-style Bracket, and adds it to the bracketlist.
 /// This is just a wrapper method that calls the bracket ctor
 /// and adds the resulting Bracket object to the list.
 /// </summary>
 /// <param name="_playerList">List of Players</param>
 /// <param name="_pairingMethod">Method for matchup pairing: Slide, Fold, or Adjacent</param>
 /// <param name="_maxGamesPerMatch">Max games, applied to every Match</param>
 /// <param name="_numRounds">Limit of rounds to generate (0 = full Swiss)</param>
 public void AddSwissBracket(List <IPlayer> _playerList, PairingMethod _pairingMethod = PairingMethod.Slide, int _maxGamesPerMatch = 1, int _numRounds = 0)
 {
     Brackets.Add(new SwissBracket(_playerList, _pairingMethod, _maxGamesPerMatch, _numRounds));
 }