So the contest I was running is over, with a startling ZERO entries. I guess no one wanted $25 to ThinkGeek.com.
The answer? Take a look at these two lines of code:
Dim typeName As
String = Microsoft.VisualBasic.Information.TypeName(objectProvider.GetObject)
Dim t As Type = Type.GetType(typeName, True, True)
Got it yet? Ok, let's review.
The TypeName method returns the underlying type name for an object, which in this case is a System.__ComObject. The underlying object that System.__ComObject is representing could be any serializable object.
The next line then attempts to cast the object given the type name. The problem? Microsoft.VisualBasic.Information.TypeName does not return a fully qualified name, and the custom type may not be found.
More info - http://msdn2.microsoft.com/en-us/library/microsoft.visualbasic.information.typename(vs.80).aspx