def _fast_union(self: _TDT, other: _TDT, sort=None) -> _TDT:
    if (self[0] <= other[0]):
        (left, right) = (self, other)
    elif (sort is False):
        (left, right) = (self, other)
        left_start = left[0]
        loc = right.searchsorted(left_start, side='left')
        right_chunk = right._values[:loc]
        dates = concat_compat((left._values, right_chunk))
        result = type(self)._simple_new(dates, name=self.name)
        return result
    else:
        (left, right) = (other, self)
    left_end = left[(- 1)]
    right_end = right[(- 1)]
    if (left_end < right_end):
        loc = right.searchsorted(left_end, side='right')
        right_chunk = right._values[loc:]
        dates = concat_compat([left._values, right_chunk])
        dates = type(self._data)(dates, freq=self.freq)
        result = type(self)._simple_new(dates)
        return result
    else:
        return left
def _fast_union(self: _TDT, other: _TDT, sort=None) -> _TDT:
    if (self[0] <= other[0]):
        (left, right) = (self, other)
    elif (sort is False):
        (left, right) = (self, other)
        left_start = left[0]
        loc = right.searchsorted(left_start, side='left')
        right_chunk = right._values[:loc]
        dates = concat_compat((left._values, right_chunk))
        result = type(self)._simple_new(dates, name=self.name)
        return result
    else:
        (left, right) = (other, self)
    left_end = left[(- 1)]
    right_end = right[(- 1)]
    if (left_end < right_end):
        loc = right.searchsorted(left_end, side='right')
        right_chunk = right._values[loc:]
        dates = concat_compat([left._values, right_chunk])
        dates = type(self._data)(dates, freq=self.freq)
        result = type(self)._simple_new(dates)
        return result
    else:
        return left