anchor.diff:  import 'dart:mirrors' as mirr;
   
   import 'package:polymer/polymer.dart';
  -import 'package:polymer_elements/polymer_selection/polymer_selection.dart' show PolymerSelection;
  +import 'package:polymer_elements/polymer_selection/polymer_selection.dart' show
  +    PolymerSelection;
  +import 'package:polymer_elements/src/interfaces.dart' show HasItems;
   
   @CustomTag('polymer-selector')
  -class PolymerSelector extends PolymerElement {
  -
  -  @published var dummy; // TODO remove workaround for polymer-selector-multi test
  +class PolymerSelector extends PolymerElement implements HasItems {
  +
  +  @published
  +  var dummy; // TODO remove workaround for polymer-selector-multi test
   
     /**
      * Gets or sets the selected element.  Default to use the index
  
positive.code:         (this.$['selection'] as PolymerSelection).setItemSelected(s, false);
        });
      } else {
        (this.$['selection'] as PolymerSelection).setItemSelected(this.selection, false);
      }
      this.selectedItem = null;
      (this.$['selection'] as PolymerSelection).clear();
    }
  
    void _valueToSelection(value) {
      var item = (value == null) ?
          null : this.items[this._valueToIndex(value)];
      (this.$['selection'] as PolymerSelection).select(item);
    }
  
  
negative.code:     this.selectedItem = this.selection;
    }
  
    void selectedItemChanged(old) {
      if (!multi) {
        if (this.selectedItem != null) {
          //TODO Figure out why this doesn't work - filed https://code.google.com/p/dart/issues/detail?id=17462
          try {
            var t = this.selectedItem.templateInstance;
            this.selectedModel = t ? t.model : null;
          } catch (e) {}
        } else {
          this.selectedModel = null;
        }
        this.selectedIndex = (this.selectedItem != null) ? this._valueToIndex(
            this.selected) : 1;
      }
    }
  
    int _valueToIndex(value) {
      // find an item with value == value and return it's index
      for (var i = 0,
          items = this.items; i < items.length; i++) {
        if (this._valueForNode(items[i]) == value) {
          return i;
        }
      }
      // if no item found, the value itself is probably the index
      if (value is int) {
        return value;
      }
  
      if (value is String && value.isNotEmpty) {
        return int.parse(value, onError: (s) => -1);
      }
      return -1;
  