if (receiverNode.definition(runtime, context, self, aBlock) != null) {
try {
IRubyObject receiver = receiverNode.interpret(runtime, context, self, aBlock);
RubyClass metaClass = receiver.getMetaClass();
DynamicMethod method = metaClass.searchMethod(getName());
Visibility visibility = method.getVisibility();
if (visibility != Visibility.PRIVATE &&
(visibility != Visibility.PROTECTED || metaClass.getRealClass().isInstance(self))) {
if (!method.isUndefined()) {
return ASTInterpreter.getArgumentDefinition(runtime, context, getArgsNode(), context.runtime.getDefinedMessage(DefinedMessage.METHOD), self, aBlock);