vmironov
inline fun <T, R> Sequence<T>.collect(collection: R, collector: (R, T) -> Unit): R { return fold(collection) { accumulator, value -> collector(accumulator, value) accumulator } }