constructor(tokenInfo, indentSize, indentType, maxIndex) {
		this._tokenInfo = tokenInfo;
		this._indentSize = indentSize;
		this._indentType = indentType;

		this._indexMap = new IndexMap(maxIndex);
		this._indexMap.insert(0, { offset: 0, from: null, force: false });

		this._lockedFirstTokens = new WeakMap();
		this._desiredIndentCache = new WeakMap();
		this._ignoredTokens = new WeakSet();
	}
@param {TokenInfo} tokenInfo a TokenInfo instance
@param {number} indentSize The desired size of each indentation level
@param {string} indentType The indentation character
@param {number} maxIndex The maximum end index of any token