code: function (item) {
              if (item instanceof Bindable) {
                  if (this.$.keyPath) {
                      return item.get(this.$.keyPath);
                  } else {
                      return item.$cid;
                  }
              } else {
                  if (this.$.keyPath && item instanceof Object) {
                      return this.get(item, this.$.keyPath);
                  } else if (_.isString(item) || _.isNumber(item)) {
                      return item;
                  }
              }
              return null;
          }
docs: *
  Calculates a cache key for a given item.
  If a keyPath is set, it will return the value of the path
  Otherwise if the item is a {js.core.Bindable} it will return the $cid
  If no keyPath is set and it's an object it will return null;
  
  @param item
  @return {*}
  @private