public override void Emit(AffeCompilerState state)
        {
            ILGenerator il = state.ILGenerator;
            LocalBuilder array = state.CheckOutLocal(typeof(object[]), true);

            il.Emit(OpCodes.Ldc_I4, this.Arguments.Count);
            il.Emit(OpCodes.Newarr, typeof(object));
            il.Emit(OpCodes.Stloc, array);

            for (int i = 0; i < this.Arguments.Count; i++) {
                il.Emit(OpCodes.Ldloc, array);
                il.Emit(OpCodes.Ldc_I4, i);
                this.Arguments[i].Emit(state);

                il.Emit(OpCodes.Stelem_Ref);
            }

            this.Target.Emit(state);
            il.Emit(OpCodes.Ldstr, this.Name.Name);
            il.Emit(OpCodes.Ldloc, array);

            il.Emit(OpCodes.Call, PerformInvokeInfo);
        }
        public virtual void EmitForInvocation(AffeCompilerState state)
        {
            this.Emit(state);

            if (this.Type.IsValueType) {
                LocalBuilder l = state.CheckOutLocal(this.Type, true);

                state.ILGenerator.Emit(OpCodes.Stloc, l);
                state.ILGenerator.Emit(OpCodes.Ldloca, l);
            }
        }