void EvaluateInstruction(Instruction instruction, MetaMidRepresentationOperationFactory operationFactory,
                                 HashSet <int> labelList, ClosureEntities closureEntities)
        {
            var opcodeStr = instruction.OpCode.ToString();
            var offset    = 0;

            if (instruction.Operand is Instruction)
            {
                offset = ((Instruction)(instruction.Operand)).Offset;
            }
            if (labelList.Contains(instruction.Offset))
            {
                operationFactory.SetLabel(instruction.Offset);
            }
            if (operationFactory.SkipInstruction(instruction.Offset))
            {
                return;
            }
            var opcodeValue = instruction.OpCode.Value;

            operationFactory.AddCommentInstruction(instruction.ToString());
            if (HandleCalls(instruction, operationFactory, opcodeValue))
            {
                return;
            }

            if (HandleStores(opcodeStr, instruction, operationFactory))
            {
                return;
            }
            if (HandleLoads(opcodeStr, instruction, operationFactory, closureEntities))
            {
                return;
            }
            if (HandleOperators(opcodeStr, operationFactory, instruction))
            {
                return;
            }

            if (HandleBranching(opcodeStr, offset, operationFactory, instruction))
            {
                return;
            }
            if (HandleBoxing(opcodeStr, offset, operationFactory, instruction))
            {
                return;
            }

            if (HandleClassCast(operationFactory, instruction))
            {
                return;
            }
            if (HandleIsInst(operationFactory, instruction))
            {
                return;
            }


            if (HandleException(operationFactory, instruction))
            {
                return;
            }


            if (HandleExtraInstructions(instruction, operationFactory, opcodeStr, closureEntities))
            {
                return;
            }
            throw new InvalidOperationException($"Unknown instruction: {instruction}");
        }