@TraceMethod(display = "Refresh reference types")
	public void refresh_reference_types(
			@Param(schema = "ReferenceTypeContainer", name = "container") RmiTraceObject obj) {
		try (RmiTransaction tx = cmds.state.trace.openTx("RefreshReferenceTypes")) {
			String path = obj.getPath();
			String ppath = cmds.getParentPath(path);
			Object parent = getObjectFromPath(ppath);
			if (parent instanceof VirtualMachine vm) {
				cmds.putReferenceTypeContainer(path, vm.allClasses());
			}
			if (parent instanceof ClassLoaderReference ref) {
				if (path.endsWith("DefinedClasses")) {
					cmds.putReferenceTypeContainer(path, ref.definedClasses());
				}
				if (path.endsWith("VisibleClasses")) {
					cmds.putReferenceTypeContainer(path, ref.visibleClasses());
				}
			}
			if (parent instanceof ClassType ct) {
				if (path.endsWith("AllInterfaces")) {
					cmds.putInterfaceTypes(path, ct.allInterfaces());
				}
				if (path.endsWith("Interfaces")) {
					cmds.putInterfaceTypes(path, ct.interfaces());
				}
				if (path.endsWith("SubClasses")) {
					cmds.putClassTypes(path, ct.subclasses());
				}
			}
			if (parent instanceof InterfaceType it) {
				if (path.endsWith("Implementors")) {
					cmds.putClassTypes(path, it.implementors());
				}
				if (path.endsWith("SubInterfaces")) {
					cmds.putInterfaceTypes(path, it.subinterfaces());
				}
				if (path.endsWith("SuperInterfaces")) {
					cmds.putInterfaceTypes(path, it.superinterfaces());
				}
			}
		}
	}
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