protected function guardTime(int $hour, int $minute, int $second): void
    {
        if ($hour < static::MIN_HOUR || $hour > static::MAX_HOUR) {
            $message = sprintf('Hour (%d) out of range[%d, %d]', $hour, static::MIN_HOUR, static::MAX_HOUR);
            throw new DomainException($message);
        }

        if ($minute < static::MIN_MINUTE || $minute > static::MAX_MINUTE) {
            $message = sprintf('Minute (%d) out of range[%d, %d]', $minute, static::MIN_MINUTE, static::MAX_MINUTE);
            throw new DomainException($message);
        }

        if ($second < static::MIN_SECOND || $second > static::MAX_SECOND) {
            $message = sprintf('Second (%d) out of range[%d, %d]', $second, static::MIN_SECOND, static::MAX_SECOND);
            throw new DomainException($message);
        }
    }