getConversionPath(from, to) {
        let bestConverterPath, selectedType;
        let knownFrom = this._known[from];
        if (!knownFrom) {
            this._known[from] = knownFrom = {};
        }

        if (Array.isArray(to)) {
            $.console.assert(to.length > 0, "[getConversionPath] conversion 'to' type must be defined.");
            let bestCost = Infinity;

            //FIXME: pre-compute all paths in 'to' array? could be efficient for multiple
            // type system, but overhead for simple use cases... now we just use the first type if costs unknown
            selectedType = to[0];

            for (const outType of to) {
                const conversion = knownFrom[outType];
                if (conversion && bestCost > conversion.cost) {
                    bestConverterPath = conversion;
                    bestCost = conversion.cost;
                    selectedType = outType;
                }
            }
        } else {
            $.console.assert(typeof to === "string", "[getConversionPath] conversion 'to' type must be defined.");
            bestConverterPath = knownFrom[to];
            selectedType = to;
        }

        if (!bestConverterPath) {
            bestConverterPath = this.graph.dijkstra(from, selectedType);
            this._known[from][selectedType] = bestConverterPath;
        }
        return bestConverterPath ? bestConverterPath.path : undefined;
    }
Get possible system type conversions and cache result.
@param {string} from data item type
@param {string|string[]} to array of accepted types
@return {ConversionStep[]|undefined} array of required conversions (returns empty array
 for from===to), or undefined if the system cannot convert between given types.
 Each object has 'transform' function that converts between neighbouring types, such
 that x = arr[i].transform(x) is valid input for converter arr[i+1].transform(), e.g.
 arr[i+1].transform(arr[i].transform( ... )) is a valid conversion procedure.

 Note: if a function is returned, it is a callback called once the data is ready.