code: def _basic_debug(prefix, self):
      
  
      print('%s%s Object #%s' % (prefix, type_name(self), id(self)))
      if self._header:
          print('%s  Header: 0x%s' % (prefix, binascii.hexlify(self._header or b'').decode('utf-8')))
  
      has_header = self.method is not None and self.class_ is not None and self.tag is not None
      if has_header:
          method_name = METHOD_NUM_TO_NAME_MAP.get(self.method)
          class_name = CLASS_NUM_TO_NAME_MAP.get(self.class_)
  
      if self.explicit is not None:
          for class_, tag in self.explicit:
              print(
                  '%s    %s tag %s (explicitly tagged)' %
                  (
                      prefix,
                      CLASS_NUM_TO_NAME_MAP.get(class_),
                      tag
                  )
              )
          if has_header:
              print('%s      %s %s %s' % (prefix, method_name, class_name, self.tag))
  
      elif self.implicit:
          if has_header:
              print('%s    %s %s tag %s (implicitly tagged)' % (prefix, method_name, class_name, self.tag))
  
      elif has_header:
          print('%s    %s %s tag %s' % (prefix, method_name, class_name, self.tag))
  
      print('%s  Data: 0x%s' % (prefix, binascii.hexlify(self.contents or b'').decode('utf-8')))
docs: Prints out basic information about an Asn1Value object. Extracted for reuse
      among different classes that customize the debug information.
  
      :param prefix:
          A unicode string of spaces to prefix output line with
  
      :param self:
          The object to print the debugging information about