public function subOidWalkLong($oid, $positionS, $positionE) {
        if ($this->cache() && ( $rtn = $this->getCache()->load($oid) ) !== null) {
            return $rtn;
        }

        $this->_lastResult = $this->realWalk($oid);

        if ($this->_lastResult === false) {
            throw new Exception('Could not perform walk for OID ' . $oid);
        }

        $result = array();

        foreach ($this->_lastResult as $_oid => $value) {
            $oids = explode('.', $_oid);

            $oidKey = '';
            for ($i = $positionS; $i <= $positionE; $i++) {
                $oidKey .= $oids[$i] . '.';
            }

            $result[$oidKey] = $this->parseSnmpValue($value);
        }

        return $this->getCache()->save($oid, $result);
    }