anchor.diff:                    | _ -> false) -> None
   
   module RuleSet =
  -  type RuleSet = {rules: HashEqMap<Type, array<Rule<Type>>>; tree: TyTree<Rule<Type>>}
  +  type RuleSet = {
  +    env: Dictionary<Type, array<Rule<Type>>>
  +    rules: HashEqSet<Type>
  +    tree: TyTree<Rule<Type>>
  +  }
   
     let hasInferenceRules (ty: Type) =
       ty.GetCustomAttributes<InferenceRules> true
  
positive.code:   let mutable private counter = 0L
  
    let newMapper () =
      let v2w = System.Collections.Generic.Dictionary<_, _> ()
      fun v ->
        match v2w.TryGetValue v with
         | (true, w) -> w
  
negative.code:     o.GetType ()
      |> collectRules
  
    let newEmpty env = {env = env; rules = HashEqSet.empty; tree = TyTree.build []}
  
    let maybeAddRules (o: obj) ruleSet =
      match o with
  