_disabledReason(inputMeasureMask, row, outerRowOffset, context, isNested) {
        let g = this.gates[row];
        if (g === undefined) {
            return undefined;
        }

        let args = new GateCheckArgs(g, this, outerRowOffset + row, inputMeasureMask, context, isNested);
        return g.customDisableReasonFinder(args) ||
            GateColumn._disabledReason_inputs(args) ||
            this._disabledReason_controlInside(row) ||
            this._disabledReason_remixing(row, inputMeasureMask) ||
            this._disabledReason_overlappingTags(outerRowOffset, row);
    }
@param {!int} inputMeasureMask
@param {!int} row
@param {!int} outerRowOffset
@param {!Map<!string, *>} context
@param {!boolean} isNested
@returns {undefined|!string}
@private