def split_camel_name(name, fall=False):
    """
    Split camel formated names:

    GenerateURLs => [Generate, URLs]
    generateURLsLite => [generate, URLs, Lite]
    """
    if not name:
        return []
    lastest_upper = name[0].isupper()
    idx_list = []
    for idx, char in enumerate(name):
        upper = char.isupper()
        if upper and not lastest_upper:
            idx_list.append(idx)
        elif fall and not upper and lastest_upper:
            idx_list.append(idx - 1)
        lastest_upper = upper
    l_idx = 0
    name_items = []
    for r_idx in idx_list:
        if name[l_idx:r_idx]:
            name_items.append(name[l_idx:r_idx])
        l_idx = r_idx
    if name[l_idx:]:
        name_items.append(name[l_idx:])
    return name_items
