anchor.diff:                          |]
                       fun tag -> Some (n, tags.[tag])
               GetEncodedUnionFieldName = fun p -> let n = p.Name in fun _ -> n
  +            RepresentNullUnionsAsAbsentField = true
               Pack = flatten
           }
   
  
positive.code:         | _ ->
              raise DecoderException
  
  let isOptionalField (mi: System.Reflection.MemberInfo) (mt: System.Type) =
      mt.IsGenericType &&
      mt.GetGenericTypeDefinition() = typedefof<option<_>> &&
      (mi.GetCustomAttributes(false)
      |> Array.exists (fun t -> t.GetType() = typeof<A.OptionalFieldAttribute>))
  
  let encodeOptionalField dE (i: FormatSettings) (mi: System.Reflection.MemberInfo) (mt: System.Type) : obj -> option<Encoded> =
      if isOptionalField mi mt then
          let vt = mt.GetGenericArguments().[0]
          let enc = dE vt
          let ucis = FST.GetUnionCases(mt, flags)
  
negative.code:             GetUnionTag = defaultGetUnionTag
              EncodeUnionTag = defaultEncodeUnionTag
              GetEncodedUnionFieldName = fun _ i -> "$" + string i
              RepresentNullUnionsAsAbsentField = false
              Pack = pack
          }
  
  