Implement I in the IDL spec.
Encode this type for the type table.
Static[hasAssert that JavaScript's x is the proper type represented by this
Type.
InternalEncode the value. This needs to be public because it is used by encodeValue() from different types.
Represents an IDL Variant
Param: fields
mapping of function name to Type