Use min-heap invariant for OR iterator's children. This helps to avoid iterating through all children in reachedEnd(), peek() and allows early-stopping in consume() and advance().
Before this patch: 4710391415
After this patch: 6104649571
Overhead: ~30%
NIT: use triple-slash comments.
NIT: LHS > RHS seems to be exactly what's defined by this function. Maybe mention peek() to explain how actual comparison works?