anchor.diff:  
       [<JavaScript>]
       static member PrepareTemplateStrict (baseName: string) (name: option<string>) (els: Node[]) =
  -        if Docs.LoadedTemplates.ContainsKey(Doc'.ComposeName baseName name) then () else
           let convertAttrs (el: Dom.Element) =
               let attrs = el.Attributes
               let toRemove = [||]
  
positive.code:                 | n ->
                      let name = n.GetAttribute "ws-children-template"
                      n.RemoveAttribute "ws-children-template"
                      Doc'.PrepareTemplateStrict baseName (Some name) (DomUtility.ChildrenArray n)
                      run ()
              | n ->
                  let name = n.GetAttribute "ws-template"
  
negative.code:                         | null -> convert el el.FirstChild
                          | name ->
                              el.RemoveAttribute("ws-children-template")
                              Doc'.PrepareTemplate baseName (Some name) (fun () -> DomUtility.ChildrenArray el)
                      | name -> Doc'.PrepareSingleTemplate baseName (Some name) el
                  convert p next
          let fakeroot = Doc'.FakeRoot els
          Docs.LoadedTemplates.[Doc'.ComposeName baseName name] <- fakeroot
          convert fakeroot els.[0]
  
      [<JavaScript>]
      static member PrepareTemplate (baseName: string) (name: option<string>) (els: unit -> Node[]) =
          if not (Docs.LoadedTemplates.ContainsKey(Doc'.ComposeName baseName name)) then
              let els = els()
              for el in els do
                  match el.ParentElement with
                  | null -> ()
                  | p -> p.RemoveChild(el) |> ignore
              Doc'.PrepareTemplateStrict baseName name els
  
      [<JavaScript>]
      static member LoadLocalTemplates baseName =
  