anchor.diff:  /// A 2d render process that may or may not be threaded.
   type RenderProcess2d =
       interface
  +        abstract Started : bool
           abstract Terminated : bool
           abstract Start : unit -> unit
           abstract Submit : Vector2 -> Vector2 -> Vector2 -> RenderMessage2d List -> unit
  
positive.code: 
                  // create renderer
                  let renderer = createRenderer2d window : Renderer2d
  
                  // loop until terminated
                  while not (this :> RenderProcess2d).Terminated do
  
negative.code: 
          member this.Swap () =
              lock swapLock (fun () ->
                  if swap then raise (InvalidOperationException "Redundant Swap calls.")
                  swap <- true)
  
          member this.Terminate () =
              lock terminatedLock (fun () ->
                  if terminated then raise (InvalidOperationException "Redundant Terminate calls.")
                  terminated <- true)