docs: func GetPluginProviderFnsByName(p *plugin.Plugin, symbolName string) (func() (key, secret, token string, err error), func() bool, error) {
  	sym, err := p.Lookup(symbolName)
  	if err != nil {
  		return nil, nil, awserr.New(ErrCodeLookupSymbolError,
  			fmt.Sprintf("failed to lookup %s plugin provider symbol", symbolName), err)
  	}
  
  	fn, ok := sym.(func() (func() (key, secret, token string, err error), func() bool))
  	if !ok {
  		return nil, nil, awserr.New(ErrCodeInvalidSymbolError,
  			fmt.Sprintf("symbol %T, does not match the 'func() (func() (key, secret, token string, err error), func() bool)'  type", sym), nil)
  	}
  
  	retrieveFn, isExpiredFn := fn()
  	if retrieveFn == nil {
  		return nil, nil, awserr.New(ErrCodePluginRetrieveNil,
  			"the plugin provider retrieve function cannot be nil", nil)
  	}
  	if isExpiredFn == nil {
  		return nil, nil, awserr.New(ErrCodePluginIsExpiredNil,
  			"the plugin provider isExpired function cannot be nil", nil)
  	}
  
  	return retrieveFn, isExpiredFn, nil
  }