To me sending wrong arguments is an error condition, not control flow, see this for more info: https://softwareengineering.stackexchange.com/questions/1892...
The advantage to this over checking the type is that you are still use duck typing. If you check the type then you can only support a specific set of classes.