aid_list1 = np.array([1, 1, 2, 2, 3, 3])
    aid2_list = np.array([4, 2, 1, 9, 8, 7])
    item_lists = (np.array(aid1_list), np.array(aid2_list))

def inverable_group_multi_list(item_lists):
    """
    aid_list1 = np.array([1, 1, 2, 2, 3, 3])
    aid2_list = np.array([4, 2, 1, 9, 8, 7])
    item_lists = (np.array(aid1_list), np.array(aid2_list))
    """
    #unique_list1, inverse1 = np.unique(item1_list, return_index=True, return_inverse=True)
    import vtool as vt
    import utool as ut
    # Find uniques and groups in each individual list
    unique_lists = []
    groupx_lists = []
    for item_list in item_lists:
        unique_items, groupxs = vt.group_indices(item_list)
        unique_lists.append(unique_items)
        groupx_lists.append(groupxs)
    # Merge all indexes into a signle long list
    groups_stacked = ut.flatten(groupx_lists)
    flat_stacked, cumsum = ut.invertible_flatten2(unique_lists)
    # Find uniques in those lists
    flat_unique, stack_groups = vt.group_indices(np.array(flat_stacked))
    # Get a list of corresonding group indicies from each input list
    flat_groupx_multilist = [ut.take(groups_stacked, groupx) for groupx in stack_groups]
    # flat_unique corresponds with the aids (hence chips) the flag_groupxs
    # multilist is a list where each item is a tuple who's nth item indexes
    # into the nth input list. Ie (1, 0) is a list of indexes into the 1st chip
    # the 0th keypoint list
    return flat_unique, flat_groupx_multilist