// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import Foundation public extension Set { mutating func insert(contentsOf value: Set?) { guard let value: Set = value else { return } value.forEach { self.insert($0) } } func inserting(_ value: Element?) -> Set { guard let value: Element = value else { return self } var updatedSet: Set = self updatedSet.insert(value) return updatedSet } func inserting(contentsOf value: Set?) -> Set { guard let value: Set = value else { return self } var updatedSet: Set = self value.forEach { updatedSet.insert($0) } return updatedSet } func removing(_ value: Element?) -> Set { guard let value: Element = value else { return self } var updatedSet: Set = self updatedSet.remove(value) return updatedSet } mutating func popRandomElement() -> Element? { guard let value: Element = randomElement() else { return nil } self.remove(value) return value } }