anchor.diff:      let cases =
           FST.GetUnionCases(t, flags)
           |> Array.map (fun c ->
  +            let fields = c.GetFields()
               let fields =
  -                c.GetFields()
  +                if isInlinableRecordCase c then
  +                    FST.GetRecordFields fields.[0].PropertyType
  +                else fields
  +            let fields =
  +                fields
                   |> Array.filter (fun f ->
                       let t = f.PropertyType
                       not (t.IsGenericType && t.GetGenericTypeDefinition() = typedefof<option<_>>))
  
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:         | 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 ->
  