code: def _decode_next_layer(self, dict_, length=None):
          
          seek_cur = self._file.tell()
          try:
              next_ = self._import_next_layer(self._prot, length)
          except Exception:
              dict_['error'] = traceback.format_exc(limit=1).strip().split(os.linesep)[-1]
              self._file.seek(seek_cur, os.SEEK_SET)
              next_ = beholder(self._import_next_layer)(self, self._prot, length, error=True)
          info, chain = next_.info, next_.protochain
  
          # make next layer protocol name
          layer = next_.alias.lower()
          # proto = next_.__class__.__name__
  
          # write info and protocol chain into dict
          self._next = next_
          self._protos = chain
          dict_[layer] = info
          dict_['protocols'] = self._protos.chain
          return dict_
docs: 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