/// <summary>
 /// Register new
 /// <see cref="IEventCounterFactory"/>.
 /// </summary>
 /// <remarks>
 /// Register new
 /// <see cref="IEventCounterFactory"/>
 /// . Does nothing if same factory was already registered.
 /// </remarks>
 /// <param name="factory">
 ///
 /// <see cref="IEventCounterFactory"/>
 /// to be registered
 /// </param>
 public virtual void Register(IEventCounterFactory factory)
 {
     if (factory != null)
     {
         factories.Put(factory, true);
     }
 }
 /// <summary>
 /// Unregister specified
 /// <see cref="IEventCounterFactory"/>.
 /// </summary>
 /// <remarks>
 /// Unregister specified
 /// <see cref="IEventCounterFactory"/>
 /// . Does nothing if this factory wasn't registered first.
 /// </remarks>
 /// <param name="factory">
 ///
 /// <see cref="IEventCounterFactory"/>
 /// to be unregistered
 /// </param>
 /// <returns>
 ///
 /// <see langword="true"/>
 /// if specified factory was registered first
 /// </returns>
 public virtual bool Unregister(IEventCounterFactory factory)
 {
     if (factory != null)
     {
         return(factories.JRemove(factory) != null);
     }
     return(false);
 }
 /// <summary>
 /// Checks whether the specified
 /// <see cref="IEventCounterFactory"/>
 /// is registered.
 /// </summary>
 /// <param name="factory">
 ///
 /// <see cref="IEventCounterFactory"/>
 /// to be checked
 /// </param>
 /// <returns>
 ///
 /// <see langword="true"/>
 /// if the specified factory is registered
 /// </returns>
 public virtual bool IsRegistered(IEventCounterFactory factory)
 {
     if (factory != null)
     {
         return(factories.ContainsKey(factory));
     }
     return(false);
 }