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