anchor.diff:              ctor values' |> fastUnbox<'Union>
   
           let accepter (v : VisitState) (u : 'Union) =
  -            let tag = tagReader.Invoke u
  +            let tag = tagReader u
               let _,reader,_,_,picklers = caseInfo.[tag]
               let values = reader u
               for i = 0 to picklers.Length - 1 do
  
positive.code:         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 caseInfo =
              ucis
  
negative.code:                 containsAttr<CustomEqualityAttribute> ty 
                  || containsAttr<ReferenceEqualityAttribute> ty
  
          let ucis = FSharpType.GetUnionCases(ty, allMembers)
          let tagSerializer = new UnionCaseSerializationHelper(ucis |> Array.map (fun u -> u.Name))
  
  #if EMIT_IL
          // resolve tag reader methodInfo
          let tagReaderMethod =
              match FSharpValue.PreComputeUnionTagMemberInfo(ty, allMembers) with
  