code: def _get_graphviz_data(self):
          
          s = []
          header = '// Process this file with graphviz\n'
          s.append( header)
          s.append('digraph G {\n')
          s.append('    node [shape=box];\n')
          for md in self.metadata:
              label = trunc(md.str, 48).replace('"', "'")
              extra = ''
              if md.type == 'instancemethod':
                  extra = ', color=red'
              elif md.type == 'frame':
                  extra = ', color=orange'
              s.append('    "X%s" [ label = "%s\\n%s" %s ];\n' % \
                  (hex(md.id)[1:], label, md.type, extra))
          for e in self.edges:
              extra = ''
              if e.label == '__dict__':
                  extra = ',weight=100'
              s.append('    X%s -> X%s [label="%s"%s];\n' % \
                  (hex(e.src)[1:], hex(e.dst)[1:], e.label, extra))
  
          s.append('}\n')
          return "".join(s)
docs: Emit a graph representing the connections between the objects described
          within the metadata list. The text representation can be transformed to
          a graph with graphviz. Returns a string.