partition(subrange:by:)
Moves all elements satisfying isSuffixElement
into a suffix of the collection, returning the start position of the resulting suffix.
mutating func partition(subrange: Range<Index>, by belongsInSecondPartition: (Element) throws -> Bool) rethrows -> Index