anchor.diff:  
           Builder.metaType typeof<Union<'t>> [|box cases.Length|]
            ((match FSharpValue.PreComputeUnionTagMemberInfo
  -                  (t, BindingFlags.Public ||| BindingFlags.NonPublic) with
  +                  (t, BindingFlags.Any) with
               | :? PropertyInfo as prop ->
                 Builder.overrideGetMethod "Tag" t prop
               | :? MethodInfo as meth when meth.IsStatic ->
  
positive.code:     else
        Builder.result ()
  
  /////////////////////////////////////////////////////////////////////////
  
  module Products =
  
    let products ts = build typedefof<And<_, _>> ts
  
    let defineExtractAndCreate t emitCtor (props: array<PropertyInfo>) (products: array<Type>) =
      let getField (t: Type) name =
        match t.GetField name with // Only public is ok here.
         | null -> failwithf "The %A type has no field named \"%s\"" t name
  
negative.code:          ilGen.Emit (OpCodes.Ret)
           baseArgTypes
         | cs ->
           failwithf "Type %A used as metatype base must have exactly one ctor \
                      with %d params.  Got: %A"
            baseType basePars.Length cs
      values
      |> List.iter (fun (name, field, baseType, _) ->
  