public void AddIncParameter(ParameterBuilder parameterInfo, Parser.IncDecOps incOp)
        {
            switch (incOp)
            {
            case Parser.IncDecOps.PostInc:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Starg, parameterInfo.Position - 1);
                break;

            case Parser.IncDecOps.PostDec:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Starg, parameterInfo.Position - 1);
                break;

            case Parser.IncDecOps.PreInc:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Starg, parameterInfo.Position - 1);
                break;

            case Parser.IncDecOps.PreDec:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Starg, parameterInfo.Position - 1);
                break;
            }
        }
        public void AddIncLocalVar(LocalVariableInfo localVariableInfo, Parser.IncDecOps incOp)
        {
            switch (incOp)
            {
            case Parser.IncDecOps.PostInc:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case Parser.IncDecOps.PostDec:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case Parser.IncDecOps.PreInc:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case Parser.IncDecOps.PreDec:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;
            }
        }
        public void AddIncField(FieldInfo fieldInfo, Parser.IncDecOps incOp)
        {
            switch (incOp)
            {
            case Parser.IncDecOps.PostInc:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Stsfld, fieldInfo);
                break;

            case Parser.IncDecOps.PostDec:
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Stsfld, fieldInfo);
                break;

            case Parser.IncDecOps.PreInc:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Stsfld, fieldInfo);
                break;

            case Parser.IncDecOps.PreDec:
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Stsfld, fieldInfo);
                break;
            }
        }
        public void AddIncArray(FieldInfo fieldInfo, Parser.IncDecOps incOp)
        {
            LocalBuilder tempLocal;
            Type         elemType;

            switch (incOp)
            {
            case Parser.IncDecOps.PostInc:
                elemType = fieldInfo.FieldType.GetElementType();
                il.Emit(OpCodes.Ldelema, elemType);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldobj, elemType);
                il.Emit(OpCodes.Dup);
                tempLocal = il.DeclareLocal(elemType);
                il.Emit(OpCodes.Stloc, tempLocal);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Stobj, elemType);
                il.Emit(OpCodes.Ldloc, tempLocal);
                break;

            case Parser.IncDecOps.PostDec:
                elemType = fieldInfo.FieldType.GetElementType();
                il.Emit(OpCodes.Ldelema, elemType);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldobj, elemType);
                il.Emit(OpCodes.Dup);
                tempLocal = il.DeclareLocal(elemType);
                il.Emit(OpCodes.Stloc, tempLocal);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Stobj, elemType);
                il.Emit(OpCodes.Ldloc, tempLocal);
                break;

            case Parser.IncDecOps.PreInc:
                elemType = fieldInfo.FieldType.GetElementType();
                il.Emit(OpCodes.Ldelema, elemType);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldobj, elemType);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Add);
                il.Emit(OpCodes.Dup);
                tempLocal = il.DeclareLocal(elemType);
                il.Emit(OpCodes.Stloc, tempLocal);
                il.Emit(OpCodes.Stobj, elemType);
                il.Emit(OpCodes.Ldloc, tempLocal);
                break;

            case Parser.IncDecOps.PreDec:
                elemType = fieldInfo.FieldType.GetElementType();
                il.Emit(OpCodes.Ldelema, elemType);
                il.Emit(OpCodes.Dup);
                il.Emit(OpCodes.Ldobj, elemType);
                il.Emit(OpCodes.Ldc_I4_1);
                il.Emit(OpCodes.Sub);
                il.Emit(OpCodes.Dup);
                tempLocal = il.DeclareLocal(elemType);
                il.Emit(OpCodes.Stloc, tempLocal);
                il.Emit(OpCodes.Stobj, elemType);
                il.Emit(OpCodes.Ldloc, tempLocal);
                break;
            }
        }