code: def _decode(self, data):
          
          if not hasattr(self, '__fields__'):
              raise NotImplementedError('You have to overwrite this method')
  
          data = ByteBuffer(data)
          cc = None
          for field in self.__fields__:
              try:
                  field.decode(self, data)
              except CompletionCodeError as e:
                  # stop decoding on completion code != 0
                  cc = e.cc
                  break
  
          if (cc is None or cc == 0) and len(data) > 0:
              raise DecodingError('Data has extra bytes')
docs: Decode the bytestring message.