void IDecisionVisitor.Visit(RelationalBranchDecision decision)
        {
            emit
            .Label(GetNodeLabel(decision).Def)
            .Do(ldvalue)
            .Ldc_I4(decision.Operand)
            ;

            var label = GetNodeLabel(decision.Right);

            switch (decision.Operator.Negate())
            {
            case RelationalOperator.Equal:          emit.Beq(label);    break;

            case RelationalOperator.NotEqual:       emit.Bne_Un(label); break;

            case RelationalOperator.Less:           emit.Blt(label);    break;

            case RelationalOperator.Greater:        emit.Bgt(label);    break;

            case RelationalOperator.LessOrEqual:    emit.Ble(label);    break;

            case RelationalOperator.GreaterOrEqual: emit.Bge(label);    break;

            default:
                throw new InvalidOperationException("Not supported operator");
            }

            GenerateCodeOrJump(decision.Left);

            strategy.IntermediateGenerateCode();
        }