_drawColumnSurvivalRate(painter, gateColumn, col, stats) {
        if (gateColumn.indexOfNonUnitaryGate() === undefined) {
            return;
        }

        let preRate = stats.survivalRate(col - 1);
        let postRate = stats.survivalRate(col);

        let marginalRate = (postRate - preRate) / preRate;
        if (isNaN(marginalRate) || Math.abs(marginalRate) <= 0.005) {
            return;
        }

        let descAmount;
        let descCategory;
        if (marginalRate < 0) {
            let rate = Math.round(-marginalRate * 100);
            let rateDesc = marginalRate === -1 ? "100" : rate < 100 ? rate : ">99";
            descAmount = `${rateDesc}%`;
            descCategory = 'omits';
        } else {
            let factor = Math.round(marginalRate * 100 + 100);
            descAmount = `${factor}%`;
            descCategory = 'gains';
        }

        let pt = this.opRect(col).bottomCenter();
        painter.print(
            descCategory,
            pt.x,
            pt.y - 28,
            'center',
            'bottom',
            'red',
            '14px sans-serif',
            800,
            50);
        painter.print(
            descAmount,
            pt.x,
            pt.y - 13,
            'center',
            'bottom',
            'red',
            '14px sans-serif',
            800,
            50);
    }
@param {!Painter} painter
@param {!GateColumn} gateColumn
@param {!int} col
@param {!CircuitStats} stats
@private