anchor.diff:                       | r -> Branch(p1, b1, l1, r))
               elif b2 < b1
               then 
  -                if p1 land (b2 - 1) <> p2
  +                if p1 &&& (b2 - 1) <> p2
                   then newbranch p1 t1 p2 t2
  -                elif p1 land b2 = 0
  +                elif p1 &&& b2 = 0
                   then 
                       (match combine op z t1 l2 with
                        | Empty -> r2
  
positive.code:                 then Leaf(h, define_list (x, y) l)
                  else newbranch h t k (Leaf(k, [x, y]))
              | Branch(p, b, l, r) -> 
                  if k land (b - 1) <> p
                  then newbranch p t k (Leaf(k, [x, y]))
                  elif k land b = 0
                  then Branch(p, b, upd l, r)
                  else Branch(p, b, l, upd r)
          upd
  
negative.code:                 else Leaf(h1, l)
              else newbranch h1 t1 h2 t2
          | (Leaf(k, lis) as lf), (Branch(p, b, l, r) as br) -> 
              if k &&& (b - 1) = p
              then 
                  if k &&& b = 0
                  then 
                      (match combine op z lf l with
                       | Empty -> r
  