     }
 }
 
-public extension BidirectionalCollection {
+extension BidirectionalCollection {
     
     /// Returns the last element of the sequence that satisfies the given
     /// predicate or nil if no such element is found.

//  THE SOFTWARE.
//

public extension Collection where Self == SubSequence {
    
    /// Returns sub-sequence of `self`.
    @_inlineable
    var slice: SubSequence {
        return self
    }
}

public extension Collection {
    
    /// Returns sub-sequence of `self`.
    @_inlineable
    var slice: SubSequence {
        return self as? SubSequence ?? self[startIndex..<endIndex]
    }
}

public extension Sequence where Iterator.Element : Equatable {
    
    /// Return `true` if all of elements in `seq` is `x`.
    ///

        return _self
    }
}
extension BidirectionalCollection where Self : MutableCollection, Indices.SubSequence : BidirectionalCollection, Iterator.Element : Comparable, Indices.SubSequence.Iterator.Element == Index, Indices.Index == Index {
    
    @_inlineable
    public func nextPermute() -> Self {
