great job, but I have a suggestion
new Node((itvl.start + itvl.end) >>> 1);
is quite good untill
(itvl.start + itvl.end) <== 4294967295
because
4294967296 >>> 1 === 0
4294967297 >>> 1 === 0
4294967298 >>> 1 === 1
4294967299 >>> 1 === 1
4294967300 >>> 1 === 2
and so on