public function getUnpacked() {
        $tries = 0;
        $obj = $this->_original;

        while ($this->_dataLooksZipped($obj)) {
            $unpacked = gzdecode($obj);
            if (null === $unpacked || false === $unpacked) {
                // If anything went wrong with decoding, return result of previous iteration
                return $obj;
            }
            $obj = $unpacked;

            $tries++;

            if ($this->_maxDepthReached($tries)) {
                // Zipped ridiculously deep? Screw that, return the original
                return $this->_original;
            }
        }
        return $obj;
    }