def _decode_next_layer(self, dict_, length=None):
seek_cur = self._file.tell()<EOL>try:<EOL><INDENT>next_ = self._import_next_layer(self._prot, length)<EOL><DEDENT>except Exception:<EOL><INDENT>dict_['<STR_LIT:error>'] = traceback.format_exc(limit=<NUM_LIT:1>).strip().split(os.linesep)[-<NUM_LIT:1>]<EOL>self._file.seek(seek_cur, os.SEEK_SET)<EOL>next_ = beholder(self._import_next_layer)(self, self._prot, length, error=True)<EOL><DEDENT>info, chain = next_.info, next_.protochain<EOL>layer = next_.alias.lower()<EOL>self._next = next_<EOL>self._protos = chain<EOL>dict_[layer] = info<EOL>dict_['<STR_LIT>'] = self._protos.chain<EOL>return dict_<EOL>
Decode next layer protocol.

        Positional arguments:
            dict_ -- dict, info buffer
            proto -- str, next layer protocol name
            length -- int, valid (not padding) length

        Returns:
            * dict -- current protocol with packet extracted