@Override
	public void onScanCompleted(@Nonnull Set<VirtualMachineDescriptor> added,
								@Nonnull Set<VirtualMachineDescriptor> removed) {
		FxThreadUtil.run(() -> {
			// Add new VM's found
			for (VirtualMachineDescriptor descriptor : added) {
				if (vmCellMap.containsKey(descriptor))
					continue;
				VmPane cell = new VmPane(descriptor);
				vmCellMap.put(descriptor, cell);

				// Button to display the cell
				Button button = new ActionButton(cell.getLabel(), () -> {
					vmDisplayPane.setCenter(cell);
					currentVmPane = cell;

					// Mark button as 'selected'
					for (Node child : vmButtonsList.getChildren())
						child.getStyleClass().remove(Styles.BUTTON_OUTLINED);
					vmButtonMap.get(descriptor).getStyleClass().add(Styles.BUTTON_OUTLINED);
				});
				button.setFocusTraversable(false);
				button.setMaxWidth(Double.MAX_VALUE);
				button.setAlignment(Pos.CENTER_LEFT);
				button.getStyleClass().add("muted");
				vmButtonMap.put(descriptor, button);
				vmButtonsList.getChildren().add(button);

				// Highlight the button bright green if it is the current attached VM.
				connectedVm.addChangeListener((ob, old, cur) -> {
					if (cur == descriptor) {
						button.getStyleClass().addAll(Styles.SUCCESS);
					} else {
						button.getStyleClass().removeAll(Styles.SUCCESS);
					}
				});
			}

			// Remove VM's that are no longer alive.
			for (VirtualMachineDescriptor descriptor : removed) {
				Button removedButton = vmButtonMap.remove(descriptor);
				vmButtonsList.getChildren().remove(removedButton);

				VmPane cell = vmCellMap.remove(descriptor);
				if (cell != null) cell.setDisable(true);
			}

			// Refresh current cell.
			if (currentVmPane != null && !currentVmPane.isDisabled())
				currentVmPane.update();
		});
	}
Place a warning box stating that the feature is not available.
recaf-ui/src/main/java/software/coley/recaf/ui/pane/RemoteVirtualMachinesPane.java