def _decode_next_layer(self, dict_, proto=None, length=None):
if self._onerror:<EOL><INDENT>next_ = beholder(self._import_next_layer)(self, proto, length)<EOL><DEDENT>else:<EOL><INDENT>next_ = self._import_next_layer(proto, length)<EOL><DEDENT>info, chain = next_.info, next_.protochain<EOL>layer = next_.alias.lower()<EOL>dict_[layer] = info<EOL>self._next = next_<EOL>self._protos = ProtoChain(self.__class__, self.alias, basis=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 next layer extracted