def getAllAroundBRHL(possibleGenesD, rHitsL):
    """Given a matrix of reciprocal hit dictionaries in rHitsL, and a dict
of possible hits, return a list of all around best reciprocal hits. In
the form of a list of lists, where each sublist is one set of
orthologs."""
    aabrhHardCoreL = []
    genesL = list(possibleGenesD.keys())
    genesL.sort()
    for gene in genesL:
        hitsT = possibleGenesD[gene]
        isOrth = True
        for hit1Index in range(len(hitsT)):
            hit1 = hitsT[hit1Index]
            for hit2Index in range(hit1Index + 1, len(hitsT)):
                hit2 = hitsT[hit2Index]
                sp1sp2Dict = rHitsL[hit1Index + 1][hit2Index + 1]
                match = sp1sp2Dict.get(hit1)
                if match != hit2:
                    isOrth = False
                    break
            if not isOrth:
                break
        if isOrth:
            aabrhHardCoreL.append((gene,) + hitsT)
    return aabrhHardCoreL
