anchor.diff:              e.Children <- EmptyDoc
           | TreeDoc e ->
               e.Els <- [||]
  -            e.Holes <- [||]
  +            this.ClearHoles()
           | _ -> failwith "Invalid docNode in Elt"
           rvUpdates.Value <- View.Const()
           while (elt.HasChildNodes()) do elt.RemoveChild(elt.FirstChild) |> ignore
  
positive.code:         this.AppendDoc(Doc'.BindView (fun x -> this.Element?(id) <- x; Doc'.Empty') view)
          this.OnAfterRender(fun e -> cb e e?(id))
  
      [<Name "Append">]
      member this.AppendDoc(doc: Doc') =
          match docNode with
  
negative.code:         | TreeDoc e ->
              let after = elt.InsertBefore(JS.Document.CreateTextNode "", elt.FirstChild)
              let before = Docs.InsertBeforeDelim after doc.DocNode
              this.AddHole {
                  El = elt
                  Attr = Attrs.Empty elt
                  Children = doc.DocNode
                  Delimiters = Some (before, after)
                  ElKey = Fresh.Int()
                  Render = None
              }
          | _ -> failwith "Invalid docNode in Elt"
          rvUpdates.Value <- View.Map2Unit rvUpdates.Value doc.Updates
  
  