code: func tokenHeaderCrit(header *tokenHeader, value ast.Value) (err error) {
  	var ok bool
  	var v ast.Array
  	if v, ok = value.(ast.Array); !ok {
  		err = fmt.Errorf("crit: must be a list")
  		return
  	}
  	header.crit = map[string]bool{}
  	for _, t := range v {
  		var tv ast.String
  		if tv, ok = t.Value.(ast.String); !ok {
  			err = fmt.Errorf("crit: must be a list of strings")
  			return
  		}
  		header.crit[string(tv)] = true
  	}
  	if len(header.crit) == 0 {
  		err = fmt.Errorf("crit: must be a nonempty list") // 'MUST NOT' use the empty list
  		return
  	}
  	return
  }
docs: // tokenHeaderCrit handles the 'crit' header parameter