BitMappedTrie<T> update(int index, T element) { try { final Object root = modify(array, depthShift, offset + index, COPY_NODE, updateLeafWith(type, element)); return new BitMappedTrie<>(type, root, offset, length, depthShift); } catch (ClassCastException ignored) { return boxed().update(index, element); } } private NodeModifier updateLeafWith(ArrayType<T> type, T element) { return (a, i) -> type.copyUpdate(a, i, element); }
BitMappedTrie<T> prependAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return prepend(iter.reverseIterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().prepend(iter.reverseIterator(), iter.size()); } } private BitMappedTrie<T> prepend(java.util.Iterator<? extends T> iterator, int size) {
BitMappedTrie<T> appendAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return append(iter.iterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().append(iter.iterator(), iter.size()); } } private BitMappedTrie<T> append(java.util.Iterator<? extends T> iterator, int size) {
BitMappedTrie<T> update(int index, T element) { try { final Object root = modify(array, depthShift, offset + index, COPY_NODE, updateLeafWith(type, element)); return new BitMappedTrie<>(type, root, offset, length, depthShift); } catch (ClassCastException ignored) { return boxed().update(index, element); } } private NodeModifier updateLeafWith(ArrayType<T> type, T element) { return (a, i) -> type.copyUpdate(a, i, element); }
BitMappedTrie<T> appendAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return append(iter.iterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().append(iter.iterator(), iter.size()); } } private BitMappedTrie<T> append(java.util.Iterator<? extends T> iterator, int size) {
BitMappedTrie<T> prependAll(Iterable<? extends T> iterable) { final Collections.IterableWithSize<? extends T> iter = withSize(iterable); try { return prepend(iter.reverseIterator(), iter.size()); } catch (ClassCastException ignored) { return boxed().prepend(iter.reverseIterator(), iter.size()); } } private BitMappedTrie<T> prepend(java.util.Iterator<? extends T> iterator, int size) {