anchor.diff:          let cloner c t = clonerDele.Invoke(picklerss, c, t)
           let accepter v t = accepterDele.Invoke(picklerss, v, t)
   #else
  -        let tagReader = 
  -            if tagReaderMethod.IsSecurityCritical then
  -                // we can't create a delegate, so we wrap a reflection call here
  -                let f obj = tagReaderMethod.Invoke(obj, null) :?> int
  -                new Func<'Union, int>(f)
  -            else
  -                Delegate.CreateDelegate<Func<'Union,int>> tagReaderMethod
  +        let tagReader = FSharpValue.PreComputeUnionTagReader(ty, allMembers)
   
           let caseInfo =
               ucis
  
positive.code:                 containsAttr<CustomEqualityAttribute> ty 
                  || containsAttr<ReferenceEqualityAttribute> ty
  
          // resolve tag reader methodInfo
          let tagReaderMethod =
              match FSharpValue.PreComputeUnionTagMemberInfo(ty, allMembers) with
  
negative.code:             | :? PropertyInfo as p -> p.GetGetMethod(true)
              | :? MethodInfo as m -> m
              | _ -> invalidOp "unexpected error"
  
          let caseInfo =
              ucis
  