anchor.diff:                  JS.ForEach o (fun k -> d.[k] <- o?(k); false)
                   d))
   
  -[<AutoOpen>]
  -module private Macro =
  +module private MacroInternals =
   
       module Q = WebSharper.Core.Quotations
       module R = WebSharper.Core.Reflection
       module T = WebSharper.Core.Reflection.Type
       module J = WebSharper.Core.JavaScript.Core
       module JI = WebSharper.Core.Json.Internal
  -    module M = WebSharper.Core.Macros
       type FST = Microsoft.FSharp.Reflection.FSharpType
       type T = WebSharper.Core.Reflection.Type
       type E = J.Expression
  
positive.code:                 x)
          | Choice2Of2 msg -> failwithf "%A: %s" t msg
  
      type SerializeMacro() =
  
          let encode name warn tr t arg =
              let enc = getEncoding name cCallE warn tr t
              J.Application(J.Application(enc, []), [arg])
  
          let Encode warn tr t arg =
              encode "Encode" warn tr t (tr arg)
  
          let Serialize warn tr t arg =
              cCallG ["JSON"] "stringify" [encode "Serialize" warn tr t (tr arg)]
  
          let decode name warn tr t arg =
              let dec = getEncoding name cCallD warn tr t
              J.Application(J.Application(dec, []), [arg])
  
          let Decode warn tr t arg =
              decode "Decode" warn tr t (tr arg)
  
          let Deserialize warn tr t arg =
              decode "Deserialize" warn tr t (cCallG ["JSON"] "parse" [tr arg])
  
  
          interface M.IMacro with
              member this.Translate(q, tr) =
  
negative.code:                         warn tr t x
                  | _ -> failwith "Invalid macro invocation"
  
  open Macro
  
  /// Encodes an object in such a way that JSON stringification
  /// results in the same readable format as Sitelets.
  [<Macro(typeof<SerializeMacro>)>]
  