The caller uses ExpandoRenderCallback to define a set of callback functions.
The formatter uses these functions to get data, then format it.