Reflection VB.Net

Imports System
Imports System.Reflection
Imports System.Collections.Generic
Imports Microsoft.VisualBasic
Public Class Test
    Private Shared Sub DisplayGenericTypeInfo(ByVal t As Type)
        Console.WriteLine(t.ToString())
        Console.WriteLine(t.IsGenericTypeDefinition)
        Console.WriteLine(t.IsGenericType)
        If t.IsGenericType Then
            Dim typeArguments As Type() = t.GetGenericArguments()
            Console.WriteLine(typeArguments.Length )
            For Each tParam As Type In typeArguments
                If tParam.IsGenericParameter Then
                    Console.WriteLine(tParam.ToString() & " " & tParam.GenericParameterPosition )
                Else
                    Console.WriteLine(tParam.ToString())
                End If
            Next tParam
        End If
    End Sub
    Public Shared Sub Main()
        Dim d As New Dictionary(Of String, Test)()
        DisplayGenericTypeInfo(d.GetType())
        DisplayGenericTypeInfo(d.GetType().GetGenericTypeDefinition())
        DisplayGenericTypeInfo(GetType(String))
    End Sub 
End Class