private string GetTypeNameDebug(RuntimeTypeHandle rtth)
        {
            string result;

            if (RuntimeAugments.IsGenericType(rtth))
            {
                RuntimeTypeHandle[] typeArgumentsHandles;
                RuntimeTypeHandle   openTypeDef = RuntimeAugments.GetGenericInstantiation(rtth, out typeArgumentsHandles);;
                result = GetTypeNameDebug(openTypeDef) + "<";
                for (int i = 0; i < typeArgumentsHandles.Length; i++)
                {
                    result += (i == 0 ? "" : ",") + GetTypeNameDebug(typeArgumentsHandles[i]);
                }
                return(result + ">");
            }
            else
            {
                System.Reflection.Runtime.General.QTypeDefinition qTypeDefinition;

                // Check if we have metadata.
                if (Instance.TryGetMetadataForNamedType(rtth, out qTypeDefinition))
                {
                    return(qTypeDefinition.NativeFormatHandle.GetFullName(qTypeDefinition.NativeFormatReader));
                }
            }

            result = "EEType:0x";
            ulong num = (ulong)RuntimeAugments.GetPointerFromTypeHandle(rtth);

            int          shift     = IntPtr.Size * 8;
            const string HexDigits = "0123456789ABCDEF";

            while (shift > 0)
            {
                shift -= 4;
                int digit = (int)((num >> shift) & 0xF);
                result += HexDigits[digit];
            }
            return(result);
        }