code: def _traverse_child_objs(self, c2ps, goobj_parent, goids_seen):
          
          # Update public(godag.go2obj godag.c2ps), private(_seen_pids)
          parent_id = goobj_parent.id
          # mark parent as seen
          goids_seen.add(parent_id)
          ##A self.go2obj[parent_id] = goobj_parent
          # Update goids_seen and go2obj with parent alt_ids
          for goid_altid in goobj_parent.alt_ids:
              goids_seen.add(goid_altid)
              ##A self.go2obj[goid_altid] = goobj_parent
          # Loop through children
          for child_obj in goobj_parent.children:
              child_id = child_obj.id
              c2ps[child_id].add(parent_id)
              # If child has not been seen, traverse
              if child_id not in goids_seen:
                  ##F self._traverse_child_objs(c2ps, child_obj, go2obj, goids_seen)
                  self._traverse_child_objs(c2ps, child_obj, goids_seen)
docs: Traverse from source GO down children.