'Collect split adjustments that occur before the
split-adjusted-asof-date. All those adjustments must first be
UN-applied at the first date index and then re-applied on the
appropriate dates in order to match point in time share pricing data.
Parameters
split_adjusted_asof_date_idx : int
The index in the calendar dates as-of which all data was
split-adjusted.
sid_idx : int
The index of the sid for which adjustments should be collected in
the adjusted array.
pre_adjustments : tuple(list(float), list(int))
The adjustment values, indexes in `dates`, and timestamps for
adjustments that happened after the split-asof-date.
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 on or before the
split-asof-date.'

def collect_pre_split_asof_date_adjustments(self, split_adjusted_asof_date_idx, sid_idx, pre_adjustments, requested_split_adjusted_columns):

    col_to_split_adjustments = {}
    if len(pre_adjustments[0]):
        (adjustment_values, date_indexes) = pre_adjustments
        for column_name in requested_split_adjusted_columns:
            col_to_split_adjustments[column_name] = {}
            col_to_split_adjustments[column_name][0] = [Float64Multiply(0, split_adjusted_asof_date_idx, sid_idx, sid_idx, (1 / future_adjustment)) for future_adjustment in adjustment_values]
            for (adjustment, date_index) in zip(adjustment_values, date_indexes):
                adj = Float64Multiply(0, split_adjusted_asof_date_idx, sid_idx, sid_idx, adjustment)
                add_new_adjustments(col_to_split_adjustments, [adj], column_name, date_index)
    return col_to_split_adjustments
