Reflection C#

using System;
using System.Reflection;
public class Example
{
    public static void Generic(T toDisplay)
    {
        Console.WriteLine("\r\nHere it is: {0}", toDisplay);
    }
}
public class Test
{
    public static void Main()
    {
        Type ex = typeof(Example);
        MethodInfo mi = ex.GetMethod("Generic");
        DisplayGenericMethodInfo(mi);
    }
    private static void DisplayGenericMethodInfo(MethodInfo mi)
    {
        Console.WriteLine("", mi);
        Console.WriteLine("Is this a generic method definition? {0}", mi.IsGenericMethodDefinition);
        Console.WriteLine("Is it a generic method? {0}", mi.IsGenericMethod);
        Console.WriteLine("Does it have unassigned generic parameters? {0}", mi.ContainsGenericParameters);
        if (mi.IsGenericMethod)
        {
            Type[] typeArguments = mi.GetGenericArguments();
            Console.WriteLine("List type arguments ({0}):", typeArguments.Length);
            foreach (Type tParam in typeArguments)
            {
                if (tParam.IsGenericParameter){
                    Console.WriteLine("{0}  parameter position {1}" +
                        "\n declaring method: {2}",
                        tParam,
                        tParam.GenericParameterPosition,
                        tParam.DeclaringMethod);
                }
                else
                {
                    Console.WriteLine("\t\t{0}", tParam);
                }
            }
        }
    }
}