public void NextStage() { if (BiddingStages.Any() && !CurrentStage.IsFinished()) { throw new InvalidOperationException("Can't got to next bidding stage, untill current is finished"); } var newStagePlayersCount = _playersCount; if (BiddingStages.Any()) { newStagePlayersCount = CurrentStage.PlayersCount - CurrentStage.Bids.Values.Count(x => x.IsAllIn() || x.IsFold()); } var newStage = new BiddingStage(newStagePlayersCount); BiddingStages.Add(newStage); }