namespace Invercargill { public abstract class StickyPromotion : EnumerableProxy, Promotion { public abstract Enumerable wrap(Enumerable enumerable); protected abstract Enumerable new_wrap(Enumerable enumerable); public abstract bool can_wrap(GLib.Type element_type); public new TPromotion where(owned PredicateDelegate predicate) { return (TPromotion)new_wrap(inner.where((owned)predicate)); } public new TPromotion sort(owned CompareDelegate compare) { return (TPromotion)new_wrap(inner.sort((owned)compare)); } public new TPromotion concat(Enumerable other) { return (TPromotion)new_wrap(inner.concat(other)); } public new TPromotion take(int count) { return (TPromotion)new_wrap(inner.take(count)); } public new TPromotion skip(int count) { return (TPromotion)new_wrap(inner.skip(count)); } public new TPromotion with(T item, uint times = 1) { return (TPromotion)new_wrap(inner.with(item, times)); } public new TPromotion seal() { return (TPromotion)new_wrap(inner.seal()); } public new TPromotion cache() { return (TPromotion)new_wrap(inner.cache()); } public new TPromotion act(ItemDelegate handler) { return (TPromotion)new_wrap(inner.act(handler)); } public new TPromotion debug_trace(owned TransformDelegate stringifier, string additional_message = "", owned DebugOutputDelegate? output_func = null, bool formatting = true) { return (TPromotion)new_wrap(new TraceEnumerable(this, get_info(), (owned)stringifier, additional_message, (owned)output_func, formatting)); } public new TPromotion debug_type(string additional_message = "", DebugOutputDelegate? output_func = null, bool formatting = true) { DebugPrinter.print_enumerable_information(get_info(), additional_message, output_func, formatting); return (TPromotion)wrap(inner); } } }