public function unserialize($serialized)
    {
        $data = unserialize($serialized);

        // Calling __construct here is required to avoid PHP warnings. See
        // PHP bug #65151. DateTime objects that are created through
        // unserialization are not properly initialized until __construct() is
        // called.
        $this->__construct('@' . $data[0]);

        // DateTime constructor with timestamp is always UTC so set time zone
        $this->setTimezone(new DateTimeZone($data[1]));
    }