src/vs/workbench/contrib/audioCues/browser/audioCueLineFeatureContribution.ts/InlineCompletionLineFeature/getObservableState
class InlineCompletionLineFeature:	getObservableState(editor: ICodeEditor, _model: ITextModel): IObservable<LineFeatureState> {
		const ghostTextController = GhostTextController.get(editor);
		if (!ghostTextController) {
			return constObservable<LineFeatureState>({
				isPresent: () => false,
			});
		}

		const activeGhostText = observableFromEvent(
			ghostTextController.onActiveModelDidChange,
			() => ghostTextController.activeModel
		).map((activeModel) => (
			activeModel
				? observableFromEvent(
					activeModel.inlineCompletionsModel.onDidChange,
					() => activeModel.inlineCompletionsModel.ghostText
				)
				: undefined
		));

		return derivedObservable<LineFeatureState>('ghostText', reader => {
			const ghostText = activeGhostText.read(reader)?.read(reader);
			return {
				isPresent(lineNumber) {
					return ghostText?.lineNumber === lineNumber;
				}
			};
		});
	}