code: function assertImmutableEqual(_super) {
      return function(collection) {
        const obj = this._obj;
  
        if (isImmutable(obj)) {
          this.assert(
            Immutable.is(obj, collection),
            'expected #{act} to equal #{exp}',
            'expected #{act} to not equal #{exp}',
            collection.toJS(),
            obj.toJS(),
            true
          );
        } else {
          _super.apply(this, arguments);
        }
      };
    }
docs: ### .equal(collection)
  
  Asserts that the values of the target are equivalent to the values of
  `collection`. Aliases of Chai's original `equal` method are also supported.
  
  ```js
  const a = List.of(1, 2, 3);
  const b = List.of(1, 2, 3);
  expect(a).to.equal(b);
  ```
  
  Immutable data structures should only contain other immutable data
  structures (unlike `Array`s and `Object`s) to be considered immutable and
  properly work against `.equal()`. See
  [issue #24](https://github.com/astorije/chai-immutable/issues/24) for more
  information.
  
  Also, note that `deep.equal` and `eql` are synonyms of `equal` when
  tested against immutable data structures, therefore they are aliases to
  `equal`.
  
  @name equal
  @alias equals
  @alias eq
  @alias eql
  @alias eqls
  @alias deep.equal
  @param {Collection} value
  @namespace BDD
  @api public