AbstractList gives a mostly effecient spliterator for RandomAccess subclasses.
While subclasses can certainly do better by abusing internals, this one
won't display the terrible splitting performance that the Iterator based one
from the root List interface does.
We should document this fact (and make it an assurance) so subclassers don't
feel obligated to write their own Spliterator to not get terrible parallel
performance.
Also make the spliterator late-binding, bringing them into line with the default implementations in the List and BigList classes.
AbstractList gives a mostly effecient spliterator for RandomAccess subclasses. While subclasses can certainly do better by abusing internals, this one won't display the terrible splitting performance that the Iterator based one from the root List interface does.
We should document this fact (and make it an assurance) so subclassers don't feel obligated to write their own Spliterator to not get terrible parallel performance.
Also make the spliterator late-binding, bringing them into line with the default implementations in the List and BigList classes.
Same for AbstractBigList.