DynamicMethod method = entry.method;
if (methodMissing(method, caller)) {
return callMethodMissing(context, self, name, method, arg1, arg2, arg3);
}
cache = new SuperTuple(name, entry);
return method.call(context, self, selfType, name, arg1, arg2, arg3);
}
protected IRubyObject cacheAndCall(IRubyObject caller, RubyClass selfType, Block block, ThreadContext context, IRubyObject self, String name, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3) {
CacheEntry entry = selfType != null ? selfType.searchWithCache(name) : CacheEntry.NULL_CACHE;
DynamicMethod method = entry.method;