@Override
    public ExecutionContext run(ExecutionContext context) throws InterpretationException {
        AbsValueNode temp = (AbsValueNode) getChildAt(this.getChildCount() - 1);
        assert(temp!=null);
        Value test = (temp.evaluate(context));
        if (test.getType() != VariableType.BOOLEAN)
            throw new InterpretationException(InterpretationErrorType.BOOLEAN_EXPECTED, line, null);
        while (test.getValue(Boolean.class)) {
            for (int j = 0; j < this.getChildCount() - 1; j++) {
                ((AbsStatementNode) this.getChildAt(j)).run(context);
            }
            test = temp.evaluate(context);
        }
        return context;

    }