testEqualsImpl = function(a, b, c, d) {
      testTwoSetLikeImplInterop((setACtor, setBCtor) => {
        const s = new setACtor([a, b, c]);

        assertTrue('set == itself', sets.equals(s, s));
        assertTrue('set == same set', sets.equals(s, new setBCtor([a, b, c])));
        assertTrue('set == its clone', sets.equals(s, new setBCtor(s)));
        assertTrue('set == array of same elements', sets.equals(s, [a, b, c]));
        assertTrue(
            'set == array of same elements in different order',
            sets.equals(s, [c, b, a]));

        assertFalse('set != empty set', sets.equals(s, new setBCtor));
        assertFalse('set != its subset', sets.equals(s, new setBCtor([a, c])));
        assertFalse(
            'set != its superset', sets.equals(s, new setBCtor([a, b, c, d])));
        assertFalse(
            'set != different set', sets.equals(s, new setBCtor([b, c, d])));
        assertFalse('set != its subset as array', sets.equals(s, [a, c]));
        assertFalse(
            'set != its superset as array', sets.equals(s, [a, b, c, d]));
        assertFalse('set != different set as array', sets.equals(s, [b, c, d]));
        assertFalse('set != [a, b, c, c]', sets.equals(s, [a, b, c, c]));
        assertFalse('set != [a, b, b]', sets.equals(s, [a, b, b]));
        assertFalse('set != [a, a]', sets.equals(s, [a, a]));
      });
    }
Helper method for testEquals().
@param {?} a First element to use in the tests.
@param {?} b Second element to use in the tests.
@param {?} c Third element to use in the tests.
@param {?} d Fourth element to use in the tests.