type authzResult … type cachingAuthorizer … func newCachingAuthorizer(in authorizer.Authorizer) authorizer.Authorizer { … } var _ … var _ … // Authorize returns an authorization decision by delegating to another Authorizer. If an equivalent // check has already been performed, a cached result is returned. Not safe for concurrent use. func (ca *cachingAuthorizer) Authorize(ctx context.Context, a authorizer.Attributes) (authorizer.Decision, string, error) { … }