 	}
 
 
-	
 	public func separate(isLeftElement: (Iterator.Element) throws -> Bool) rethrows -> ([Iterator.Element], [Iterator.Element]) {
 		var left = Array<Iterator.Element>()
 		var right = Array<Iterator.Element>()


public extension Sequence where Iterator.Element == String {

	
	public func joinWithSeparator(_ separator: String, lastSeparator: String) -> String {
		return joinWithSeparator(separator, lastSeparator: lastSeparator, transform: identity)
	}

	}


	public func firstMatching(predicate: (Iterator.Element) throws -> Bool) rethrows -> Iterator.Element? {
		for element in self where try predicate(element) {
			return element
