addInRepoAddon(name, version = '0.0.0', optionsOrCallback) {
    const options = getOptionsObjectWithCallbackFunction({ allowCachingPerBundle: false }, optionsOrCallback);

    const inRepoAddon = new EmberCLIFixturifyProject(name, version, (addon) => {
      prepareAddon(addon, options);

      if (typeof options.callback === 'function') {
        options.callback(addon);
      }
    });

    // configure the current project to have an ember-addon configured at the
    // appropriate path, i.e. under a common root directory (lib).
    const addonRootDir = 'lib';

    // Add to ember-addon.paths list
    let addon = (this.pkg['ember-addon'] = this.pkg['ember-addon'] || {});
    addon.paths = addon.paths || [];

    const addonPath = `${addonRootDir}/${name}`;

    if (addon.paths.find((path) => path.toLowerCase() === addonPath.toLowerCase())) {
      throw new Error(`project: ${this.name} already contains the in-repo-addon: ${name}`);
    }

    addon.paths.push(addonPath);

    this.files[addonRootDir] = this.files[addonRootDir] || {};

    let addonJSON = inRepoAddon.toJSON();
    Object.assign(this.files[addonRootDir], addonJSON);
    return inRepoAddon;
  }
Add an in-repo addon to this object. The addon files will be written in
this object's `lib/<addon_name>` directory when this object is written out.

@param {String} name name of the addon
@param {String} version version of the addon, defaults to '0.0.0'
@param {Object|Function} optionsOrCallback an object consisting of properties and values to apply when creating
the addon, or a callback function to pass the newly-created FixturifyProject to. Important options
include 'allowCachingPerBundle' (true if the addon can be proxied, defaults to false) and 'callback' (if you want to include
a callback function while also specifying other properties.)
@returns {FixturifyProject} the newly-created addon