code: func Annotate(err error, reason string, args ...interface{}) *Annotator {
  	if err == nil {
  		return nil
  	}
  	return &Annotator{err, stackContext{
  		frameInfo: stackFrameInfoForError(1, err),
  		reason:    fmt.Sprintf(reason, args...),
  	}}
  }
docs: // Annotate captures the current stack frame and returns a new annotatable
  // error, attaching the publically readable `reason` format string to the error.
  // You can add additional metadata to this error with the 'InternalReason' and
  // 'Tag' methods, and then obtain a real `error` with the Err() function.
  //
  // If this is passed nil, it will return a no-op Annotator whose .Err() function
  // will also return nil.
  //
  // The original error may be recovered by using Wrapped.InnerError on the
  // returned error.
  //
  // Rendering the derived error with Error() will render a summary version of all
  // the public `reason`s as well as the initial underlying error's Error() text.
  // It is intended that the initial underlying error and all annotated reasons
  // only contain user-visible information, so that the accumulated error may be
  // returned to the user without worrying about leakage.
  //
  // You should assume that end-users (including unauthenticated end users) may
  // see the text in the `reason` field here. To only attach an internal reason,
  // leave the `reason` argument blank and don't pass any additional formatting
  // arguments.
  //
  // The `reason` string is formatted with `args` and may contain Sprintf-style
  // formatting directives.