'Resizes the buffer to hold a new window with a new cap_multiple.
If cap_multiple is None, then the old cap_multiple is used.'

def extend_back(self, missing_dts):

    delta = len(missing_dts)
    if (not delta):
        raise ValueError('missing_dts    must    be    a    non-empty    index')
    self._window += delta
    self._pos += delta
    self.date_buf = self.date_buf.copy()
    self.date_buf.resize(self.cap)
    self.date_buf = np.roll(self.date_buf, delta)
    old_vals = self.buffer.values
    shape = old_vals.shape
    nan_arr = np.empty((shape[0], delta, shape[2]))
    nan_arr.fill(np.nan)
    new_vals = np.column_stack((nan_arr, old_vals, np.empty((shape[0], (delta * (self.cap_multiple - 1)), shape[2]))))
    self.buffer = pd.Panel(data=new_vals, items=self.items, minor_axis=self.minor_axis, major_axis=np.arange(self.cap), dtype=self.dtype)
    where = slice(self._start_index, (self._start_index + delta))
    self.date_buf[where] = missing_dts
