code: func NewFlexibleGenerator(ctx context.Context, opts auth.Options) (TokenGenerator, error) {
  	if !auth.AllowsArbitraryScopes(ctx, opts) {
  		return nil, fmt.Errorf("can't use given auth.Options to mint token with arbitrary scopes")
  	}
  	return &flexibleGenerator{
  		ctx:            ctx,
  		opts:           opts,
  		authenticators: map[string]*auth.Authenticator{},
  	}, nil
  }
docs: // NewFlexibleGenerator constructs TokenGenerator that can generate tokens with
  // arbitrary set of scopes, if given options allow.
  //
  // It creates one or more auth.Authenticator instances internally (per
  // combination of requested scopes) using given 'opts' as a basis for options.
  //
  // Works only for options for which auth.AllowsArbitraryScopes(...) is true.
  // In this case options point to a service account private key or something
  // equivalent.
  //
  // The token generator will produce tokens that have exactly requested scopes.
  // Value of opts.Scopes is ignored.