method e set_error msg
  arg_rw Expression e ; arg Str msg

Notify that the expression is not valid.
When the expression does not look as expected by your meta programming function, you should return without calling set_error method in most cases because another meta function could be satisfyed with it. If you set the error, no other function get a chance to compile the expression, so you bring polymorphism down.

method e unset_error
  arg_rw Expression e

Clears the error condition on the expression.