code: func ReuseTokenSource(t *Token, src TokenSource) TokenSource {
  	// Don't wrap a reuseTokenSource in itself. That would work,
  	// but cause an unnecessary number of mutex operations.
  	// Just build the equivalent one.
  	if rt, ok := src.(*reuseTokenSource); ok {
  		if t == nil {
  			// Just use it directly.
  			return rt
  		}
  		src = rt.new
  	}
  	return &reuseTokenSource{
  		t:   t,
  		new: src,
  	}
  }
docs: // ReuseTokenSource returns a TokenSource which repeatedly returns the
  // same token as long as it's valid, starting with t.
  // When its cached token is invalid, a new token is obtained from src.
  //
  // ReuseTokenSource is typically used to reuse tokens from a cache
  // (such as a file on disk) between runs of a program, rather than
  // obtaining new tokens unnecessarily.
  //
  // The initial token t may be nil, in which case the TokenSource is
  // wrapped in a caching version if it isn't one already. This also
  // means it's always safe to wrap ReuseTokenSource around any other
  // TokenSource without adverse effects.