code: func NewGraph(defs ...Definition) Graph {
  	defMap := make(map[interface{}]Definition, len(defs))
  	for _, def := range defs {
  		defMap[def.Ptr()] = def
  	}
  	return &graph{
  		definitions: defMap,
  	}
  }
docs: // NewGraph constructs a new Graph, initializing the provider and value maps.