+
+ if (method->iflags & METHOD_IMPL_ATTRIBUTE_RUNTIME) {
+ const char *name = method->name;
+ MonoMethod *nm = NULL;
+
+ if (method->klass->parent == mono_defaults.multicastdelegate_class) {
+ if (*name == 'I' && (strcmp (name, "Invoke") == 0))
+ nm = mono_marshal_get_delegate_invoke (method);
+ else if (*name == 'B' && (strcmp (name, "BeginInvoke") == 0))
+ nm = mono_marshal_get_delegate_begin_invoke (method);
+ else if (*name == 'E' && (strcmp (name, "EndInvoke") == 0))
+ nm = mono_marshal_get_delegate_end_invoke (method);
+ }
+
+ if (!nm) {
+ mono_debugger_unlock ();
+ return 0;
+ }
+
+ method = nm;
+ }
+
+ info = mono_debugger_insert_method_breakpoint (method, index);
+