A {@link TemplateModel} that can be unwrapped and then it considers a provided desired (hint) class. This isuseful when multiple languages has to communicate with each other through FreeMarker. For example, if we have a model that wraps a Jython object, then we have to unwrap that differently when we pass it to plain Java method and when we pass it to a Jython method.
This is rarely implemented by applications. It is typically implemented by the model classes belonging to {@link ObjectWrapper}-s.