docs: function parseBindings(bindings, key) {
    const self = this;
  
    // handle super short style, ie 'email': '.email'
    if (_.isString(bindings)) {
      const selector = bindings;
  
      // short style defaults to 'text' setter
      (bindings = {})[selector] = { set: 'text' };
    }
  
    return _.map(bindings, (binding, selector) => {
      const set = [];
      let get;
  
      // handle short style, ie '[name="email"]': 'value'
      if (_.isString(binding) || _.isFunction(binding)) {
        set.push(binding);
      } else {
        if (binding.both) {
          get = binding.both;
          set.push(binding.both);
        } else {
          get = binding.get;
        }
  
        if (binding.set) {
          set.push(binding.set);
        }
      }
  
      const domGetter = _.isFunction(get) ? get : domGetters[get];
      let getter;
  
      if (domGetter) {
        getter = makeGetter(domGetter.bind(self), key).bind(self);
        getter.events = domGetter.events;
      }
  
      return {
        key,
        selector,
        // getter: getter ? getter.bind(self) : undefined,
        getter,
        setter: makeSetter(set, selector, self),
      };
    });
  }