anchor.diff:  
       let actor = MailboxProcessor.Start(behaviour None)
   
  +    /// Starts the child process
       member __.Start() =
           match actor.PostAndReply Start with
           | None -> ()
           | Some e -> raise e
   
  +    /// Stops the child process
       member __.Stop() =
           match actor.PostAndReply Stop with
           | None -> ()
           | Some e -> raise e
   
  +    /// Gets the current child process, if available
       member __.CurrentProcess =
           actor.PostAndReply GetState |> Option.map snd
   
  +    /// Number of faults and restarts associated with current process instance
       member __.NumberOfRestarts =
           actor.PostAndReply GetState 
           |> Option.map (fun (ts,_) -> ts.Length)
  
positive.code:     interface IDisposable with
          member __.Dispose() = __.Stop()
  
      /// Creates a process monitor instance with supplied parameters
      static member Create(?executable:string, ?arguments:string, ?workingDirectory:string,
                              ?redirectStandardOutput:bool, ?retryPolicy:ProcessMonitorRetryPolicy, ?logger:ISystemLogger) =
  
  
negative.code:                           (procDurations |> Seq.averageBy (fun d -> d.TotalSeconds)) < 10. then None
                          else Some(TimeSpan.FromSeconds 10.) }
  
          let logger = match logger with Some l -> l | None -> NullLogger() :> _
          new ProcessMonitor(executable, arguments, workingDirectory, redirectStandardOutput, retryPolicy, logger)
  