code: func (r *Requirement) String() string {
  	var buffer bytes.Buffer
  	if r.operator == DoesNotExistOperator {
  		buffer.WriteString("!")
  	}
  	buffer.WriteString(r.key)
  
  	switch r.operator {
  	case EqualsOperator:
  		buffer.WriteString("=")
  	case DoubleEqualsOperator:
  		buffer.WriteString("==")
  	case NotEqualsOperator:
  		buffer.WriteString("!=")
  	case InOperator:
  		buffer.WriteString(" in ")
  	case NotInOperator:
  		buffer.WriteString(" notin ")
  	case GreaterThanOperator:
  		buffer.WriteString(">")
  	case LessThanOperator:
  		buffer.WriteString("<")
  	case ExistsOperator, DoesNotExistOperator:
  		return buffer.String()
  	}
  
  	switch r.operator {
  	case InOperator, NotInOperator:
  		buffer.WriteString("(")
  	}
  	if len(r.strValues) == 1 {
  		buffer.WriteString(r.strValues.List()[0])
  	} else { // only > 1 since == 0 prohibited by NewRequirement
  		buffer.WriteString(strings.Join(r.strValues.List(), ","))
  	}
  
  	switch r.operator {
  	case InOperator, NotInOperator:
  		buffer.WriteString(")")
  	}
  	return buffer.String()
  }
docs: // String returns a human-readable string that represents this
  // Requirement. If called on an invalid Requirement, an error is
  // returned. See NewRequirement for creating a valid Requirement.