'return complexes such that no bounding rectangles of non-conjugate
roots would intersect if slid horizontally or vertically/'

@classmethod
def _refine_complexes(cls, complexes):

    while complexes:
        for (i, (u, f, k)) in enumerate(complexes):
            for (j, (v, g, m)) in enumerate(complexes[(i + 1):]):
                (u, v) = u.refine_disjoint(v)
                complexes[((i + j) + 1)] = (v, g, m)
            complexes[i] = (u, f, k)
        N = ((len(complexes) // 2) - 1)
        uu = set([(u.ax, u.bx) for (u, _, _) in complexes])
        u = uu.pop()
        if (sum([((u[1] <= v[0]) or (v[1] <= u[0])) for v in uu]) < N):
            for (i, (u, f, k)) in enumerate(complexes):
                u = u._inner_refine()
                complexes[i] = (u, f, k)
        else:
            break
    return complexes
