docs: function( key, options ) {
  			options || ( options = {} );
  			var rel = this.getRelation( key ),
  				keyContents = rel && rel.keyContents,
  				toFetch = keyContents && _.select( _.isArray( keyContents ) ? keyContents : [ keyContents ], function( item ) {
  						var id = _.isString( item ) || _.isNumber( item ) ? item : item[ rel.relatedModel.prototype.idAttribute ];
  						return id && !Backbone.Relational.store.find( rel.relatedModel, id );
  					}, this );
  			
  			if ( toFetch && toFetch.length ) {
  				// Create a model for each entry in 'keyContents' that is to be fetched
  				var models = _.map( toFetch, function( item ) {
  						if ( typeof( item ) === 'object' ) {
  							var model = new rel.relatedModel( item );
  						}
  						else {
  							var attrs = {};
  							attrs[ rel.relatedModel.prototype.idAttribute ] = item;
  							var model = new rel.relatedModel( attrs );
  						}
  						return model;
  					}, this );
  				
  				// Try if the 'collection' can provide a url to fetch a set of models in one request.
  				if ( rel.related instanceof Backbone.Collection && _.isFunction( rel.related.url ) ) {
  					var setUrl = rel.related.url( models );
  				}
  				
  				// An assumption is that when 'Backbone.Collection.url' is a function, it can handle building of set urls.
  				// To make sure it can, test if the url we got by supplying a list of models to fetch is different from
  				// the one supplied for the default fetch action (without args to 'url').
  				if ( setUrl && setUrl !== rel.related.url() ) {
  					var opts = _.defaults( {
  							error: function() {
  									var args = arguments;
  									_.each( models, function( model ) {
  											model.destroy();
  											options.error && options.error.apply( model, args );
  										})
  								},
  							url: setUrl
  						},
  						options,
  						{ add: true }
  					);
  					
  					var requests = [ rel.related.fetch( opts ) ];
  				}
  				else {
  					var requests = _.map( models, function( model ) {
  							var opts = _.defaults( {
  								error: function() {
  										model.destroy();
  										options.error && options.error.apply( model, arguments );
  									}
  								},
  								options
  							);
  							return model.fetch( opts );
  						}, this );
  				}
  			}
  			
  			return _.isUndefined( requests ) ? [] : requests;
  		}