code: func (a *ACL) List(args *structs.DCSpecificRequest,
  	reply *structs.IndexedACLs) error {
  	if done, err := a.srv.forward("ACL.List", args, args, reply); done {
  		return err
  	}
  
  	// Verify we are allowed to serve this request
  	if !a.srv.ACLsEnabled() {
  		return acl.ErrDisabled
  	}
  
  	// Verify token is permitted to list ACLs
  	if rule, err := a.srv.ResolveToken(args.Token); err != nil {
  		return err
  	} else if rule == nil || !rule.ACLWrite() {
  		return acl.ErrPermissionDenied
  	}
  
  	return a.srv.blockingQuery(&args.QueryOptions,
  		&reply.QueryMeta,
  		func(ws memdb.WatchSet, state *state.Store) error {
  			index, tokens, err := state.ACLTokenList(ws, false, true, "", "", "")
  			if err != nil {
  				return err
  			}
  
  			now := time.Now()
  
  			var acls structs.ACLs
  			for _, token := range tokens {
  				if token.IsExpired(now) {
  					continue
  				}
  				if acl, err := token.Convert(); err == nil && acl != nil {
  					acls = append(acls, acl)
  				}
  			}
  
  			reply.Index, reply.ACLs = index, acls
  			return nil
  		})
  }
docs: // List is used to list all the ACLs