This visual trace shows how Kotlin's in variance (contravariance) works with a Consumer interface. The Consumer interface is declared with 'in T', meaning it can accept T or any supertype of T. The feedConsumer function expects a Consumer<String>. Thanks to contravariance, you can pass a Consumer<Any> safely because Any is a supertype of String. The execution table shows steps where Consumer<Any> and Consumer<String> are accepted, but Consumer<Int> is rejected because Int is not a supertype of String. Variable tracking shows how the consumer variable changes type across calls. Key moments clarify why contravariance allows supertypes but not unrelated types. The quiz tests understanding of allowed types, error steps, and the effect of removing 'in'. This helps beginners see how contravariance enables safe input flexibility in Kotlin generics.