     }
 }
 
-extension Set {
+public extension Set {
     //if processor is presented, return empty combinations
     //if processor is not presented, return all combinations
     func combination(_ length: Int? = nil, processor: ((Set<Element>) -> Void)? = nil) -> Set<Set<Element>> {

    }
}

extension Array {
    var randomIndex: Int {
        return Int(arc4random_uniform(UInt32(count)))
    }

        return results
    }
    
    func loopedIndex(before i: Int) -> Int {
        let prevIndex = index(before: i)
        return prevIndex < startIndex ? endIndex - 1 : prevIndex
    }
    
    func loopedIndex(after i: Int) -> Int {
        let nextIndex = index(after: i)
        return nextIndex >= endIndex ? startIndex : nextIndex
    }
