docs: function isImplemented(obj, protocol) {
    if (obj == null) {
      return false;
    }
    switch (protocol) {
      case 'iterator':
        return isFunction(obj[protocols.iterator] || obj.next);
      case 'reduced':
      case 'value':
        return protocols[protocol] in obj;
      default:
        return isFunction(obj[protocols[protocol]]);
    }
  }