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