For my education, why do you need to query? Would the method be: (1) About to throw NameError no method for arguments (2) Select arguments that don't match (3) Do any of the non-matching arguments respond_to? :to_java (4) Call :to_java on those arguments (5) Do method parameters now match? If so call method, otherwise throw original exception Just curious, I am sure its a lot more complex than that.