src/vs/editor/common/viewModel/viewModelLines.ts/ViewModelLinesFromProjectedModel/getViewLinesBracketGuides
class ViewModelLinesFromProjectedModel:	public getViewLinesBracketGuides(viewStartLineNumber: number, viewEndLineNumber: number, activeViewPosition: IPosition | null, options: BracketGuideOptions): IndentGuide[][] {
		const modelActivePosition = activeViewPosition ? this.convertViewPositionToModelPosition(activeViewPosition.lineNumber, activeViewPosition.column) : null;
		const resultPerViewLine: IndentGuide[][] = [];

		for (const group of this.getViewLineInfosGroupedByModelRanges(viewStartLineNumber, viewEndLineNumber)) {
			const modelRangeStartLineNumber = group.modelRange.startLineNumber;

			const bracketGuidesPerModelLine = this.model.guides.getLinesBracketGuides(
				modelRangeStartLineNumber,
				group.modelRange.endLineNumber,
				modelActivePosition,
				options
			);

			for (const viewLineInfo of group.viewLines) {
				if (viewLineInfo.isWrappedLineContinuation && this.getMinColumnOfViewLine(viewLineInfo) === 1) {
					// Don't add indent guides when the wrapped line continuation has no wrapping-indentation.
					resultPerViewLine.push([]);
				} else {
					const bracketGuides = bracketGuidesPerModelLine[viewLineInfo.modelLineNumber - modelRangeStartLineNumber];

					// visibleColumns stay as they are (this is a bug and needs to be fixed, but it is not a regression)
					// model-columns must be converted to view-model columns.
					const result = bracketGuides.map(g => {
						if (g.forWrappedLinesAfterColumn !== -1) {
							const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesAfterColumn);
							if (p.lineNumber >= viewLineInfo.modelLineWrappedLineIdx) {
								return undefined;
							}
						}

						if (g.forWrappedLinesBeforeOrAtColumn !== -1) {
							const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.forWrappedLinesBeforeOrAtColumn);
							if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
								return undefined;
							}
						}

						if (!g.horizontalLine) {
							return g;
						}

						let column = -1;
						if (g.column !== -1) {
							const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.column);
							if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
								column = p.column;
							} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
								column = this.getMinColumnOfViewLine(viewLineInfo);
							} else if (p.lineNumber > viewLineInfo.modelLineWrappedLineIdx) {
								return undefined;
							}
						}

						const viewPosition = this.convertModelPositionToViewPosition(viewLineInfo.modelLineNumber, g.horizontalLine.endColumn);
						const p = this.modelLineProjections[viewLineInfo.modelLineNumber - 1].getViewPositionOfModelPosition(0, g.horizontalLine.endColumn);
						if (p.lineNumber === viewLineInfo.modelLineWrappedLineIdx) {
							return new IndentGuide(g.visibleColumn, column, g.className,
								new IndentGuideHorizontalLine(g.horizontalLine.top,
									viewPosition.column),
								- 1,
								-1,
							);
						} else if (p.lineNumber < viewLineInfo.modelLineWrappedLineIdx) {
							return undefined;
						} else {
							if (g.visibleColumn !== -1) {
								// Don't repeat horizontal lines that use visibleColumn for unrelated lines.
								return undefined;
							}
							return new IndentGuide(g.visibleColumn, column, g.className,
								new IndentGuideHorizontalLine(g.horizontalLine.top,
									this.getMaxColumnOfViewLine(viewLineInfo)
								),
								-1,
								-1,
							);
						}
					});
					resultPerViewLine.push(result.filter((r): r is IndentGuide => !!r));
				}
			}
		}

		return resultPerViewLine;
	}