final public function readUInt32()
    {
        if (PHP_INT_SIZE < 8) {
            // @codeCoverageIgnoreStart
            if ($this->isLittleEndian()) {
                list(, $lo, $hi) = unpack('S*', $this->read(4));
            } else {
                list(, $hi, $lo) = unpack('S*', $this->read(4));
            }
            return $hi * (0xffff+1) + $lo; // eq $hi << 16 | $lo
            // @codeCoverageIgnoreEnd
        } else {
            list(, $int) = unpack('L*', $this->read(4)) + array(0, 0);
            return $int;
        }
    }