public function dealFlop()
    {
        if ($this->dealer()->communityCards()->count() !== 0) {
            throw RoundException::flopHasBeenDealt();
        }
        if ($player = $this->whosTurnIsIt()) {
            throw RoundException::playerStillNeedsToAct($player);
        }

        $this->collectChipTotal();

        $seat = $this->table()->findSeat($this->playerWithSmallBlind());
        $this->resetPlayerList($seat);

        $this->dealer()->dealCommunityCards(3);
        $this->actions()->push(new Action($this->dealer(), Action::DEALT_FLOP, [
            'communityCards' => $this->dealer()->communityCards()->only(range(0, 2)),
        ]));
    }