src/vs/workbench/contrib/debug/browser/variablesView.ts/VariablesView/onContextMenu
class VariablesView:	private async onContextMenu(e: ITreeContextMenuEvent<IExpression | IScope>): Promise<void> {
		const variable = e.element;
		if (variable instanceof Variable && !!variable.value) {
			this.debugProtocolVariableMenuContext.set(variable.variableMenuContext || '');
			variableInternalContext = variable;
			const session = this.debugService.getViewModel().focusedSession;
			this.variableEvaluateName.set(!!variable.evaluateName);
			this.breakWhenValueChangesSupported.reset();
			this.breakWhenValueIsAccessedSupported.reset();
			this.breakWhenValueIsReadSupported.reset();
			if (session && session.capabilities.supportsDataBreakpoints) {
				dataBreakpointInfoResponse = await session.dataBreakpointInfo(variable.name, variable.parent.reference);
				const dataBreakpointId = dataBreakpointInfoResponse?.dataId;
				const dataBreakpointAccessTypes = dataBreakpointInfoResponse?.accessTypes;
				if (!dataBreakpointAccessTypes) {
					// Assumes default behaviour: Supports breakWhenValueChanges
					this.breakWhenValueChangesSupported.set(!!dataBreakpointId);
				} else {
					dataBreakpointAccessTypes.forEach(accessType => {
						switch (accessType) {
							case 'read':
								this.breakWhenValueIsReadSupported.set(!!dataBreakpointId);
								break;
							case 'write':
								this.breakWhenValueChangesSupported.set(!!dataBreakpointId);
								break;
							case 'readWrite':
								this.breakWhenValueIsAccessedSupported.set(!!dataBreakpointId);
								break;
						}
					});
				}
			}

			const context: IVariablesContext = {
				container: (variable.parent as (Variable | Scope)).toDebugProtocolObject(),
				variable: variable.toDebugProtocolObject()
			};
			const actions: IAction[] = [];
			const actionsDisposable = createAndFillInContextMenuActions(this.menu, { arg: context, shouldForwardArgs: false }, actions);
			this.contextMenuService.showContextMenu({
				getAnchor: () => e.anchor,
				getActions: () => actions,
				onHide: () => dispose(actionsDisposable)
			});
		}
	}