<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_dates(self, request):
 """ Get available Sentinel-2 acquisitions at least time_difference apart List of all available Sentinel-2 acquisitions for given bbox with max cloud coverage and the specified time interval. When a single time is specified the request will return that specific date, if it exists. If a time range is specified the result is a list of all scenes between the specified dates conforming to the cloud coverage criteria. Most recent acquisition being first in the list. When a time_difference threshold is set to a positive value, the function filters out all datetimes which are within the time difference. The oldest datetime is preserved, all others all deleted. :param request: OGC-type request :type request: WmsRequest or WcsRequest :return: List of dates of existing acquisitions for the given request :rtype: list(datetime.datetime) or [None] """

        if DataSource.is_timeless(request.data_source):
            return [None]

        date_interval = parse_time_interval(request.time)

        LOGGER.debug('date_interval=%s', date_interval)

        if request.wfs_iterator is None:
            self.wfs_iterator = WebFeatureService(request.bbox, date_interval, data_source=request.data_source,
                                                  maxcc=request.maxcc, base_url=self.base_url,
                                                  instance_id=self.instance_id)
        else:
            self.wfs_iterator = request.wfs_iterator

        dates = sorted(set(self.wfs_iterator.get_dates()))

        if request.time is OgcConstants.LATEST:
            dates = dates[-1:]
        return OgcService._filter_dates(dates, request.time_difference)