Like :py:meth:`normalize.visitor.VisitorPattern.unpack`, but
        returns a getter which just returns the property, and a collection
        getter which returns a set with a single item in it.

def scantypes(cls, value, value_type, visitor):
        """Like :py:meth:`normalize.visitor.VisitorPattern.unpack`, but
        returns a getter which just returns the property, and a collection
        getter which returns a set with a single item in it.
        """

        item_type_generator = None
        if issubclass(value_type, Collection):

            def get_item_types():
                if isinstance(value_type.itemtype, tuple):
                    # not actually supported by Collection yet, but whatever
                    for vt in value_type.itemtype:
                        yield (vt, vt)
                else:
                    yield value_type.itemtype, value_type.itemtype

            item_type_generator = get_item_types()

        propget = None
        if issubclass(value_type, Record):
            def propget(prop):
                return prop

        return propget, item_type_generator