public function withMonth(int $month) : MonthDay
    {
        if ($month === $this->month) {
            return $this;
        }

        Field\MonthOfYear::check($month);

        $lastDay = Field\MonthOfYear::getLength($month);

        return new MonthDay($month, ($lastDay < $this->day) ? $lastDay : $this->day);
    }