 /// of a collection to `MutableCollectionAlgorithms` to get these customization
 /// points to be used from other algorithms defined on
 /// `MutableCollectionAlgorithms`.
-public protocol MutableCollectionAlgorithms : MutableCollection
-where SubSequence : MutableCollectionAlgorithms
+public protocol MutableCollectionAlgorithms: MutableCollection
+where SubSequence: MutableCollectionAlgorithms
 {
   /// Rotates the elements of the collection so that the element
   /// at `middle` ends up first.


// Conformances of common collection types to MutableCollectionAlgorithms.
// If rotate was a requirement of MutableCollection, these would not be needed.
extension Array : MutableCollectionAlgorithms {}
extension ArraySlice : MutableCollectionAlgorithms {}
extension Slice : MutableCollectionAlgorithms
where Base: MutableCollection {}

extension MutableCollection {

  }
}

extension Concatenation: BidirectionalCollection
where Base1: BidirectionalCollection, Base2: BidirectionalCollection {
  public func index(before i: Index) -> Index {
    assert(i != startIndex, "Can't advance before startIndex")
