anchor.diff:      type App<'TModel, 'TMessage> =
           {
               AppState: AppState<'TModel, 'TMessage>
  +            Init : ('TMessage -> unit) -> unit
               JsCalls: (unit -> unit) list
               Node: Node option
               CurrentTree: obj option
  
positive.code:                         let tree = renderTree state.AppState.View post state.AppState.Model
                          let rootNode = renderer.CreateElement tree
                          startElem.appendChild(rootNode) |> ignore
                          return! loop {state with CurrentTree = Some tree; Node = Some rootNode}
                      | Some rootNode, Some currentTree ->
                          let! message = inbox.Receive()
  
negative.code:         }
  
      let withStartNode selector app = { app with NodeSelector = Some selector }
      let withInit init app = { app with Init = init }
      let withSubscriber subscriberId subscriber app =
          let subsribers = app.Subscribers |> Map.add subscriberId subscriber
          { app with Subscribers = subsribers }
  