def METHOD_NAME(
    self, sync_mode, cursor_field: List[str] = None, stream_state: Mapping[str, Any] = None
) -> Iterable[Optional[Mapping[str, Mapping[str, Any]]]]:
    """Return stream slices which is a combination of all funnel_ids and related date ranges, like:
    stream_slices = [
        {   'funnel_id': funnel_id1_int,
            'funnel_name': 'funnel_name1',
            'start_date': 'start_date_1'
            'end_date': 'end_date_1'
        },
        {   'funnel_id': 'funnel_id1_int',
            'funnel_name': 'funnel_name1',
            'start_date': 'start_date_2'
            'end_date': 'end_date_2'
        }
        ...
        {   'funnel_id': 'funnel_idX_int',
            'funnel_name': 'funnel_nameX',
            'start_date': 'start_date_1'
            'end_date': 'end_date_1'
        }
        ...
    ]
    # NOTE: funnel_id type:
    #    - int in funnel_slice
    #    - str in stream_state
    """
    stream_state: Dict = stream_state or {}
    # One stream slice is a combination of all funnel_slices and date_slices
    funnel_slices = self.funnel_slices(sync_mode)
    for funnel_slice in funnel_slices:
        # get single funnel state
        # save all funnels in dict(<funnel_id1>:<name1>, ...)
        self.funnels[funnel_slice["funnel_id"]] = funnel_slice["name"]
        funnel_id = str(funnel_slice["funnel_id"])
        funnel_state = stream_state.get(funnel_id)
        date_slices = super().METHOD_NAME(sync_mode, cursor_field=cursor_field, stream_state=funnel_state)
        for date_slice in date_slices:
            yield {**funnel_slice, **date_slice}