anchor.diff:  /**
    * Models a SELECT tag, providing helper methods to select and deselect options.
    */
  -class SelectUtil {
  +class Select {
     WebElement _element;
     bool _isMulti;
  -  
  +
     /**
      * A check is made that the given [element] is, indeed, a SELECT tag.
      * If it is not, then an [UnexpectedTagNameException] is thrown.
      */
  -  SelectUtil(WebElement element) {
  +  Select(WebElement element) {
       var tagName = element.name;
   
       if (null == tagName || tagName.toLowerCase() != "select") {
  
positive.code:   /**
     * All options belonging to this select tag
     */
    List<WebElement> get options => _element.findElements(new By.tagName("option"));
  
    /**
     * All selected options belonging to this select tag
  
negative.code:   List<WebElement> get allSelectedOptions => options.where((option) => option.selected);
  
    /**
     * The first selected option in this select tag (or the currently selected
     * option in a normal select)
     */
    // TODO Exception management
    WebElement get firstSelectedOption => options.firstWhere((option) => option.selected);
  
    /**
     * Select the option at the given [index].
     * This is done by examing the "index" attribute of an element, and not merely by counting.
     */
    selectByIndex(int index) {
      var match = index.toString();
  
      var matched = false;
      for (var option in options) {
        if (option.attributes["index"] == match) {
  