split0 (IntMap (WordMap m@(NonEmpty min minV (Bin max maxV l r))))
    | w2i (xor min max) < 0 = (W.r2lMap (NonEmpty max maxV r), NonEmpty min minV l)
    | w2i max < 0 = (m, Empty)
    | otherwise = (Empty, m)
split0 (IntMap (WordMap m@(NonEmpty min minV (Bin max maxV l r))))
    | w2i (xor min max) < 0 = (W.r2lMap (NonEmpty max maxV r), NonEmpty min minV l)
    | w2i max < 0 = (m, Empty)
    | otherwise = (Empty, m)
split0 (IntMap (WordMap m@(NonEmpty min minV (Bin max maxV l r))))
    | w2i (xor min max) < 0 = (W.r2lMap (NonEmpty max maxV r), NonEmpty min minV l)
    | w2i max < 0 = (m, Empty)
    | otherwise = (Empty, m)