anchor.diff:                  let rec loop () = 
                       let m1 = e1.MoveNext() 
                       let m2 = e2.MoveNext()
  -                    (m1 = m2) && (not m1 || let e1c, e2c = e1.Current, e2.Current in ((e1c.Key = e2c.Key) && (DefaultEquality.equals e1c.Value e2c.Value) && loop()))
  +                    (m1 = m2) && (not m1 || let e1c, e2c = e1.Current, e2.Current in ((e1c.Key = e2c.Key) && (Unchecked.equals e1c.Value e2c.Value) && loop()))
                   loop()
               | _ -> false
   
  
positive.code:     member m.ChooseMonotonic<'Key2, 'Value2 when 'Key2 : comparison> (f : 'Key -> 'Value -> option<'Key2 * 'Value2>) : MapExt<'Key2,'Value2> = 
          new MapExt<'Key2,'Value2>(LanguagePrimitives.FastGenericComparer<'Key2>, MapTree.chooseiMonotonic f tree)
      
      member x.GetReference key =
          MapTree.getReference comparer 0 key tree
          
      member x.TryIndexOf key =
  
negative.code: [<System.Diagnostics.DebuggerDisplay("Count = {Count}")>]
  [<Sealed>]
  [<StructuredFormatDisplay("{AsString}")>]
  type MapExt<[<EqualityConditionalOn>]'Key,[<EqualityConditionalOn;ComparisonConditionalOn>]'Value when 'Key : comparison > internal(comparer: IComparer<'Key>, tree: MapTree<'Key,'Value>) =
  
      static let defaultComparer = LanguagePrimitives.FastGenericComparer<'Key> 
      // We use .NET generics per-instantiation static fields to avoid allocating a new object for each empty
  