def _needs_i8_conversion(self, key):
if is_interval_dtype(key) or isinstance(key, Interval):<EOL><INDENT>return self._needs_i8_conversion(key.left)<EOL><DEDENT>i8_types = (Timestamp, Timedelta, DatetimeIndex, TimedeltaIndex)<EOL>return isinstance(key, i8_types)<EOL>
Check if a given key needs i8 conversion. Conversion is necessary for
Timestamp, Timedelta, DatetimeIndex, and TimedeltaIndex keys. An
Interval-like requires conversion if it's endpoints are one of the
aforementioned types.

Assumes that any list-like data has already been cast to an Index.

Parameters
----------
key : scalar or Index-like
    The key that should be checked for i8 conversion

Returns
-------
boolean