constructor(opts) {
        this.field = opts.field;
        this.fieldName = opts.fieldName;
        this.model = opts.model;
        this.orm = opts.orm;
        /**
         * the field itself has no knowledge of the model
         * it is being installed upon; we need to inform it
         * that it is a self-referencing field for the field
         * to be able to make better informed decisions
         */
        if (this.field.references(this.model)) {
            this.field.toModelName = "this";
        }
    }
Defines algorithm for installing a field onto a model and related models.
Conforms to the template method behavioral design pattern.
@private
@memberof module:fields