public override State Expand() { if (this.Street.IsFinalStreet()) { return(this); } if (this.AllAllIn) { this.Children.Add(StateFactory.CreateAllInState(this)); return(this.Children.First()); } if (this.AnyAllIn) { this.Children.Add(StateFactory.CreateCallState(this)); this.Children.Add(StateFactory.CreateFoldState(this)); return(this.Children.First()); } if (this.LastAction.IsPassive()) { this.Children.Add(StateFactory.CreateBet50State(this)); this.Children.Add(StateFactory.CreateCheckState(this)); return(this.Children.First()); } this.Children.Add(StateFactory.CreateCallState(this)); this.Children.Add(StateFactory.CreateRaise50State(this)); this.Children.Add(StateFactory.CreateFoldState(this)); return(this.Children.First()); }