code: func NewCatalogNodeQuery(s string) (*CatalogNodeQuery, error) {
  	if s != "" && !CatalogNodeQueryRe.MatchString(s) {
  		return nil, fmt.Errorf("catalog.node: invalid format: %q", s)
  	}
  
  	m := regexpMatch(CatalogNodeQueryRe, s)
  	return &CatalogNodeQuery{
  		dc:     m["dc"],
  		name:   m["name"],
  		stopCh: make(chan struct{}, 1),
  	}, nil
  }
docs: // NewCatalogNodeQuery parses the given string into a dependency. If the name is
  // empty then the name of the local agent is used.