code: function(input, delaySort)
    {
      var key = this.buildKeyFromInput( input );
      var removing = this.map.get( key );
  
      if ( removing )
      {
        var i = this.map.indices[ key ];
  
        this.map.remove( key );
        this.trigger( Collection.Events.Remove, [this, removing, i] );
  
        if ( !delaySort )
        {
          this.sort();
        }
      }
  
      return removing;
    }
docs: Removes the given model from this collection if it exists - 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} input -
  The model to remove from this collection if it exists.
  @param {Boolean} [delaySort=false] -
  Whether automatic sorting should be delayed until the user manually
  calls {@link Rekord.ModelCollection#sort sort}.
  @param {equalityCallback} [equals=Rekord.equalsStrict] -
  The function which determines whether one of the elements that exist in
  this collection are equivalent to the given value.
  @return {Rekord.Model} -
  The element removed from this collection.
  @emits Rekord.ModelCollection#remove
  @emits Rekord.ModelCollection#sort