public static string GetSubjectString(this IMetadataTypeInfo type)
        {
            var attribute = type.AndAllBaseTypes()
                            .SelectMany(x => x.GetCustomAttributes(typeof(SubjectAttribute).FullName))
                            .FirstOrDefault();

            if (attribute == null)
            {
                if (type.DeclaringType == null)
                {
                    return(null);
                }

                return(type.DeclaringType.GetSubjectString());
            }

            var parameters = attribute.ConstructorArguments.Select(x =>
            {
                var typeArgument = x as IMetadataClassType;
                if (typeArgument != null)
                {
                    return(new CLRTypeName(typeArgument.Type.FullyQualifiedName).ShortName);
                }

                return((string)x);
            })
                             .ToArray();

            return(String.Join(" ", parameters));
        }