@file:Suppress("UNUSED_VARIABLE", "UNUSED_PARAMETER") import org.checkerframework.checker.tainting.qual.Untainted class LocalCheck { fun test(clean: @Untainted MutableList, cleanList2: @Untainted MutableList, t: @Untainted String?, dirty: String?) { sink(t) sink(clean[0]) val list1: List = clean update(list1) //not highlighted in current realisation, might be changed clean.add(dirty) //not highlighted in current realisation, might be changed sink(list1[0]) //warn sink(clean[0]) //warn val list3: List = cleanList2 sink(list3[0]) sink(dirty) //warn var clean2 = t + dirty sink(clean2) // warn var newT: String? newT = t sink(newT) val runnable = Runnable { sink(newT) //warn } val runnable2: () -> Unit = { sink(newT) } //warn newT = dirty } private fun update(list: List?) {} fun sink(clean: @Untainted String?) {} }