docs: def copy_with(self, geometry=None, properties=None, assets=None):
          """Generate a new GeoFeature with different geometry or preperties."""
          def copy_assets_object(asset):
              obj = asset.get("__object")
              if hasattr("copy", obj):
                  new_obj = obj.copy()
              if obj:
                  asset["__object"] = new_obj
  
          geometry = geometry or self.geometry.copy()
          new_properties = copy.deepcopy(self.properties)
          if properties:
              new_properties.update(properties)
          if not assets:
              assets = copy.deepcopy(self.assets)
              map(copy_assets_object, assets.values())
          else:
              assets = {}
          return self.__class__(geometry, new_properties, assets)