REF: move sharable methods to ExtensionIndex
Is the goal to provide an index class that can work with arbitrary EAs? If so, I think that ExtensionIndex should only be using methods and attributes defined on ExtensionArray. In particular, I don't think that `_ndarray_values` is part of the interface. > I don't think that _ndarray_values is part of the interface.

I guess this is ambiguous.  the base EA class does have _ndarray_values, but the docstring says "This method is not part of the pandas interface" Mmm, that's a bit tricky then. Perhaps this will help us pin down some of the required semantics on `_ndarray_values`.

Longer-term, what are you plans for ExtensionIndex? Will it be a base class that 3rd parties can inherit from and customize? > Longer-term, what are you plans for ExtensionIndex? Will it be a base class that 3rd parties can inherit from and customize?

That's an option.  Ideally I'd like to keep the customization inside the EAs.  ATM I'm working on smoothing out the small differences between e.g. DatetimeIndex.searchsorted vs DatetimeArray.searchsorted so we can both delegate more and improve internal consistency. Sounds good. Happy to continue finding common methods and develop on interface out of that.

Can you check the ASVs for our EA-backed indexes on this branch? It looks like IntervalIndexing.time_getitem_list and time_loc_list are significantly slower, will look into this Looks like the slowdown was caused by using `IntervalIndex.__new__` instead of `IntervalIndex._shallow_copy`.  ATM there is a problem with DTA/TDA _shallow_copy that prevent us from using that in base class, but ill be pushing a fix for that before long can you rebase thanks @jbrockmendel 