remove(source, key) {
    if (!source.byKey || !source.byKey[key]) return source;

    const keys = source.keys.filter(originalKey => originalKey !== key);
    return {
      byKey: keys.reduce((acc, key) => {
        acc[key] = source.byKey[key];
        return acc;
      }, {}),
      keys
    };
  }
Remove value by given key.

@param {object} source
@param {string} key
@return {object}