code: func (d *definition) Obscure(g Graph) {
  	if d.value == nil {
  		// already obscured
  		return
  	}
  
  	obj, ok := d.value.Interface().(Finalizable)
  
  	// uncache the result
  	d.value = nil
  
  	// zero out the ptr value
  	ptrValue := reflect.ValueOf(d.ptr).Elem()
  	ptrValue.Set(reflect.Zero(ptrValue.Type()))
  
  	if ok && obj != nil {
  		obj.Finalize()
  	}
  }
docs: // Obscure zeros out the pointer value and finalizes its previous value