static fromKnownMatrix(symbol, matrix, name='', blurb='', serializedId=undefined, alternate=undefined) {
        if (!(matrix instanceof Matrix)) {
            throw new DetailedError("Bad matrix.", {symbol, matrix, name, blurb});
        }
        let builder = new GateBuilder().
            setSymbol(symbol).
            setSerializedId(serializedId === undefined ? symbol : serializedId).
            setTitle(name).
            setBlurb(blurb).
            setKnownEffectToMatrix(matrix);
        if (alternate !== undefined) {
            builder = builder.setAlternate(alternate);
        }
        return builder.gate;
    }
@param {!string} symbol
@param {!Matrix} matrix
@param {!string} name
@param {!string} blurb
@param {undefined|!string} serializedId
@param {undefined|!Gate=} alternate
@returns {!Gate}