code: func CachingCredentialsSource(source CredentialsSource) CredentialsSource {
  	return &cachingCredentialsSource{
  		source: source,
  		cache:  map[svchost.Hostname]HostCredentials{},
  	}
  }
docs: // CachingCredentialsSource creates a new credentials source that wraps another
  // and caches its results in memory, on a per-hostname basis.
  //
  // No means is provided for expiration of cached credentials, so a caching
  // credentials source should have a limited lifetime (one Terraform operation,
  // for example) to ensure that time-limited credentials don't expire before
  // their cache entries do.