findLCAHost(engineInstance) {
    // only compute once for a given engine
    // we're using the engine name as the cache key here because regardless of its
    // version, lazy engines will always get output to: `engines-dist/${engineName}`
    let lcaHost = this._lcaHostCache.get(engineInstance.name);

    if (lcaHost) {
      return lcaHost;
    }

    if (!engineInstance._packageInfo.isForEngine()) {
      throw new Error(
        `[ember-cli] \`findLCAHost\` should only be used for engines; \`${engineInstance.name}\` is not an engine`
      );
    }

    const { hostPackageInfo } = this.getHostAddonInfo(engineInstance._packageInfo);

    let curr = engineInstance;

    while (curr && curr.parent) {
      if (curr.app) {
        lcaHost = curr.app;
        break;
      }

      if (curr._packageInfo === hostPackageInfo) {
        lcaHost = curr;
        break;
      }

      curr = curr.parent;
    }

    if (lcaHost) {
      this._lcaHostCache.set(engineInstance.name, lcaHost);
      return lcaHost;
    }

    // this should _never_ be triggered
    throw new Error(
      `[ember-cli] Could not find an LCA host for: \`${engineInstance.name}\` (located at \`${
        engineInstance.packageRoot || engineInstance.root
      }\`)`
    );
  }
This returns the LCA host for a given engine; we use the associated package info
to compute this (see `getHostAddonInfo` above); this finds the lowest common ancestor
that is considered a host amongst _all_ engines by the same name in the project. This
function is intended to replace the original behavior in `ember-engines`.

For more info, see the original implementation here:

https://github.com/ember-engines/ember-engines/blob/master/packages/ember-engines/lib/utils/find-lca-host.js

@method findLCAHost
@param {EngineAddon} engineInstance
@return {EngineAddon|EmberApp}