forkWith branch fun R trunk = relabelAt l (Node l fun trunk branch)
                             where l = lab trunk
forkWith branch fun R trunk = relabelAt l (Node l fun trunk branch)
                             where l = lab trunk
forkWith branch fun R trunk = relabelAt l (Node l fun trunk branch)
                             where l = lab trunk