code: func Close(v interface{}) error {
  	// We require a pointer so we can address the internal fields
  	val := reflect.ValueOf(v)
  	if val.Kind() != reflect.Ptr {
  		return fmt.Errorf("value must be a pointer")
  	}
  
  	// Walk and close
  	var w closeWalker
  	if err := reflectwalk.Walk(v, &w); err != nil {
  		return err
  	}
  
  	return w.Err
  }
docs: // Close will close all shadow values within the given structure.
  //
  // This uses reflection to walk the structure, find all shadow elements,
  // and close them. Currently this will only find struct fields that are
  // shadow values, and not slice elements, etc.