/// <summary>
 /// Used by the <see cref="RingBuffer{T}"/> as a polymorphic constructor.
 /// </summary>
 /// <param name="option">strategy to be used.</param>
 /// <returns>a new instance of the ClaimStrategy</returns>
 public static IClaimStrategy GetInstance(ClaimStrategyOption option)
 {
     switch (option)
     {
         case ClaimStrategyOption.Multithreaded:
             return new MultiThreadedStrategy();
         case ClaimStrategyOption.SingleThreaded:
             return new SingleThreadedStrategy();
         default:
             throw new InvalidOperationException("Option not supported");
     }
 }
        /// <summary>
        /// Used by the <see cref="RingBuffer{T}"/> as a polymorphic constructor.
        /// </summary>
        /// <param name="option">strategy to be used.</param>
        /// <returns>a new instance of the ClaimStrategy</returns>
        public static IClaimStrategy GetInstance(ClaimStrategyOption option)
        {
            switch (option)
            {
            case ClaimStrategyOption.Multithreaded:
                return(new MultiThreadedStrategy());

            case ClaimStrategyOption.SingleThreaded:
                return(new SingleThreadedStrategy());

            default:
                throw new InvalidOperationException("Option not supported");
            }
        }