minimumRequiredWireCount() {
        let best = 1;
        for (let c of this.columns) {
            best = Math.max(best, c.minimumRequiredWireCount());
        }
        for (let usedWire of this.customInitialValues.keys()) {
            best = Math.max(best, usedWire + 1);
        }
        return best;
    }
@returns {!int} The minimum number of wires needed to hold the gates in the circuit, accounting for their height
and assuming the gate positions are fixed (i.e. wires can only be added or removed from the bottom).