code: function(inputs, delaySort)
    {
      var map = this.map;
      var removed = [];
      var removedIndices = [];
  
      for (var i = 0; i < inputs.length; i++)
      {
        var key = this.buildKeyFromInput( inputs[ i ] );
        var removing = map.get( key );
  
        if ( removing )
        {
          removedIndices.push( map.indices[ key ] );
          removed.push( removing );
        }
      }
  
      removedIndices.sort();
  
      for (var i = removedIndices.length - 1; i >= 0; i--)
      {
        map.removeAt( removedIndices[ i ] );
      }
  
      this.trigger( Collection.Events.Removes, [this, removed, removedIndices] );
  
      if ( !delaySort )
      {
        this.sort();
      }
  
      return removed;
    }
docs: Removes the given models from this collection - sorting the collection if
  a comparator is set on this collection and `delaySort` is not specified or
  a true value.
  
  @method
  @memberof Rekord.ModelCollection#
  @param {modelInput[]} inputs -
  The models to remove from this collection if they exist.
  @param {Boolean} [delaySort=false] -
  Whether automatic sorting should be delayed until the user manually
  calls {@link Rekord.ModelCollection#sort sort}.
  @return {Rekord.Model[]} -
  The models removed from this collection.
  @emits Rekord.ModelCollection#removes
  @emits Rekord.ModelCollection#sort