Like :py:meth:`normalize.visitor.VisitorPattern.apply`, but takes a
        property and returns a dict with some basic info.  The default
        implementation returns just the name of the property and the type in
        here.

def propinfo(cls, value, prop, visitor):
        """Like :py:meth:`normalize.visitor.VisitorPattern.apply`, but takes a
        property and returns a dict with some basic info.  The default
        implementation returns just the name of the property and the type in
        here.
        """
        if not prop:
            return {"name": value.__name__}

        rv = {"name": prop.name}
        if prop.valuetype:
            if isinstance(prop.valuetype, tuple):
                rv['type'] = [typ.__name__ for typ in prop.valuetype]
            else:
                rv['type'] = prop.valuetype.__name__
        return rv