anchor.diff:                          && isCompilerGeneratedInterfaceMethod ty typeof<IStructuralComparable> "CompareTo" [|typeof<obj>; typeof<IComparer>|]
                           && isCompilerGeneratedInterfaceMethod ty typeof<IComparable> "CompareTo" [|typeof<obj>|]
                       | _ -> false
  -
  -                let makeGenericType<'a> tys =
  -                    let typedef = typedefof<'a>
  -                    typedef.MakeGenericType tys
  +#else
  +                let hasFSharpCompilerGeneratedEquality (_:Type) = false
  +                let hasFSharpCompilerGeneratedComparison (_:Type) = false
  +
  +#endif
   
                   let takeFirstNonNull items =
                       let rec takeFirst idx =
  
positive.code:                   interface IEqualityComparerInfo with
                      member __.Info = EqualityComparerInfo.ER }
  
  
  #if FX_ATLEAST_40 // should probably create some compilation flag for this stuff
              module GenericSpecializeEquals =
                  let makeInstance (ct:Type) (def:Type) : obj =
                      let concrete = def.MakeGenericType [|ct|]
  
negative.code:                  member __.Compare(x,y) = GenericComparison x y }
  
          let inline MakeGenericComparerWithEssence<'T>() : IComparer<'T> = 
              unboxPrim (HashCompare.makeComparer typeof<'T>)
  
          let CharComparer    = MakeGenericComparer<char>()
          let StringComparer  = MakeGenericComparer<string>()
  