anchor.diff:  
   module Fsm =
       open System
  +    open System.Threading
       open System.Collections.Concurrent
       open Rotor.Libuv.Networking
   
  
positive.code:         /// A list of machines that are bound to socket events.
          let mutable machines: Map<int64, IMachine<'c>> = Map.empty
  
          let stop =
              match loop with
              | Idle(_) ->    ()
  
              | Running(l) -> wakeup.Dispose()
                              l.Stop()
                              loop <- LoopState.Idle(l)
                              printfn "Stopped"
  
          /// Remove a machine from the list and check for any active machines
  
negative.code:     /// 
      /// This will block the calling thread until either the loop is stopped or all machines return a
      /// state of either `Done` or `Error`.
      let run (l: Loop<'c>) =
          printfn "Running on thread %i" Thread.CurrentThread.ManagedThreadId
          l.run()
          printfn "Finished running"
  
      let machine f (l: Loop<'c>) = 
          l.addMachine(f)
  