code: func parse(selector string) (internalSelector, error) {
  	p := &Parser{l: &Lexer{s: selector, pos: 0}}
  	items, err := p.parse()
  	if err != nil {
  		return nil, err
  	}
  	sort.Sort(ByKey(items)) // sort to grant determistic parsing
  	return internalSelector(items), err
  }
docs: // parse parses the string representation of the selector and returns the internalSelector struct.
  // The callers of this method can then decide how to return the internalSelector struct to their
  // callers. This function has two callers now, one returns a Selector interface and the other
  // returns a list of requirements.