Does this mean the method should adjust due to what type of primitives that we are dealing with?
Are there structures that deal with these special cases nicely?
Is there a way to ensure that we can separate the primitives/create new ones to end up in different partitions? Or, perhaps we could consider the largest bounding area that contains a primitive and define that as a new face (ignoring all the inner ones)?
What "different strategy" would work for these difficult cases?