docs: def run_impl(self, change, entry, out):
          """
          sets up the report directory for an HTML report. Obtains the
          top-level Cheetah template that is appropriate for the change
          instance, and runs it.
  
          The cheetah templates are supplied the following values:
           * change - the Change instance to report on
           * entry - the string name of the entry for this report
           * options - the cli options object
           * breadcrumbs - list of backlinks
           * javascripts - list of .js links
           * stylesheets - list of .css links
  
          The cheetah templates are also given a render_change method
          which can be called on another Change instance to cause its
          template to be resolved and run in-line.
          """
  
          options = self.options
  
          # translate relative paths if necessary
          javascripts = self._relative_uris(options.html_javascripts)
          stylesheets = self._relative_uris(options.html_stylesheets)
  
          # map the class of the change to a template class
          template_class = resolve_cheetah_template(type(change))
  
          # instantiate and setup the template
          template = template_class()
  
          # create a transaction wrapping the output stream
          template.transaction = DummyTransaction()
          template.transaction.response(resp=out)
  
          # inject our values
          template.change = change
          template.entry = entry
          template.options = options
          template.breadcrumbs = self.breadcrumbs
          template.javascripts = javascripts
          template.stylesheets = stylesheets
  
          # this lets us call render_change from within the template on
          # a change instance to chain to another template (eg, for
          # sub-changes)
          template.render_change = lambda c: self.run_impl(c, entry, out)
  
          # execute the template, which will write its contents to the
          # transaction (and the underlying stream)
          template.respond()
  
          # clean up the template
          template.shutdown()