code: def retag(self, tagging, tag=None):
          
  
          # This is required to preserve the old API
          if not isinstance(tagging, dict):
              tagging = {tagging: tag}
          new_obj = self.__class__(explicit=tagging.get('explicit'), implicit=tagging.get('implicit'))
          new_obj._copy(self, copy.deepcopy)
          return new_obj
docs: Copies the object, applying a new tagging to it
  
          :param tagging:
              A dict containing the keys "explicit" and "implicit". Legacy
              API allows a unicode string of "implicit" or "explicit".
  
          :param tag:
              A integer tag number. Only used when tagging is a unicode string.
  
          :return:
              An Asn1Value object