MCContainer::eval takes a ValueRef as second parameter, you want to use ctxt . ConvertToString instead.
Also, it returns false in case of a failure, you can directly use it instead of `ctxt . HasError()`
Keep the error info by updating the failure case to use `LegacyThrow` instead of `MCeerror->add`