'Uses the LU index, which is much faster than looking up each LU definition
if only the names and IDs are needed.'

def lu_ids_and_names(self, name=None):

    if (not self._lu_idx):
        self._buildluindex()
    return {luID: luinfo.name for (luID, luinfo) in self._lu_idx.items() if ((luinfo.status not in self._bad_statuses) and ((name is None) or (re.search(name, luinfo.name) is not None)))}
