anchor.diff:              tagDictionary.Clear()
               value |> Seq.iter (fun x -> tagDictionary.TryAdd(x, byte 0) |> ignore)
       /// Gets the monitor key used to identify monitors
  -    static member GetMonitorKey(name : string, monitorType : Type) = (name, monitorType)
  +    static member GetMonitorKey(name : string, monitorType : Type, tags : Tag array) = (name, monitorType, tags)
   
       /// Get or add a BasicCounter
       static member BasicCounter(name : string) =
  -        let monitorKey = OkanshiMonitor.GetMonitorKey(name, typeof<BasicCounter>)
  +        let monitorKey = OkanshiMonitor.GetMonitorKey(name, typeof<BasicCounter>, [||])
           let factory = fun () -> (new BasicCounter(MonitorConfig.Build(name).WithTags(OkanshiMonitor.DefaultTags)) :> IMonitor)
           monitorAgent.PostAndReply(fun reply -> GetMonitor(monitorKey, factory, reply)) :?> BasicCounter
   
  
positive.code: 
      /// Get or add a BasicTimer
      static member BasicTimer(name : string, step) =
          let monitorKey = OkanshiMonitor.GetMonitorKey(name, typeof<BasicTimer>)
          let factory = fun () -> (new BasicTimer(MonitorConfig.Build(name).WithTags(OkanshiMonitor.DefaultTags), step)) :> IMonitor
          monitorAgent.PostAndReply(fun reply -> GetMonitor(monitorKey, factory, reply)) :?> BasicTimer
  
negative.code: open System.Collections.Concurrent
  
  /// Tuple representing a key used to identify a monitor
  type MonitorKey = (string * Type * Tag array)
  /// Type representing a monitor factory
  type MonitorFactory = unit -> IMonitor
  
  