private static string GetTypeName(ITypeInfoProvider type)
        {
            try
            {
                var sb = new StringBuilder();

                var name = type.Name ?? type.FullName;

                if (type.IsGenericType)
                {
                    int lastIndexOf = name.LastIndexOf('`');
                    if (lastIndexOf != -1)
                    {
                        name = name.Substring(0, lastIndexOf);
                    }
                }
                sb.Append(name);

                if (type.IsGenericType || type.IsGenericTypeDefinition)
                {
                    sb.Append("<");
                    sb.Append(string.Join(", ", type.GetGenericArguments().Select(a => GetTypeName(a))));
                    sb.Append(">");
                }

                return(Normalizer.Normalize(sb.ToString()));
            }
            catch
            {
                Console.WriteLine("Exception stringifying type. Type details: \r\n" + type);
                throw;
            }
        }