A collection traverses over something to deserialize its value.

def _deserialize(self, value, environment=None):
        """A collection traverses over something to deserialize its value."""

        if not isinstance(value, CollectionABC):
            raise exc.Invalid(self)

        items_class = self.items.__class__
        invalids = []

        # traverse items and match against validated struct
        collection = self.collection_type()

        for i, subvalue in enumerate(value):
            item = items_class(name=i)
            try:
                self.collection_pusher(collection, item.deserialize(subvalue, environment=environment))

            except exc.Invalid as ex:
                invalids.append(ex)

        if invalids:
            # on invalids this item is also ``Invalid``
            raise exc.InvalidChildren(self, invalids)

        return collection