Iterates union using three functions to handle each intersection case separately.
binary function that accepts left side key (and left side value)
trinary function that accepts left side key, (left side value,) and right side value
binary function that accepts right side key (and right side value)
See Implementation
Iterates union using three functions to handle each intersection case separately.