/// <summary> /// CTOR /// </summary> /// <param name="message">optional additional message</param> /// <param name="threadId">thread id of thread where ex thrown from</param> /// <param name="inner">lock recursion exception</param> /// <exception cref="ArgumentNullException"><paramref name="inner"/> was null.</exception> public RwLockAlreadyHeldThreadException([CanBeNull] string message, int threadId, [NotNull] LockRecursionException inner) : base(inner ?? throw new ArgumentNullException(nameof(inner)), threadId, CreateMessage(message, threadId, inner)) =>
/// <summary> /// CTOR /// </summary> /// <param name="threadId">thread id of thread where ex thrown from</param> /// <param name="inner">lock recursion exception</param> /// <exception cref="ArgumentNullException"><paramref name="inner"/> was null.</exception> public RwLockAlreadyHeldThreadException(int threadId, [NotNull] LockRecursionException inner) : this(null, threadId, inner) { }