If we really want to do it, would be simpler to `try...catch(ClassCastException e)` and throw `IllegalArgumentException`