code: func (g *graph) Resolve(ptr interface{}) reflect.Value {
  	ptrType := reflect.TypeOf(ptr)
  	if ptrType.Kind() != reflect.Ptr {
  		panic(fmt.Sprintf("ptr (%v) is not a pointer", ptrType))
  	}
  
  	ptrValueElem := reflect.ValueOf(ptr).Elem()
  	def, found := g.definitions[ptr]
  	if !found {
  		// no known definition - return the current value of the pointer
  		return ptrValueElem
  	}
  
  	return def.Resolve(g)
  }
docs: // Resolve a pointer into a value by recursively resolving its dependencies and/or returning the cached result