func (wrapper *ChainWrapper) FoldR(cb Collector, initial Object) *ChainWrapper {
	return wrapper.ReduceRight(cb, initial)
}
FoldR is a chaining wrapper for #FoldR
package ugo
type ChainWrapper struct {
	Mid Seq     
	Res Object  
}
func (wrapper *ChainWrapper) Each(cb Action) *ChainWrapper {
	Each(wrapper.Mid, cb)
	return wrapper
}
func (wrapper *ChainWrapper) ForEach(cb Action) *ChainWrapper {
	return wrapper.Each(cb)
}
func (wrapper *ChainWrapper) Map(cb Callback) *ChainWrapper {
	wrapper.Mid = Map(wrapper.Mid, cb)
	wrapper.Res = wrapper.Mid
	return wrapper
}
func (wrapper *ChainWrapper) Collect(cb Callback) *ChainWrapper {
	return wrapper.Map(cb)
}
func (wrapper *ChainWrapper) Filter(cb Predicate) *ChainWrapper {
	wrapper.Mid = Filter(wrapper.Mid, cb)
	wrapper.Res = wrapper.Mid
	return wrapper
}
func (wrapper *ChainWrapper) Select(cb Predicate) *ChainWrapper {
	return wrapper.Filter(cb)
}
func (wrapper *ChainWrapper) Reject(cb Predicate) *ChainWrapper {
	wrapper.Mid = Reject(wrapper.Mid, cb)
	wrapper.Res = wrapper.Mid
	return wrapper
}
func (wrapper *ChainWrapper) Reduce(cb Collector, initial Object) *ChainWrapper {
	wrapper.Res = Reduce(wrapper.Mid, cb, initial)
	wrapper.Mid = nil
	return wrapper
}
func (wrapper *ChainWrapper) Inject(cb Collector, initial Object) *ChainWrapper {
	return wrapper.Reduce(cb, initial)
}
func (wrapper *ChainWrapper) FoldL(cb Collector, initial Object) *ChainWrapper {
	return wrapper.Reduce(cb, initial)
}
func (wrapper *ChainWrapper) ReduceRight(cb Collector, initial Object) *ChainWrapper {
	wrapper.Res = ReduceRight(wrapper.Mid, cb, initial)
	wrapper.Mid = nil
	return wrapper
}