expect(() => {
   selectors = getSelectorsFromObject(
     variables,
     {user: UserFragment},
     {user: {}},
   );
 }).toWarn([
 it('passes through null/undefined values', () => {
   let selectors = getSelectorsFromObject(
     variables,
     {user: UserFragment},
     {user: null},
   );
   expect(selectors).toEqual({
     user: null,
   });
   selectors = getSelectorsFromObject(
     variables,
     {user: UserFragment},
     {user: undefined},
   );
   expect(selectors).toEqual({
     user: undefined,
   });
 });
 it('returns singular selectors', () => {
   const selectors = getSelectorsFromObject(
     variables,
     {user: UserFragment},
     {user: zuck},
   );
   expect(selectors).toEqual({
     user: {
       dataID: '4',
       node: UserFragment.node,
       variables,
     },
   });
 });
 setProps(props: Props): void {
   const selectors = getSelectorsFromObject(
     this._context.variables,
     this._fragments,
     props,
   );
   forEachObject(selectors, (selector, key) => {
     let resolver = this._resolvers[key];
     if (selector == null) {
       if (resolver != null) {
         resolver.dispose();
       }
       resolver = null;
     } else if (Array.isArray(selector)) {
       if (resolver == null) {
         resolver = new SelectorListResolver(
           this._context.environment,
           selector,
           this._onChange,
         );
       } else {
         invariant(
           resolver instanceof SelectorListResolver,
           'RelayFragmentSpecResolver: Expected prop `%s` to always be an array.',
           key,
         );
         resolver.setSelectors(selector);
       }
     } else {
       if (resolver == null) {
         resolver = new SelectorResolver(
           this._context.environment,
           selector,
           this._onChange,
         );
       } else {
         invariant(
           resolver instanceof SelectorResolver,
           'RelayFragmentSpecResolver: Expected prop `%s` to always be an object.',
           key,
         );
         resolver.setSelector(selector);
       }
     }
     this._resolvers[key] = resolver;
   });
   this._props = props;
   this._stale = true;
 }
 it('returns plural selectors', () => {
   const selectors = getSelectorsFromObject(
     variables,
     {user: UsersFragment},
     {user: [zuck]},
   );
   expect(selectors).toEqual({
     user: [
       {
         dataID: '4',
         node: UsersFragment.node,
         variables,
       },
     ],
   });
 });
 it('ignores keys not present in the fragment map', () => {
   const selectors = getSelectorsFromObject(
     variables,
     {user: UserFragment},
     {
       user: zuck,
       foo: 'foo',
       bar: 42,
     },
   );
   expect(selectors).toEqual({
     user: {
       dataID: '4',
       node: UserFragment.node,
       variables,
     },
   });
 });
 expect(() =>
   getSelectorsFromObject(variables, {user: UserFragment}, {user: '******'}),