function isSerialized(): bool
    {
        // Empty strings cannot get unserialized
        if (strlen($this->string) <= 1) {
            return false;
        }

        // Serialized false, return true. unserialize() returns false on an
        // invalid string or it could return false if the string is serialized
        // false, eliminate that possibility.
        if ($this->string === 'b:0;') {
            $result = false;
            return true;
        }

        $length = strlen($this->string);
        $end = '';

        switch ($this->string[0]) {
            case 's':
                if ($this->string[$length - 2] !== '"') {
                    return false;
                }
            case 'b':
            case 'i':
            case 'd':
                $end .= ';';
            case 'a':
            case 'O':
                $end .= '}';

                if ($this->string[1] !== ':') {
                    return false;
                }

                switch ($this->string[2]) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                    case 9:
                        break;

                    default:
                        return false;
                }
            case 'N':
                $end .= ';';

                if ($this->string[$length - 1] !== $end[0]) {
                    return false;
                }

                break;

            default:
                return false;
        }

        if (($this->result = @unserialize($this->string)) === false) {
            $this->result = null;
            return false;
        }

        return true;
    }