inline virtual To eval()
    {
        cached_number = Converter::do_conv(from_expr->eval());

        // Here we may be returning a reference to the cached value instead of by-value.
        return cached_number;
    }
 virtual IoObject* eval_in_context(IoObject *self, IoObject *locals, IoMessage *m)
 {
     return F::eval_in_context(self, locals, m, from_expr->eval());
 }