code: def serialize(self):
          
          forward_edges, backward_edges = build_edges(self.nodes.values())
  
          return {
              'nodes': {k: v.serialize() for k, v in self.nodes.items()},
              'macros': {k: v.serialize() for k, v in self.macros.items()},
              'docs': {k: v.serialize() for k, v in self.docs.items()},
              'parent_map': backward_edges,
              'child_map': forward_edges,
              'generated_at': self.generated_at,
              'metadata': self.metadata,
              'disabled': [v.serialize() for v in self.disabled],
          }
docs: Convert the parsed manifest to a nested dict structure that we can
          safely serialize to JSON.