<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_stops_in_polygon( feed: "Feed", polygon: Polygon, geo_stops=None ) -> DataFrame: """ Return the slice of ``feed.stops`` that contains all stops that lie within the given Shapely Polygon object that is specified in WGS84 coordinates. Parameters feed : Feed polygon : Shapely Polygon Specified in WGS84 coordinates geo_stops : Geopandas GeoDataFrame A geographic version of ``feed.stops`` which will be computed if not given. Specify this parameter in batch jobs to avoid unnecessary computation. Returns ------- DataFrame Subset of ``feed.stops`` Notes ----- - Requires GeoPandas - Assume the following feed attributes are not ``None``: * ``feed.stops``, if ``geo_stops`` is not given """

    if geo_stops is not None:
        f = geo_stops.copy()
    else:
        f = geometrize_stops(feed.stops)

    cols = f.columns
    f["hit"] = f["geometry"].within(polygon)
    f = f[f["hit"]][cols]
    return ungeometrize_stops(f)