         forEach(action)
     }
     
+    /// Return `true` if the predicate returns `true` for all elements of `self`
     public func all(@noescape predicate: (Self.Generator.Element) -> Bool) -> Bool {
         for element in self {
             guard predicate(element) else { return false }

}

extension SequenceType {
    public func mapFirst<T>(@noescape transform: (Self.Generator.Element) -> T?) -> T? {        
        for value in self {
            if let result = transform(value) { return result }

        return true
    }
    
    /// Return `true` if the predicate returns `true` for any element in `self`
    public func any(@noescape predicate: (Self.Generator.Element) -> Bool) -> Bool {
        for element in self {
            if predicate(element) { return true }
