// SmartSet class SmartSet private constructor() : AbstractSet(), MutableSet { companion object { private val ARRAY_THRESHOLD = 5 @JvmStatic fun create() = SmartSet() @JvmStatic fun create(set: Collection): SmartSet = TODO() } private var data: Any? = null override var size: Int = 0 override fun iterator(): MutableIterator = TODO() override fun add(element: T): Boolean = TODO() override fun clear() { data = null size = 0 } override fun contains(element: T): Boolean = when { size == 0 -> false size == 1 -> data == element size < ARRAY_THRESHOLD -> element in data as Array else -> element in data as Set } }