@classmethod
def wrap(cls, visitors, item, parent=None):
    """ Create an instance of Item, wrapping the provided object """
    for visitor in visitors:
        if visitor.is_this_type(item, parent):
            return visitor(visitors, item, parent)
    raise TypeError('Unhandled item {}'.format(item))
