anchor.diff:          { new Arbitrary<simmap<'k, 'v>>() with
               override x.Generator =
                   gen {
  -                    let case = rand.UniformInt(9)
  +                    let case = rand.UniformInt(11)
                       match case with
                           | 0 | 1  -> 
                               let! content = Arb.generate<list<'k * 'v>>
  
positive.code:     | Filter of obj * SimMapTree
      | MapM of obj * SimMapTree
      | ChooseM of obj * SimMapTree
  
  and simmap<'k, 'v> =
      inherit IDependent
  
negative.code:                 HMap.choose (fun k v -> f.Invoke(k,v).Value) m.Content
          }
  
      let unionWith (f : 'k -> 'a -> 'a -> 'a) (l : simmap<'k, 'a>) (r : simmap<'k, 'a>) =
          simmap { 
              expression = UnionWith(f, l.Expression, r.Expression)
              amap = AMap.unionWith f l.AMap r.AMap
              inputs = fun () -> HSet.union l.Inputs r.Inputs
              content = fun () -> HMap.unionWith f l.Content r.Content 
          }
      let choose2 (f : 'k -> Option<'a> -> Option<'a> -> Option<'a>) (l : simmap<'k, 'a>) (r : simmap<'k, 'a>) =
          simmap { 
              expression = UnionWith(f, l.Expression, r.Expression)
              amap = AMap.choose2 f l.AMap r.AMap
              inputs = fun () -> HSet.union l.Inputs r.Inputs
              content = fun () -> HMap.choose2 f l.Content r.Content 
          }
  
      let private equal (l : hmap<'k, 'v>) (r : hmap<'k, 'v>) =
          let mutable l = l
  