docs: def print_class_details(self, fname, classname):
          """
          Print detailed statistics and instances for the class `classname`. All
          data will be written to the file `fname`.
          """
          fobj = open(fname, "w")
          fobj.write(self.header % (classname, self.style))
  
          fobj.write("<h1>%s</h1>\n" % (classname))
  
          sizes = [tobj.get_max_size() for tobj in self.index[classname]]
          total = 0
          for s in sizes:
              total += s
          data = {'cnt': len(self.index[classname]), 'cls': classname}
          data['avg'] = pp(total / len(sizes))
          data['max'] = pp(max(sizes))
          data['min'] = pp(min(sizes))
          fobj.write(self.class_summary % data)
  
          fobj.write(self.charts[classname])
  
          fobj.write("<h2>Coalesced Referents per Snapshot</h2>\n")
          for snapshot in self.snapshots:
              if classname in snapshot.classes:
                  merged = snapshot.classes[classname]['merged']
                  fobj.write(self.class_snapshot % {
                      'name': snapshot.desc, 'cls':classname, 'total': pp(merged.size)
                  })
                  if merged.refs:
                      self._print_refs(fobj, merged.refs, merged.size)
                  else:
                      fobj.write('<p>No per-referent sizes recorded.</p>\n')
  
          fobj.write("<h2>Instances</h2>\n")
          for tobj in self.index[classname]:
              fobj.write('<table id="tl" width="100%" rules="rows">\n')
              fobj.write('<tr><td id="hl" width="140px">Instance</td><td id="hl">%s at 0x%08x</td></tr>\n' % (tobj.name, tobj.id))
              if tobj.repr:
                  fobj.write("<tr><td>Representation</td><td>%s&nbsp;</td></tr>\n" % tobj.repr)
              fobj.write("<tr><td>Lifetime</td><td>%s - %s</td></tr>\n" % (pp_timestamp(tobj.birth), pp_timestamp(tobj.death)))
              if tobj.trace:
                  trace = "<pre>%s</pre>" % (_format_trace(tobj.trace))
                  fobj.write("<tr><td>Instantiation</td><td>%s</td></tr>\n" % trace)
              for (timestamp, size) in tobj.snapshots:
                  fobj.write("<tr><td>%s</td>" % pp_timestamp(timestamp))
                  if not size.refs:
                      fobj.write("<td>%s</td></tr>\n" % pp(size.size))
                  else:
                      fobj.write("<td>%s" % pp(size.size))
                      self._print_refs(fobj, size.refs, size.size)
                      fobj.write("</td></tr>\n")
              fobj.write("</table>\n")
  
          fobj.write(self.footer)
          fobj.close()