 	///		[1, 2, 3, 4, 5].contains([1, 2]) -> true
 	///		[1.2, 2.3, 4.5, 3.4, 4.5].contains([2, 6]) -> false
 	///		["h", "e", "l", "l", "o"].contains(["l", "o"]) -> true
-	///		// It also works for other types!
 	///
 	/// - Parameter elements: array of elements to check.
 	/// - Returns: true if array contains all given items.

	///
	///		[1, 2, 2, 3, 4, 5].removeAll(2) -> [1, 3, 4, 5]
	///		["h", "e", "l", "l", "o"].removeAll("l") -> ["h", "e", "o"]
	///		// It also works for other types!
	///
	/// - Parameter item: item to remove.
	public mutating func removeAll(_ item: Element) {
		self = filter { $0 != item }
	}
    
    /// SwifterSwift: Remove all instances contained in items parameter from array.
	///
	///		[1, 2, 2, 3, 4, 5].removeAll([2,5]) -> [1, 3, 4]
	///		["h", "e", "l", "l", "o"].removeAll(["l", "h"]) -> ["e", "o"]
	///		// It also works for other types!
	///
	/// - Parameter items: items to remove.
    public mutating func removeAll(_ items: [Element]) {
		guard !items.isEmpty else { return }
		self = filter { !items.contains($0) }
	}

	///
	///		[1, 2, 2, 3, 4, 5].removeDuplicates() -> [1, 2, 3, 4, 5]
	///		["h", "e", "l", "l", "o"]. removeDuplicates() -> ["h", "e", "l", "o"]
	///
	public mutating func removeDuplicates() {
		// Thanks to https://github.com/sairamkotha for improving the method
		self = reduce([]){ $0.contains($1) ? $0 : $0 + [$1] }
	}
	
	/// SwifterSwift: Return array with all duplicate elements removed.
	///
	///		[1, 2, 2, 3, 4, 5, 5].duplicatesRemoved() -> [ 2, 5]
	///		["h", "e", "l", "l", "o"]. duplicatesRemoved() -> ["l"]
	///
	/// - Returns: an array of unique elements.
	public func duplicatesRemoved() -> [Element] {
