@Override
    protected Value evaluate(ExecutionContext executionContext) throws InterpretationException {

        Value valA = ((AbsValueNode) this.getChildAt(0)).evaluate(executionContext);
        Value valB = ((AbsValueNode) this.getChildAt(1)).evaluate(executionContext);

        if (valA.getType() == VariableType.NUMBER && valB.getType() == VariableType.NUMBER) {
            if (((Number) valB.getValue()).doubleValue() != 0) {
                return new Value(NumberUtil.toNumber(((Number) valA.getValue()).doubleValue() / ((Number) valB.getValue()).doubleValue()));
            } else {
                throw new InterpretationException(InterpretationErrorType.DIVIDE_BY_ZERO, line, null);
            }
        } else
            throw new InterpretationException(InterpretationErrorType.INVALID_ARGUMENT, line, null);
    }