Challenge 1: Lazy Initialization — Solution class DataLoader { val expensiveData: List by lazy { println("Loading data...") listOf(1, 2, 3, 4, 5) } } fun main() { val loader = DataLoader() println("Loader created") println(loader.expensiveData) println(loader.expensiveData) } /* Output: Loader created Loading data... [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] Notes: - "Loader created" prints before "Loading data..." — proof that the lazy block hasn't run yet at construction time. - "Loading data..." only prints once, on the first access to expensiveData. The second access reuses the cached result without running the block again. - If expensiveData were never accessed at all, "Loading data..." would never print — the whole point of lazy is paying the cost only when actually needed. */