public void moveClass(@Nonnull Workspace workspace,
	                      @Nonnull WorkspaceResource resource,
	                      @Nonnull JvmClassBundle bundle,
	                      @Nonnull JvmClassInfo info) {
		boolean isRootDirectory = isNullOrEmpty(info.getPackageName());
		ItemTreeSelectionPopup.forPackageNames(bundle, packages -> {
					// We only allow a single package, so the list should contain just one item.
					String oldPackage = isRootDirectory ? "" : info.getPackageName() + "/";
					String newPackage = packages.get(0);
					if (Objects.equals(oldPackage, newPackage)) return;
					if (!newPackage.isEmpty()) newPackage += "/";

					// Create mapping for the class and any inner classes.
					String originalName = info.getName();
					String newName = replacePrefix(originalName, oldPackage, newPackage);
					IntermediateMappings mappings = new IntermediateMappings();
					for (InnerClassInfo inner : info.getInnerClasses()) {
						if (inner.isExternalReference()) continue;
						String innerClassName = inner.getInnerClassName();
						mappings.addClass(innerClassName, newName + innerClassName.substring(originalName.length()));
					}

					// Apply the mappings.
					MappingApplier applier = mappingApplierService.inWorkspace(workspace);
					MappingResults results = applier.applyToPrimaryResource(mappings);
					results.apply();
				})
				.withTitle(Lang.getBinding("dialog.title.move-class"))
				.withTextMapping(name -> textService.getPackageTextProvider(workspace, resource, bundle, name).makeText())
				.withGraphicMapping(name -> iconService.getPackageIconProvider(workspace, resource, bundle, name).makeIcon())
				.show();
	}
Prompts the user to select a package to move the given class into.

@param workspace
		Containing workspace.
@param resource
		Containing resource.
@param bundle
		Containing bundle.
@param info
		Class to move into a different package.
recaf-ui/src/main/java/software/coley/recaf/services/navigation/Actions.java