private function resolvePreviousValid(int $year, int $month, int $day) : LocalDate
    {
        if ($day > 28) {
            $day = \min($day, YearMonth::of($year, $month)->getLengthOfMonth());
        }

        return new LocalDate($year, $month, $day);
    }