@classmethod
def fix_non_manifold(cls, context, sides):
    """naive iterate-until-no-more approach for fixing manifolds"""
    total_non_manifold = cls.count_non_manifold_verts(context)
    if not total_non_manifold:
        return
    bm_states = set()
    bm_key = cls.elem_count(context)
    bm_states.add(bm_key)
    while True:
        cls.fill_non_manifold(sides)
        cls.delete_newly_generated_non_manifold_verts()
        bm_key = cls.elem_count(context)
        if bm_key in bm_states:
            break
        else:
            bm_states.add(bm_key)
