code: function getPluralSelector(
    operationVariables: Variables,
    fragment: ReaderFragment,
    items: Array<mixed>,
    owners?: Array<?OperationDescriptor>,
  ): ?Array<OwnedReaderSelector> {
    let selectors = null;
    if (__DEV__) {
      if (owners != null) {
        warning(
          items.length === owners.length,
          'RelayModernSelector: Expected number of plural values for fragment ' +
            '`%s` to match number of owners. Received %s values and %s owners.',
          fragment.name,
          items.length,
          owners.length,
        );
      }
    }
  
    items.forEach((item, ii) => {
      const owner = owners != null ? owners[ii] : null;
      const selector =
        item != null
          ? getSingularSelector(operationVariables, fragment, item, owner)
          : null;
      if (selector != null) {
        selectors = selectors || [];
        selectors.push(selector);
      }
    });
    return selectors;
  }
docs: @public
  
  Given the result `items` from a parent that fetched `fragment`, creates a
  selector that can be used to read the results of that fragment on those
  items. This is similar to `getSingularSelector` but for "plural" fragments that
  expect an array of results and therefore return an array of selectors.