anchor.diff:                  (Builder.emit
                     (OpCodes.Call,
                      FSharpValue.PreComputeUnionConstructorInfo
  -                    (cases.[i], B.Public ||| B.NonPublic)))
  +                    (cases.[i], B.Public)))
                   caseFields.[i]
                   caseProducts.[i] >>= fun () ->
  -               Builder.forTo 0 (caseFields.[i].Length-1) (fun j ->
  +               Builder.forTo 0 (caseFields.[i].Length-1) <| fun j ->
                   Builder.metaField
                    (typedefof<Label<_,_,_,_>>.MakeGenericType
                      [|caseFields.[i].[j].PropertyType;
  
positive.code: ////////////////////////////////////////////////////////////////////////////////
  
  module Products =
  
    let products ts = build typedefof<Pair<_, _>> ts
  
    let defineExtractAndCreate t
  
negative.code:                      choices.[i];
                       t|])
                   [|box j; box caseFields.[i].[j].Name|]
                   (Builder.overrideGetMethod "Get" t caseFields.[i].[j])))))
        elif FSharpType.IsTuple t then
          let elems = FSharpType.GetTupleElements t
          if 7 < elems.Length then
  