changes to disposal at end of unfold, disposes only surfaces not found in the disconnected set, to determine this, uses a static method that walks every surface in two lists, if it finds one surface that references the same surface in any spot then returns true.  This could just look at the first index of both lists since that check being false would need to return false anyway.