@TraceMethod(action = "refresh", display = "Refresh variables")
	public void refresh_variables(
			@Param(schema = "VariableContainer", name = "container") RmiTraceObject obj) {
		try (RmiTransaction tx = cmds.state.trace.openTx("RefreshVariables")) {
			String path = obj.getPath();
			String ppath = cmds.getParentPath(path);
			Object parent = getObjectFromPath(ppath);
			try {
				if (parent instanceof Method method) {
					if (path.endsWith("Arguments")) {
						cmds.putLocalVariableContainer(path, method.arguments());
					}
					if (path.endsWith("Variables")) {
						cmds.putLocalVariableContainer(path, method.variables());
					}
				}
				if (parent instanceof StackFrame frame) {
					Map<LocalVariable, Value> map = frame.getValues(frame.visibleVariables());
					cmds.putLocalVariableContainer(path, map);
				}
			}
			catch (AbsentInformationException e) {
				// IGNORE
			}
		}
	}
NB. Did not assign action="refresh" because this method is expensive. Assigning that action
name will cause the UI to do it upon expanding the node, which we <em>do not</em> want.
Ghidra/Debug/Debugger-jpda/src/main/java/ghidra/dbg/jdi/rmi/jpda/JdiMethods.java