code: func (s *dumpState) pointerNameFor(v reflect.Value) (string, bool) {
  	if isPointerValue(v) {
  		ptr := v.Pointer()
  		for i, addr := range s.pointers {
  			if ptr == addr {
  				firstVisit := s.visitPointerAndCheckIfItIsTheFirstTime(ptr)
  				return fmt.Sprintf("p%d", i), firstVisit
  			}
  		}
  	}
  	return "", false
  }
docs: // registers that the value has been visited and checks to see if it is one of the
  // pointers we will see multiple times. If it is, it returns a temporary name for this
  // pointer. It also returns a boolean value indicating whether this is the first time
  // this name is returned so the caller can decide whether the contents of the pointer
  // has been dumped before or not.