@Override public Vector<T> appendAll(T... values) { return (Vector<T>) ImmutableList.super.appendAll(values); }
@Override default Seq<T> appendAll(T... values) { return (Seq<T>) ImmutableList.super.appendAll(values); }
@Override public IntMap<T> appendAll(T... values) { return (IntMap<T>) ImmutableList.super.appendAll(values); }
@Override default LazySeq<T> appendAll(T... values) { return (LazySeq<T>) ImmutableList.super.appendAll(values); }
@Override public DifferenceList<T> appendAll(T... values) { return (DifferenceList<T>)ImmutableList.super.appendAll(values); }
static <T, C extends ImmutableList<T>> Semigroup<C> immutableListConcat() { return (C a, C b) -> (C)a.appendAll(b); }
@Override public NonEmptyList<T> appendAll(Iterable<? extends T> value) { return of(head,tail.appendAll(value)); }
@Override public LazySeq<T> lazySeq() { return front.appendAll(back.reverse()).lazySeq(); }
private static <T> BankersQueue<T> check(Cons<T> check) { if(check.sizeBack<=check.sizeFront) return check; return new Cons((check.sizeFront + check.sizeBack), check.front.appendAll(check.back.reverse()), 0, LazySeq.empty()); }
@Override default ImmutableList<T> insertAt(int pos, T... values) { if(pos==0) return prependAll(values); if(pos>=size()) return appendAll(values); return unitIterable(IterableX.super.insertAt(pos,values)); }
@Override default Seq<T> appendAll(T... values) { return (Seq<T>) ImmutableList.super.appendAll(values); }
@Override public Vector<T> appendAll(T... values) { return (Vector<T>) ImmutableList.super.appendAll(values); }
@Override public IntMap<T> appendAll(T... values) { return (IntMap<T>) ImmutableList.super.appendAll(values); }
@Override public DifferenceList<T> appendAll(T... values) { return (DifferenceList<T>)ImmutableList.super.appendAll(values); }
@Override default LazySeq<T> appendAll(T... values) { return (LazySeq<T>) ImmutableList.super.appendAll(values); }
@Override public NonEmptyList<T> appendAll(Iterable<? extends T> value) { return of(head,tail.appendAll(value)); }
@Override public LazySeq<T> lazySeq() { return front.appendAll(back.reverse()).lazySeq(); }
private static <T> BankersQueue<T> check(Cons<T> check) { if(check.sizeBack<=check.sizeFront) return check; return new Cons((check.sizeFront + check.sizeBack), check.front.appendAll(check.back.reverse()), 0, LazySeq.empty()); }
@Override default ImmutableList<T> insertAt(int pos, T... values) { if(pos==0) return prependAll(values); if(pos>=size()) return appendAll(values); return unitIterable(IterableX.super.insertAt(pos,values)); }