@Override
    public ExecutionContext run(ExecutionContext context) throws InterpretationException {

        Value val1 = ((AbsValueNode) getChildAt(0)).evaluate(context);
        Value val2 = ((AbsValueNode) getChildAt(1)).evaluate(context);

        if (getChildAt(0) instanceof ThingVNode && val1.getType() == VariableType.ARRAYLIST) {
            if (val2.getType() == VariableType.ARRAYLIST || val2.getType() == VariableType.NUMBER
                    || val2.getType() == VariableType.STRING) {
                ArrayList<Value> list = (ArrayList<Value>) val1.getValue();
                list.add(0, val2);
                return context;
            } else {
                throw new InterpretationException(InterpretationErrorType.INVALID_ARGUMENT, line, null);
            }
        } else {
            throw new InterpretationException(InterpretationErrorType.INVALID_ARGUMENT, line, null);
        }

    }