def within_airport(
        self,
        start: timelike,
        stop: timelike,
        airport: Union[Airport, str],
        count: bool = False,
    ) -> Optional[pd.DataFrame]:
        """EXPERIMENTAL."""

        start = to_datetime(start)
        stop = to_datetime(stop)

        before_hour = round_time(start, how="before")
        after_hour = round_time(stop, how="after")

        if isinstance(airport, str):
            from traffic.data import airports

            airport = cast(Airport, airports[airport])

        other_params = (
            "and lat<={airport_latmax} and lat>={airport_latmin} "
            "and lon<={airport_lonmax} and lon>={airport_lonmin} "
            "and baroaltitude<=1000 "
            "group by icao24, callsign"
        ).format(
            airport_latmax=airport.lat + 0.1,
            airport_latmin=airport.lat - 0.1,
            airport_lonmax=airport.lon + 0.1,
            airport_lonmin=airport.lon - 0.1,
        )

        columns = "icao24, callsign"
        other_tables = ""
        if count is True:
            columns = "count(*) as count, s.ITEM as serial, " + columns
            other_tables += ", state_vectors_data4.serials s"
            other_params += ", s.ITEM"

        request = self.basic_request.format(
            columns=columns,
            before_time=start.timestamp(),
            after_time=stop.timestamp(),
            before_hour=before_hour.timestamp(),
            after_hour=after_hour.timestamp(),
            other_tables=other_tables,
            other_params=other_params,
        )

        df = self._impala(request, columns="count, serial, icao24, callsign")

        if (
            df is not None
            and "callsign" in df.columns
            and df.callsign.dtype == object
        ):
            df = df[df.callsign != "callsign"]

        return df