code: func (s *Store) ACLTokenListExpired(local bool, asOf time.Time, max int) (structs.ACLTokens, <-chan struct{}, error) {
  	tx := s.db.Txn(false)
  	defer tx.Abort()
  
  	iter, err := tx.Get("acl-tokens", s.expiresIndexName(local))
  	if err != nil {
  		return nil, nil, fmt.Errorf("failed acl token listing: %v", err)
  	}
  
  	var (
  		tokens structs.ACLTokens
  		i      int
  	)
  	for raw := iter.Next(); raw != nil; raw = iter.Next() {
  		token := raw.(*structs.ACLToken)
  		if token.ExpirationTime != nil && !token.ExpirationTime.Before(asOf) {
  			return tokens, nil, nil
  		}
  
  		tokens = append(tokens, token)
  		i += 1
  		if i >= max {
  			return tokens, nil, nil
  		}
  	}
  
  	return tokens, iter.WatchCh(), nil
  }
docs: // ACLTokenListExpires lists tokens that are expired as of the provided time.
  // The returned set will be no larger than the max value provided.