'Collect split adjustments that occur after the
split-adjusted-asof-date. Each adjustment needs to be applied to all
dates on which knowledge for the requested quarter was older than the
date of the adjustment.
Parameters
post_adjustments : tuple(list(float), list(int), pd.DatetimeIndex)
The adjustment values, indexes in `dates`, and timestamps for
adjustments that happened after the split-asof-date.
requested_qtr_data : pd.DataFrame
The requested quarter data for each calendar date per sid.
sid : int
The sid for which adjustments need to be collected.
sid_idx : int
The index of `sid` in the adjusted array.
sid_estimates : pd.DataFrame
The raw estimates data for this sid.
requested_split_adjusted_columns : list of str
The requested split adjusted columns.
Returns
col_to_split_adjustments : dict[str -> dict[int -> list of Adjustment]]
The adjustments for this sid that occurred after the
split-asof-date.'

def collect_post_asof_split_adjustments(self, post_adjustments, requested_qtr_data, sid, sid_idx, sid_estimates, requested_split_adjusted_columns):

    col_to_split_adjustments = {}
    if post_adjustments:
        requested_qtr_timeline = requested_qtr_data[SHIFTED_NORMALIZED_QTRS][sid].reset_index()
        requested_qtr_timeline = requested_qtr_timeline[requested_qtr_timeline[sid].notnull()]
        qtr_ranges_idxs = np.split(requested_qtr_timeline.index, (np.where((np.diff(requested_qtr_timeline[sid]) != 0))[0] + 1))
        requested_quarters_per_range = [requested_qtr_timeline[sid][r[0]] for r in qtr_ranges_idxs]
        for (i, qtr_range) in enumerate(qtr_ranges_idxs):
            for (adjustment, date_index, timestamp) in zip(*post_adjustments):
                upper_bound = qtr_range[(-1)]
                end_idx = self.determine_end_idx_for_adjustment(timestamp, requested_qtr_data.index, upper_bound, requested_quarters_per_range[i], sid_estimates)
                start_idx = qtr_range[0]
                if (date_index > start_idx):
                    start_idx = date_index
                if (qtr_range[0] <= end_idx):
                    for column_name in requested_split_adjusted_columns:
                        if (column_name not in col_to_split_adjustments):
                            col_to_split_adjustments[column_name] = {}
                        adj = Float64Multiply(qtr_range[0], end_idx, sid_idx, sid_idx, adjustment)
                        add_new_adjustments(col_to_split_adjustments, [adj], column_name, start_idx)
    return col_to_split_adjustments
