relatedInstance(models, options) {
      models = models || [];
      options = options || {};
      const Target = this.target;

      // If it's a single model, check whether there's already a model we can pick from, otherwise
      // create a new instance.
      if (this.isSingle()) {
        if (!(Target.prototype instanceof ModelBase)) {
          throw new Error(`The ${this.type} related object must be a Bookshelf.Model`);
        }
        return models[0] || new Target();
      }

      // Allows us to just use a model, but create a temporary collection for a "*-many" relation.
      if (Target.prototype instanceof ModelBase) {
        return Target.collection(models, {
          parse: true,
          merge: options.merge,
          remove: options.remove
        });
      }
      return new Target(models, {parse: true});
    }
Creates a new model or collection instance, depending on the `relatedData` settings and the
models passed in.

@param {Model[]} [models]
@param {object} [options]
@return {Model|Collection} The new instance.