src/vs/workbench/api/common/extHostComments.ts/ExtHostCommentThread/eventuallyUpdateCommentThread
class ExtHostCommentThread:	eventuallyUpdateCommentThread(): void {
		if (this._isDiposed) {
			return;
		}

		if (!this._acceptInputDisposables.value) {
			this._acceptInputDisposables.value = new DisposableStore();
		}

		const modified = (value: keyof CommentThreadModification): boolean =>
			Object.prototype.hasOwnProperty.call(this.modifications, value);

		const formattedModifications: CommentThreadChanges = {};
		if (modified('range')) {
			formattedModifications.range = extHostTypeConverter.Range.from(this._range);
		}
		if (modified('label')) {
			formattedModifications.label = this.label;
		}
		if (modified('contextValue')) {
			formattedModifications.contextValue = this.contextValue;
		}
		if (modified('comments')) {
			formattedModifications.comments =
				this._comments.map(cmt => convertToModeComment(this, this._commentController, cmt, this._commentsMap));
		}
		if (modified('collapsibleState')) {
			formattedModifications.collapseState = convertToCollapsibleState(this._collapseState);
		}
		if (modified('canReply')) {
			formattedModifications.canReply = this.canReply;
		}
		this.modifications = {};

		this._proxy.$updateCommentThread(
			this._commentController.handle,
			this.handle,
			this._id!,
			this._uri,
			formattedModifications
		);
	}