code: def setdefault(msg_or_dict, key, value):
      
      if not get(msg_or_dict, key, default=None):
          set(msg_or_dict, key, value)
docs: Set the key on a protobuf Message or dictionary to a given value if the
      current value is falsy.
  
      Because protobuf Messages do not distinguish between unset values and
      falsy ones particularly well (by design), this method treats any falsy
      value (e.g. 0, empty list) as a target to be overwritten, on both Messages
      and dictionaries.
  
      Args:
          msg_or_dict (Union[~google.protobuf.message.Message, Mapping]): the
              object.
          key (str): The key on the object in question.
          value (Any): The value to set.
  
      Raises:
          TypeError: If ``msg_or_dict`` is not a Message or dictionary.