Bug fix: the right hand side of an assignment operator was being dereferenced, which was the wrong place to evaluate a dereference operation. A reference is a first-class value and may be used in computations. Therefore it is important to be precise about exactly where a reference value is dereferenced, lest you dereference too greedily and reduce an expression that should have remained as a reference value. The correct place to dereference an argument is just before a reference is passed to a function or operator that requires a non-reference value. Specifically that is in two locations: (1) the instance of the 'execute' function for the 'Dao.Evaluator.ArithExpr' constructor (of the data type 'Dao.Evaluator.ArithExpr') determines which operands require dereferencing according to the operator, and (2) the 'Dao.Evaluator.FuncCall' constructor (of the 'Dao.Evaluator.RefOpExpr') which calls 'Dao.Evaluator.callFunction' calls 'Dao.Evaluator.matchFuncParam' which checks each parameter of the function declaration called to determine whether each reference value assigned to each argument should be dereferenced or left alone, and that is decided by the boolean value stored in the 'Dao.Evaluator.ParamExpr' constructor of the 'Dao.Evaluator.ParamExpr' data type.