'If data.location_a is not already in the treestore, add it.
If data.location_a is in the treestore, make sure we paint it the right
color based on data.color_level
Update the child count, keep in mind that the child count for this
level is increased only when a new data.location_b is added.
:param data: The data for the new item to add.'

def _handle_first_level(self, data):

    contains_location_a = [r for r in self.treestore if (r[1] == data.location_a)]
    if (not contains_location_a):
        child_count = '(    1    )'
        color = helpers.KB_COLORS[data.color_level]
        location_a = smart_str(data.location_a, errors='ignore')
        store_iter = self.treestore.append(None, [None, location_a, 0, None, 0, color, child_count])
    else:
        assert len(contains_location_a), 1
        location_a_row = contains_location_a[0]
        location_a_b_iter = location_a_row.iterchildren()
        stored_locations_b = [r[1] for r in location_a_b_iter]
        store_iter = location_a_row.iter
        if (data.location_b not in stored_locations_b):
            child_count = ('(    %s    )' % (len(stored_locations_b) + 1))
            self.treestore[store_iter][6] = child_count
    if (data.color_level > self.treestore[store_iter][4]):
        color = helpers.KB_COLORS[data.color_level]
        self.treestore[store_iter][5] = color
