val x : SomeType? = ... // Note: nullable
val s1 : String? = x?.toString()
val s2 : String? = x.toString()
The expressions s1 and s2 are subtly different. When x is null, s1 will evaluate to null, while s2 will evaluate to the string "null".
This is because the Kotling standard library defines toString on Any?, with a special case for null to return the string "null".
Resulting bugs are very difficult to track down. Hopefully your tests will catch your mistake, but the error message will be something like
Assertion failed:
expected: null
actual: null
If you get failures like this, look for a missing or unwanted question mark. It'll be hard to spot, but hopefully this tip will save you a few hours of frustration.