:: (ERIntApprox d, DomainIntBox box varid d, Show v1, Show v2, Show valPass)  
=> ValueSplitter box varid d v1  
> ValueCombiner box varid d v1  
> EffortIndex  
> varid  variable x (ie axis or direction) to integrate in

> d  origin in terms of variable x

> Maybe (box)  support, ie the domain on which to zip
(automatically extended to include origin when projected to x)

> Maybe valPass > Maybe valPass > [BisectionTree box varid d v1] > [BisectionTree box varid d v2]  what to do outside the support,
possibly being passed values from left/right
when leaving the support

> EffortIndex > Depth > (box) > [v1] > [v2] > Bool  should a leaf be split?

> EffortIndex > Depth > (box) > [v1] > (valPass, [v2], valPass)  integrator for a leaf containing the origin

> EffortIndex > Depth > (box) > valPass > [v1] > ([v2], valPass)  integrator over a leaf that sees the origin towards infinity

> EffortIndex > Depth > (box) > [v1] > valPass > (valPass, [v2])  integrator over a leaf that sees the origin towards +infinity

> [BisectionTree box varid d v1]  input functions

> [BisectionTree box varid d v2]  output functions
The number of output functions does not have to be
the same as the number of input functions.

Transform a bunch of bisection trees over the same domain
by integrating them in a very abstract sense.
The trees are unified in their splitting patterns in the process.
By supplying certain parameters, this function can in fact
perform numerical integration of piecewise polynomial functions.
It can be also viewed as a zipping+folding operator over bisection trees that
generates another bunch of bisection trees, synchronously traversing the original trees
from a certain point on a selected axis outwards in both directions,
carrying some data along.
