I don't think the default impl (SlicedIndexInput) should overrided BII's copyBytes? Seems ... spooky.
There are copyBytes everywhere, mostly not really being used.
Particularly DataOutput.copyBytes(DataInput) versus IndexInput.copyBytes(IndexOutput).
Bulk merging already uses DataOutput.copyBytes(DataInput), its the most general (as it works on DataInput/Output), and its in dst, src order.
I think we should remove IndexInput.copyBytes, its not necessary.