What about the scenario in which they define the column as a virtual, but not the required renderer function? We can't default the renderer to formtools.cellRenderers.default like we can, on a non-virtual column because they will all fail.

In that instance (the renderer function hasn't been define), should it throw? If the answer is yes, we'll need the check.

We could update the code though to use [Function.apply](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) if you want to simplify the code. We could construct the array of arguments to pass to the renderer beforehand, and then we'd only need one instance of the code in which actually executes against the renderer (lines 74-109) (using `req.linz.model.grid.columns[column].renderer.apply`).