+ return null
+ end
+
+ # Execute a full `callsite` for given `args`
+ # Use this method, instead of `send` to execute and control the aditionnal behavior of the call-sites
+ fun callsite(callsite: nullable CallSite, arguments: Array[Instance]): nullable Instance
+ do
+ return send(callsite.mproperty, arguments)
+ end
+
+ # Execute `mproperty` for a `args` (where `args[0]` is the receiver).
+ # Return a falue if `mproperty` is a function, or null if it is a procedure.
+ # The call is polimotphic. There is a message-seding/late-bindng according to te receiver (args[0]).
+ fun send(mproperty: MMethod, args: Array[Instance]): nullable Instance
+ do
+ var recv = args.first
+ var mtype = recv.mtype
+ var ret = send_commons(mproperty, args, mtype)
+ if ret != null then return ret