docs: def _setdefault(obj, key, value):
      """
      DO NOT USE __dict__.setdefault(obj, key, value), IT DOES NOT CHECK FOR obj[key] == None
      """
      v = obj.get(key)
      if v == None:
          obj[key] = value
          return value
      return v