No amount of runtime predicate dispatch is going to tell you if a particular occurrence of `nil` is intended to be used as a list of ints or as a list of strings, because runtime checks can&#x27;t “see into the object&#x27;s future”. On the other hand, a type checker can easily infer this, in some languages.