private JPanel buildPluginPathsPanel() {
		// create the UP and DOWN arrows panel
		upButton = new GButton(Icons.UP_ICON);
		upButton.setName("UpArrow");
		upButton.addActionListener(e -> handleSelection(UP));

		downButton = new GButton(Icons.DOWN_ICON);
		downButton.setName("DownArrow");
		downButton.addActionListener(e -> handleSelection(DOWN));
		JPanel arrowButtonsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
		arrowButtonsPanel.add(upButton);
		arrowButtonsPanel.add(downButton);

		// create the Add and Remove panel
		JButton addJarButton = new GButton(ADD_JAR_BUTTON_TEXT);
		addJarButton.addActionListener(e -> addJarCallback());
		JButton addDirButton = new GButton(ADD_DIR_BUTTON_TEXT);
		addDirButton.addActionListener(e -> addDirCallback());
		removeButton = new GButton("Remove");
		removeButton.addActionListener(e -> handleSelection(REMOVE));
		Dimension d = addJarButton.getPreferredSize();
		addDirButton.setPreferredSize(d);
		removeButton.setPreferredSize(d);

		//
		// Button panel for adding and removing jar files
		//
		JPanel otherButtonsPanel = new JPanel();
		JPanel subPanel = new JPanel();
		otherButtonsPanel.add(subPanel);
		int buttonGap = 10;
		subPanel.setLayout(new GridLayout(0, 1, 0, buttonGap));

		int top = 8;
		int side = 5;
		Border inside = BorderFactory.createEmptyBorder(top, side, top, side);
		subPanel.setBorder(inside);

		subPanel.add(addJarButton);
		subPanel.add(addDirButton);
		subPanel.add(removeButton);

		// put the right-side buttons panel together
		JPanel listButtonPanel = new JPanel(new BorderLayout(0, 0));
		listButtonPanel.add(arrowButtonsPanel, BorderLayout.NORTH);
		listButtonPanel.add(otherButtonsPanel, BorderLayout.CENTER);

		//
		// construct the plugin paths list
		//
		JPanel scrollListPanel = new JPanel(new BorderLayout(10, 15));
		pluginPathsList = new JList<>();
		pluginPathsList.addListSelectionListener(new PathListSelectionListener());
		pluginPathsList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

		// give the list a custom cell renderer that shows invalid paths
		// in red (may be preference paths set previously that are no longer
		// available
		pluginPathsList.setCellRenderer(new PluginPathRenderer());
		// component used for sizing all the text fields on the main panel
		scrollPane = new JScrollPane(pluginPathsList);
		scrollPane.setPreferredSize(new Dimension(250, 150));
		scrollListPanel.add(scrollPane, BorderLayout.CENTER);

		//
		// construct the plugin text panel
		//
		JPanel pluginPathListPanel = new JPanel(new BorderLayout(0, 0));
		pluginPathListPanel.add(scrollListPanel, BorderLayout.CENTER);
		pluginPathListPanel.add(listButtonPanel, BorderLayout.EAST);

		pluginPathListPanel.setBorder(new TitledBorder("User Plugin Paths"));

		// set tooltips after adding all components to get around swing
		// tooltip text problem where the text is obscured by a component
		// added after tooltip has been added
		//
		upButton.setToolTipText("Changes the order of search for plugins");
		downButton.setToolTipText("Changes the order of search for plugins");

		pluginPathListPanel.validate();
		return pluginPathListPanel;
	}
Reset the list of paths each time the dialog is shown
@param tool the tool
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/EditPluginPathDialog.java