code: def _set_metadata(self, value):
          '''
          A special set function to ensure
          we're setting with a dictionary
          '''
          if value is None:
              setattr(self, '_PMMail__metadata', {})
          elif isinstance(value, dict):
              for k, v in value.items():
                  if (not isinstance(k, str) and not isinstance(k, int)) \
                      or (not isinstance(v, str) and not isinstance(v, int)):
                      raise TypeError('Metadata keys and values can only be strings or integers')
              setattr(self, '_PMMail__metadata', value)
          else:
              raise TypeError('Metadata must be a dictionary of key-value pairs'f _set_metadata(self, value):
          '''
          A special set function to ensure
          we're setting with a dictionary
          '''
          if value is None:
              setattr(self, '_PMMail__metadata', {})
          elif isinstance(value, dict):
              for k, v in value.items():
                  if (not isinstance(k, str) and not isinstance(k, int)) \
                      or (not isinstance(v, str) and not isinstance(v, int)):
                      raise TypeError('Metadata keys and values can only be strings or integers')
              setattr(self, '_PMMail__metadata', value)
          else:
              raise TypeError('Metadata must be a dictionary of key-value pairs')
docs: A special set function to ensure
          we're setting with a dictionary