/// <summary>
        /// Gets the <see cref="ClrThread"/> by managed ThreadID specified in <paramref name="threadObj"/>.
        /// </summary>
        /// <param name="threadObj">The thread object.</param>
        /// <returns></returns>
        public static ClrThread GetByAddress([ClrObjAndTypeNotEmpty] ClrObject threadObj)
        {
            ClrAssert.ObjectNotNullTypeNotEmpty(threadObj);
            var tp = threadObj.Type;
            var id = threadObj.GetInt32Fld("m_ManagedThreadId");

            return(tp.Heap.Runtime.Threads.FirstOrDefault(t => t.ManagedThreadId == id));
        }