private function multiPolygon()
    {
        $count  = $this->readCount();
        $values = array();

        for ($i = 0; $i < $count; $i++) {
            $this->readByteOrder();

            $type = $this->readType();

            if ($this->getDimensionedPrimitive(self::WKB_TYPE_POLYGON) !== $type) {
                throw new UnexpectedValueException($this->getBadTypeInTypeMessage($type, self::WKB_TYPE_MULTIPOLYGON, array(self::WKB_TYPE_POLYGON)));
            }

            $values[] = $this->readLinearRings($this->readCount());
        }

        return $values;
    }