Additionally, Josh's first generics implementation in Java was reified (like C#), but the necessary JVM changes were delayed, so he had to quickly do a second implementation using erasure.
Sometimes, reality bites.
Sometimes, reality bites.
As in all of engineering, most things are a tradeoff.