Couldn't you've just implemented `instanceFor()` and returned a new instance every time? Then you don't need this reflective `instanceof` check here...