def METHOD_NAME(data_item):
    if isinstance(data_item, list):
        # Don't mutate a list that we're iterating on here
        # Subsequent re-entries into the stream would mutate the list further
        # and really mess things up
        data_item_copy = list(data_item[:])
        last_type = None
        for i, (element, type_) in enumerate(
            zip(data_item, self._expected_columns.values())
        ):
            last_type = type_
            if type_ == list:
                data_item_copy[i] = CSVColumnFormatter._attempt_to_listify(
                    element
                )
        if len(data_item) > len(self._expected_columns):
            # More data in the data item left...
            if last_type == list:
                # Last element was a list, so slurp the rest of the row in
                length = len(self._expected_columns)
                data_item_copy[length - 1].extend(data_item[length:])
                data_item_copy = data_item_copy[0:length]
        return data_item_copy
    # Do nothing if thing wasn't a list
    return data_item