code: @Override
      public Object layout(Map model, String templateName, boolean inheritModel) throws IOException,
              ClassNotFoundException {
          Map submodel = inheritModel ? forkModel(model) : model;
          URL resource = engine.resolveTemplate(templateName);
          PippoGroovyTemplate template = (PippoGroovyTemplate) engine
                  .createTypeCheckedModelTemplate(resource, modelTypes).make(submodel);
          template.setup(languages, messages, router);
          template.writeTo(getOut());
  
          return this;
      }
docs: Imports a template and renders it using the specified model, allowing
  fine grained composition of templates and layouting. This works
  similarily to a template include but allows a distinct model to be used.
  If the layout inherits from the parent model, a new model is created,
  with the values from the parent model, eventually overriden with those
  provided specifically for this layout.
  
  @param model
  model to be passed to the template
  @param templateName
  the name of the template to be used as a layout
  @param inheritModel
  a boolean indicating if we should inherit the parent model
  @return this template instance
  @throws IOException
  @throws ClassNotFoundException