private function doDecode()
    {
        switch ($this->getChar()) {

            case "i":
                ++$this->offset;
                return $this->decodeInteger();

            case "l":
                ++$this->offset;
                return $this->decodeList();

            case "d":
                ++$this->offset;
                return $this->decodeDict();

            default:
                if (ctype_digit($this->getChar())) {
                    return $this->decodeString();
                }

        }

        throw new RuntimeException("Unknown entity found at offset $this->offset");
    }