 
 	// MARK: Primitive methods
 
+	/// True iff `element` is in the receiver, as defined by its hash and equality.
 	public func contains(element: Element) -> Bool {
 		return values[element] != nil
 	}
 
+	/// Inserts `element` into the receiver, if it doesn’t already exist.
 	public mutating func insert(element: Element) {
 		values[element] = Unit()
 	}
 
+	/// Removes `element` from the receiver, if it’s a member.
 	public mutating func remove(element: Element) {
 		values.removeValueForKey(element)
 	}

public struct Set<Element: Hashable> {
	// MARK: Constructors

	public init<S: SequenceType where S.Generator.Element == Element>(_ sequence: S) {
		self.values = [:]
		extend(sequence)
	}

	public init() {
		self.values = [:]
	}

	public init(minimumCapacity: Int) {
		self.values = [Element:Unit](minimumCapacity: minimumCapacity)
	}


/// Set is reducible.
extension Set {
	/// Combines each element of the receiver with an accumulator value using `combine`, starting with `initial`.
	public func reduce<Into>(initial: Into, combine: (Into, Element) -> Into) -> Into {
		return Swift.reduce(self, initial, combine)
	}
