|  | // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | package non_null | 
|  |  | 
|  | data class Car( | 
|  | val make: String, | 
|  | val model: String, | 
|  | val year: Int, | 
|  | val plateNumber: String) | 
|  |  | 
|  | fun Collection<Car>.forMakeAndModel( | 
|  | make: String, model: String, sinceYear: Int? | 
|  | ) = this.asSequence() | 
|  | .filter { it.make == make } | 
|  | .filter { it.model == model } | 
|  | .filter { sinceYear != null && it.year >= sinceYear } | 
|  | .groupBy { it.year } | 
|  | .toSortedMap() | 
|  |  | 
|  | fun main(args: Array<String>) { | 
|  | val leaf = Car("Nissan", "Leaf", 2015, "  LEAF  ") | 
|  | val ms1 = Car("Tesla", "Model S", 2015, "  LGTM1 ") | 
|  | val ms2 = Car("Tesla", "Model S", 2017, "  LGTM2 ") | 
|  | val m3 = Car("Tesla", "Model 3", 2018, "  LGTM3 ") | 
|  | val cars: List<Car> = mutableListOf(leaf, ms1, ms2, m3) | 
|  | println(cars.forMakeAndModel("Tesla", "Model S", null)) | 
|  | } |