anchor.diff:                          !r
                   o?("$") <- tag
                   cases.[tag] |> snd |> Array.iter (fun (from, ``to``, dec) ->
  -                    o?(from) <- dec () (x?(``to``)))
  +                    match from with
  +                    | null -> // inline record
  +                        o?("$0") <- dec () x
  +                    | from -> // normal args
  +                        o?(from) <- dec () (x?(``to``)))
                   o))
   
       let Array decEl =
  
positive.code:                                         k (J.NewArray [cString ("$" + string j); cString n; e] :: es))
                                  |> snd
                                  <| []
                              | _ -> fail "Inline record not supported"
                      )
                      |> snd
                      <| []
  
negative.code:                 let tagName, fields = cases.[tag]
                  if JS.TypeOf discr = JS.Kind.String then o?(discr) <- tagName
                  fields |> Array.iter (fun (from, ``to``, enc) ->
                      match from with
                      | null -> // inline record
                          let record = enc () (x?("$0"))
                          JS.ForEach record (fun f -> o?(f) <- record?(f); false)
                      | from -> // normal args
                          o?(``to``) <- enc () (x?(from)))
                  o))
  
      let Array (encEl: unit -> 'T -> obj) =
  