code: function Sequelize(database, username, password, options) {
  	if(typeof database == 'object') {
  		options = database;
  	} else if (typeof username == 'object') {
  		options = username;
  	} else if (typeof password == 'object') {
  		options = password;
  	}
  	
  	this.queryInterface = new QueryInterface( _.pick(options || {}, ['stopPropagation']) );
  	
  	/**
  	 * Options passed into the Sequelize initialization
  	 * 
  	 * @member Sequelize
  	 * @property
  	 **/
  	this.options = _.extend({
  		dialect: 'mock',
  	}, options || {});
  	
  	/**
  	 * Used to cache and override model imports for easy mock model importing
  	 * 
  	 * @member Sequelize
  	 * @property
  	 **/
  	this.importCache = {};
  	
  	/**
  	 * Models that have been defined in this Sequelize Mock instances
  	 * 
  	 * @member Sequelize
  	 * @property
  	 **/
  	this.models = {};
  }
docs: Sequelize Mock Object. This can be initialize much the same way that Sequelize itself
  is initialized. Any configuration or options is ignored, so it can be used as a drop-in
  replacement for Sequelize but does not have all the same functionality or features.
  
  @class Sequelize
  @constructor
  @param {String} [database] Ignored for Mock objects, supported to match Sequelize
  @param {String} [username] Ignored for Mock objects, supported to match Sequelize
  @param {String} [password] Ignored for Mock objects, supported to match Sequelize
  @param {String} [options] Options object. Most default Sequelize options are ignored unless listed below. All, however, are available by accessing `sequelize.options`
  @param {String} [options.dialect='mock'] Dialect that the system will use. Avaible to be returned by `getDialect()` but has no other effect
  @param {Boolean} [options.autoQueryFallback] Flag inherited by defined Models indicating if we should try and generate results based on the query automatically
  @param {Boolean} [options.stopPropagation] Flag inherited by defined Models indicating if we should not propagate to the parent