``` sealed class DString { class Empty private...
# announcements
a
Copy code
sealed class DString {
    class Empty private constructor() : DString() {
        companion object {
            val empty = Empty()
        }
    }
    class NonEmpty private constructor(val s: String) : DString() {
        companion object {
            @Deprecated("Use [DString.create]")
            fun create(s: String) = if (s.isNotEmpty()) NonEmpty(s) else Empty.empty
        }
    }

    companion object {
        @Suppress("DEPRECATION")
        fun create(s: String?) = s?.let { NonEmpty.create(it) } ?: Empty.empty
    }
}