_implicitInverseFor(association) {
    let associations = this._schema.associationsFor(this.modelName);
    let modelName = association.ownerModelName;

    return values(associations)
      .filter((candidate) => candidate.modelName === modelName)
      .reduce((inverse, candidate) => {
        let candidateInverse = candidate.opts.inverse;
        let candidateIsImplicitInverse = candidateInverse === undefined;
        let candidateIsExplicitInverse = candidateInverse === association.name;

        let candidateMatches =
          candidateIsImplicitInverse || candidateIsExplicitInverse;

        if (candidateMatches) {
          // Need to move this check to compile-time init
          assert(
            !inverse,
            `The ${this.modelName} model has multiple possible inverse associations for the ${association.ownerModelName}.${association.name} association.`
          );
          inverse = candidate;
        }

        return inverse;
      }, null);
  }
Finds if there is an inverse for an association that does not
    explicitly define one.

    @private
    @hide