docs: 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