After rereading the issue I think we are in the state that we can close the issue already. If
(1) if there is a local varibale f, do f.call().
(2) if there is a method f(), invoke it
(3) if there is a property f, invoke f.call()
(4) call invokeMethod()/methodMissing
is acceptable, then the important point here is that f is found in step (3) in the binding. Script's invokeMethod is not asked, because that would have happened in (4), but because a property was found we do the call for it which fails, because Integer does not provide a call() method in this example. What if it would provide one? Wouldn't it be expected to be called? The only way to fix it in the way that you may think is right is to react to the missing method there.
If the method call is in a Closure, then yes, it behaves different. And that is the reason I don't close this issue. But this is because of the way the MOP is designed. So this will become a target for 2.0 instead