It's still doing a dispatch type of invocation. (so it's late bound) so at the lower levels, it's effectively the same as
to an extent -- you're still having to string comparison at runtime to check if the method exists, then invoking the late bound method, which naturally doesn't compile down as well as the early bound option which