code: func (pl *PairList) PermissibleString() string {
  	ps := make([]string, 0, len(pl.permissible))
  
  	keys := make([]string, 0, len(pl.permissible))
  	for k := range pl.permissible {
  		keys = append(keys, k)
  	}
  	sort.Strings(keys)
  
  	for _, k := range keys {
  		vss := pl.permissible[k]
  		//re-invert the index
  		vs := make([]string, 0, len(vss))
  		for v := range vss {
  			vs = append(vs, v)
  		}
  		sort.Strings(vs)
  
  		vstr := "*"
  		if len(vs) > 0 {
  			vstr = "[" + strings.Join(vs, "|") + "]"
  		}
  		ps = append(ps, fmt.Sprintf("%v=%v", k, vstr))
  	}
  
  	return strings.Join(ps, " ")
  }
docs: // PermissibleString generates a posix-cli-doc style string.
  // For example, a=[b|c|d] w=[x|y|z] l=*