anchor.diff:          | Some v -> dec v
           | None -> raise DecoderException
   
  +let isInlinableRecordCase (uci: Reflection.UnionCaseInfo) =
  +    let fields = uci.GetFields()
  +    fields.Length = 1 &&
  +    fields.[0].Name = "Item" &&
  +    FST.IsRecord fields.[0].PropertyType
  +
   let unmakeList<'T> (dV: obj -> Encoded) (x: obj) =
       EncodedArray [
           for v in unbox<list<'T>> x ->
  
positive.code:         FST.GetUnionCases(t, flags)
          |> Array.map (fun c ->
              let mk = FSV.PreComputeUnionConstructor(c, flags)
              let fs =
                  c.GetFields()
                  |> Array.mapi (fun k f ->
                      i.GetEncodedUnionFieldName f k, decodeOptionalField dD i f f.PropertyType)
              (mk, fs))
  
negative.code: let defaultEncodeUnionTag _ (tag: int) =
      Some ("$", EncodedNumber (string tag))
  
  /// Some (Some x) if tagged [<NameUnionCases x>];
  /// Some None if tagged [<NamedUnionCases>];
  /// None if not tagged.
  let getDiscriminatorName (t: System.Type) =
      t.GetCustomAttributesData()
      |> Seq.tryPick (fun cad ->
  