anchor.diff:  /// A threaded 2d render process.
   type RenderThread2d (createRenderer2d) =
   
  -    let mutable threadOpt = None
  +    let mutable taskOpt = None
       let startedLock = obj ()
       let mutable started = false
       let terminatedLock = obj ()
  
positive.code:             | None -> () // ignore invalid swap order
  
          member this.Terminate () =
              match threadOpt with
              | Some thread ->
                  match this.Started with false -> failwithumf () | true -> ()
                  lock terminatedLock (fun () ->
                      if terminated then raise (InvalidOperationException "Redundant Terminate calls.")
                      terminated <- true)
                  thread.Join ()
              | None -> raise (InvalidOperationException "Cannot terminate before starting.")
negative.code:             lock terminatedLock (fun () -> terminated)
  
          member this.Start () =
              let task = new Task ((fun () -> this.Run ()), TaskCreationOptions.LongRunning)
              taskOpt <- Some task
              task.Start ()
              while not this.Started do Thread.Yield () |> ignore<bool>
  
          member this.EnqueueMessage message =
  