def cast_to_swimlane(self, value):
        """Restore swimlane format, attempting to keep initial IDs for any previously existing values"""
        value = super(ListField, self).cast_to_swimlane(value)

        if not value:
            return None

        # Copy initial values to pop IDs out as each value is hydrated back to server format, without modifying initial
        # cache of value -> list(ids) map
        value_ids = deepcopy(self._initial_value_to_ids_map)

        return [self._build_list_item(item, value_ids[item].pop(0) if value_ids[item] else None) for item in value]
Restore swimlane format, attempting to keep initial IDs for any previously existing values