constructor(map) {
		super();
		this.map = map;
		this._types = new Set(Object.keys(map));
		/** @type {GenerateErrorFn | undefined} */
		this.generateError = generateError.bind(this);
	}
@param {Record<string, Generator>} map map of types