public function isValid(): bool
    {
        $segments = explode('.', $this->value, self::NUM_SEGMENTS);

        if (count($segments) !== self::NUM_SEGMENTS) {
            return false;
        }

        for ($i = 0; $i < self::NUM_SEGMENTS; $i++) {
            $value = (int) $segments[$i];

            if ($value < self::MIN_VALUE || $value > self::MAX_VALUE) {
                return false;
            }
        }

        return true;
    }