internal int VM_BeginInvokeMethods(long thread, long[] methods, ValueImpl this_arg, List<ValueImpl[]> arguments, InvokeFlags flags, InvokeMethodCallback callback, object state) { // FIXME: Merge this with INVOKE_METHOD var w = new PacketWriter (); w.WriteId (thread); w.WriteInt ((int)flags); w.WriteInt (methods.Length); for (int i = 0; i < methods.Length; ++i) { w.WriteId (methods [i]); w.WriteValue (this_arg); w.WriteInt (arguments [i].Length); w.WriteValues (arguments [i]); } return Send (CommandSet.VM, (int)CmdVM.INVOKE_METHODS, w, delegate (PacketReader r) { ValueImpl v, exc, out_this = null; ValueImpl[] out_args = null; if (r.ErrorCode != 0) { callback (null, null, null, null, (ErrorCode)r.ErrorCode, state); } else { read_invoke_res (r, out v, out exc, out out_this, out out_args); callback (v, exc, out_this, out_args, 0, state); } }, methods.Length); }