anchor.diff:          | Fable.NewTuple (values, isStruct) -> makeTuple com ctx r isStruct values
           | Fable.NewList (headAndTail, typ) -> makeList com ctx r typ headAndTail
           | Fable.NewOption (value, typ, isStruct) -> makeOption com ctx r typ value isStruct
  -        | Fable.NewRecord (values, entRef, genArgs) ->
  -            let isStruct = (com.GetEntity entRef).IsValueType
  -            makeRecord com ctx r isStruct values entRef genArgs
  +        | Fable.NewRecord (values, entRef, genArgs) -> makeRecord com ctx r values entRef genArgs
           | Fable.NewAnonymousRecord (values, fieldNames, genArgs, isStruct) -> makeTuple com ctx r isStruct values
  -        | Fable.NewUnion (values, tag, entRef, genArgs) ->
  -            makeUnion com ctx r values tag entRef genArgs
  +        | Fable.NewUnion (values, tag, entRef, genArgs) -> makeUnion com ctx r values tag entRef genArgs
   
       let calcVarAttrsAndOnlyRef com ctx (e: Fable.Expr) =
           let t = e.Type
  
positive.code:             if List.isEmpty values
              then callee
              else callFunction com ctx None callee values
          if isCopyableEntity com Set.empty ent || ent.FullName = Types.result
          then expr
          else expr |> maybeWrapSmartPtr ent
  
  
negative.code:         let genArgs = transformGenArgs com ctx genArgs
          let path = makeFullNamePath ent.FullName genArgs
          let expr = mkStructExpr path fields // TODO: range
          if ent.IsValueType
          then expr
          else expr |> maybeWrapSmartPtr ent
  
  