It was similar in that the combinations of types quickly led to a ballooning of concrete types that had to be implemented. And, not having those concrete types led to an unacceptably high number of type assertions!
Generics would have solved the problem succinctly, while preserving programmer intent.
In other words there is a solution to the problem that doesn't require generics at all.