def _mkUniq(collection, candidate, ignorcase = False, postfix = None):
    """
    Repeatedly changes `candidate` so that it is not found in the `collection`.
    Useful when choosing a unique column name to add to a data frame.
    """
    if ignorcase:
        col_cmp = [i.lower() for i in collection]
        can_cmp = candidate.lower()
    else:
        col_cmp = collection
        can_cmp = candidate
    
    can_to = "_" + can_cmp if postfix is None else can_cmp + postfix
    if can_to in col_cmp:
        res = _mkUniq(col_cmp, can_to, ignorcase, postfix)
    else:
        res = can_to

    return res