Like :py:meth:`normalize.visitor.VisitorPattern.reduce`, but returns
        the final dictionary to correspond to a type definition.  The default
        implementation returns just the type name, the list of properties, and
        the item type for collections.

def typeinfo(cls, propinfo, type_parameters, value_type, visitor):
        """Like :py:meth:`normalize.visitor.VisitorPattern.reduce`, but returns
        the final dictionary to correspond to a type definition.  The default
        implementation returns just the type name, the list of properties, and
        the item type for collections.
        """
        propspec = dict((prop.name, info) for prop, info in propinfo)
        ts = {'name': value_type.__name__}
        if propspec:
            ts['properties'] = propspec
        if type_parameters:
            ts['itemtype'] = type_parameters
        return ts