docs: function(whereProperties, whereValue, whereEquals, out, delaySort)
    {
      var where = createWhere( whereProperties, whereValue, whereEquals );
      var removed = out || this.cloneEmpty();
      var removedIndices = [];
  
      for (var i = 0; i < this.length; i++)
      {
        var value = this[ i ];
  
        if ( where( value ) )
        {
          removedIndices.push( i );
          removed.push( value );
        }
      }
  
      for (var i = removedIndices.length - 1; i >= 0; i--)
      {
        AP.splice.call( this, removedIndices[ i ], 1 );
      }
  
      this.trigger( Collection.Events.Removes, [this, removed, removedIndices] );
  
      if ( !delaySort )
      {
        this.sort( undefined, undefined, true );
      }
  
      return removed;
    }