type Graph … // New returns a new Graph with the specified (optional) root node. func New(root *ssa.Function) *Graph { … } // CreateNode returns the Node for fn, creating it if not present. // The root node may have fn=nil. func (g *Graph) CreateNode(fn *ssa.Function) *Node { … } type Node … func (n *Node) String() string { … } type Edge … func (e Edge) String() string { … } func (e Edge) Description() string { … } func (e Edge) Pos() token.Pos { … } // AddEdge adds the edge (caller, site, callee) to the call graph. // Elimination of duplicate edges is the caller's responsibility. func AddEdge(caller *Node, site ssa.CallInstruction, callee *Node) { … }