bool HandleLoads(string opcodeStr, Instruction instruction,
                         MetaMidRepresentationOperationFactory operationFactory, ClosureEntities closureEntities)
        {
            if (opcodeStr == "ldelem.ref")
            {
                operationFactory.LoadReferenceInArray();
                return(true);
            }
            if (opcodeStr == "ldelem.i" ||
                opcodeStr == "ldelem.i1" ||
                opcodeStr == "ldelem.i2" ||
                opcodeStr == "ldelem.i4" ||
                opcodeStr == "ldelem.i8" ||
                opcodeStr == "ldelem.i1" ||
                opcodeStr == "ldelem.r4" ||
                opcodeStr == "ldelem.r8" ||
                opcodeStr == "ldelem.u1" ||
                opcodeStr == "ldelem.u2" ||
                opcodeStr == "ldelem.u2" ||
                opcodeStr == "ldelem.u4" ||
                opcodeStr == "ldelem.u8"
                )
            {
                operationFactory.LoadReferenceInArray();

                return(true);
            }

            if (opcodeStr == "ldelem")
            {
                operationFactory.LoadReferenceInArrayTyped(closureEntities);
                return(true);
            }
            if (opcodeStr == "ldelem.any")
            {
                operationFactory.LoadReferenceInArrayTyped(closureEntities);
                return(true);
            }


            if (opcodeStr == "ldc.i4.s" || opcodeStr == "ldc.i4")
            {
                operationFactory.PushInt4(Convert.ToInt32(instruction.Operand));
                return(true);
            }
            if (opcodeStr == "ldc.i8.s" || opcodeStr == "ldc.i8")
            {
                operationFactory.PushInt8(Convert.ToInt64(instruction.Operand));
                return(true);
            }
            if (opcodeStr.StartsWith("ldc.i4."))
            {
                var pushedIntValue = opcodeStr.Remove(0, "ldc.i4.".Length).ToInt();
                operationFactory.PushInt4(pushedIntValue);
                return(true);
            }
            if (instruction.OpCode == OpCodes.Ldloc || instruction.OpCode == OpCodes.Ldloc_S)
            {
                operationFactory.CopyLocalVariableIntoStack(GetVariableIndex(instruction));
                return(true);
            }

            if (opcodeStr.StartsWith("ldloc."))
            {
                var pushedIntValue = opcodeStr.Remove(0, "ldloc.".Length).ToInt();

                operationFactory.CopyLocalVariableIntoStack(pushedIntValue);
                return(true);
            }

            if (instruction.OpCode == OpCodes.Ldstr)
            {
                operationFactory.PushString((string)instruction.Operand);
                return(true);
            }
            if (instruction.OpCode == OpCodes.Ldc_R8)
            {
                operationFactory.PushDouble((double)instruction.Operand);
                return(true);
            }
            if (instruction.OpCode == OpCodes.Ldc_R4)
            {
                operationFactory.PushFloat((float)instruction.Operand);
                return(true);
            }

            if (instruction.OpCode == OpCodes.Ldarga || instruction.OpCode == OpCodes.Ldarga_S)
            {
                operationFactory.LoadArgument(GetParameterIndex(instruction), _methodInterpreter.AnalyzeProperties);
                return(true);
            }

            if (instruction.OpCode == OpCodes.Ldarg_S)
            {
                operationFactory.LoadArgument(GetParameterIndex(instruction), _methodInterpreter.AnalyzeProperties);
                return(true);
            }

            if (opcodeStr.StartsWith("ldarg."))
            {
                var pushedIntValue = opcodeStr.Remove(0, "ldarg.".Length).ToInt();
                operationFactory.LoadArgument(pushedIntValue, _methodInterpreter.AnalyzeProperties);
                return(true);
            }

            if (opcodeStr.StartsWith("ldobj"))
            {
                operationFactory.LoadObject((Type)instruction.Operand);
                return(true);
            }
            if (instruction.OpCode == OpCodes.Ldfld)
            {
                var operand = (FieldInfo)instruction.Operand;

                operationFactory.LoadField(operand.Name, closureEntities);
                return(true);
            }
            if (instruction.OpCode == OpCodes.Ldlen)
            {
                operationFactory.LoadLength();
                return(true);
            }

            if (instruction.OpCode == OpCodes.Ldnull)
            {
                operationFactory.LoadNull();
                return(true);
            }
            return(false);
        }