docs: def add_feature(self, obj=None, geometry=None, properties=None):
          """
          Adds a given feature. If obj isn't specified, geometry and properties can be set as arguments directly.
  
          Parameters:
  
          - **obj**: Another feature instance, an object with the \_\_geo_interface__ or a geojson dictionary of the Feature type.
          - **geometry** (optional): Anything that the Geometry instance can accept.
          - **properties** (optional): A dictionary of key-value property pairs.
          """
          properties = properties or {}
          if isinstance(obj, Feature):
              # instead of creating copy, the original feat should reference the same one that was added here
              feat = obj._data
          elif isinstance(obj, dict):
              feat = obj.copy()
          else:
              feat = Feature(geometry=geometry, properties=properties).__geo_interface__
          self._data["features"].append(feat)