anchor.diff:          while not terminated do
   
               // loop until submission exists
  -            while Option.isNone submissionOpt && not terminated do
  -                Thread.Yield () |> ignore<bool>
  +            SpinWait.SpinUntil (fun () -> Option.isSome submissionOpt || terminated)
   
               // guard against early termination
               if not terminated then
  
positive.code:             task.Start ()
  
              // wait for task to finish starting
              while not started do Thread.Yield () |> ignore<bool>
  
          member this.EnqueueMessage message =
              if Option.isNone taskOpt then raise (InvalidOperationException "Render process not yet started or already terminated.")
  
negative.code: 
          member this.SubmitMessages eyePosition eyeSize eyeMargin =
              if Option.isNone taskOpt then raise (InvalidOperationException "Render process not yet started or already terminated.")
              SpinWait.SpinUntil (fun () -> not swap)
              let messagesTemp = Interlocked.Exchange (&messages, SegmentedList.make ())
              submissionOpt <- Some (messagesTemp, eyePosition, eyeSize, eyeMargin)
  
  