Just a couple of notes for Casey in case he has the time to see them here:

1. VerifyBuffer is called twice for each buffer before and after merge sort. I think IsInFrontOf assertion fails before entries are ever sorted separately in Y and Z.
2. You have renamed MergeSort to SeparatedSort but never changed that at the calling site.