'Given an integer index, return the (keyword, repeat) tuple that index
refers to.  For most keywords the repeat will always be zero, but it
may be greater than zero for keywords that are duplicated (especially
commentary keywords).
In a sense this is the inverse of self.index, except that it also
supports duplicates.'

def _keyword_from_index(self, idx):

    if (idx < 0):
        idx += len(self._cards)
    keyword = self._cards[idx].keyword
    keyword = Card.normalize_keyword(keyword)
    repeat = self._keyword_indices[keyword].index(idx)
    return (keyword, repeat)
