I'm implementing some mesh operations (e.g. edge collapse, edge split, edge flip etc) and need to ensure applying such operations does not cause the mesh to become non-manifold. However, I'm not sure how what things I should check for to ensure my geometry doesn't become non-manifold. Can someone tell me what those conditions/checks are? Also, how can I apply the same operation that causes the mesh to become non-manifold so that the manifoldness of the mesh is still preserved?