private AbstractLaunchConfigurationTab getUserDefinedArgumentsTab() {
		return new AbstractLaunchConfigurationTab() {

			private Text programArgsText;
			private Text vmArgsText;

			@Override
			public void createControl(Composite parent) {
				Composite container = new Composite(parent, SWT.NONE);
				container.setLayout(new GridLayout(1, true));
				GridData gd = new GridData(GridData.FILL_BOTH);
				container.setLayoutData(gd);

				// Program arguments
				Group group = new Group(container, SWT.NONE);
				group.setLayout(new GridLayout());
				group.setLayoutData(new GridData(GridData.FILL_BOTH));
				group.setText("Program arguments:");
				programArgsText = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
				gd = new GridData(GridData.FILL_BOTH);
				gd.heightHint = 40;
				gd.widthHint = 100;
				programArgsText.setLayoutData(gd);
				programArgsText.addModifyListener(evt -> scheduleUpdateJob());

				// VM arguments
				group = new Group(container, SWT.NONE);
				group.setLayout(new GridLayout());
				group.setLayoutData(new GridData(GridData.FILL_BOTH));
				group.setText("VM arguments (appended to arguments defined in launch.properties):");
				vmArgsText = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
				gd = new GridData(GridData.FILL_BOTH);
				gd.heightHint = 40;
				gd.widthHint = 100;
				vmArgsText.setLayoutData(gd);
				vmArgsText.addModifyListener(evt -> scheduleUpdateJob());

				setControl(container);
			}

			@Override
			public void setDefaults(ILaunchConfigurationWorkingCopy config) {
				try {
					ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
					wc.setAttribute(GhidraLaunchUtils.ATTR_PROGAM_ARGUMENTS, "");
					wc.setAttribute(GhidraLaunchUtils.ATTR_VM_ARGUMENTS, "");
					wc.doSave();
				}
				catch (CoreException e) {
					EclipseMessageUtils.error("Failed to set argument defaults.", e);
				}
			}

			@Override
			public void initializeFrom(ILaunchConfiguration config) {
				try {
					programArgsText.setText(
						config.getAttribute(GhidraLaunchUtils.ATTR_PROGAM_ARGUMENTS, ""));
					vmArgsText.setText(
						config.getAttribute(GhidraLaunchUtils.ATTR_VM_ARGUMENTS, ""));
				}
				catch (CoreException e) {
					EclipseMessageUtils.error("Failed to initialize the arguments.", e);
				}
			}

			@Override
			public void performApply(ILaunchConfigurationWorkingCopy config) {
				try {
					ILaunchConfigurationWorkingCopy wc = config.getWorkingCopy();
					wc.setAttribute(GhidraLaunchUtils.ATTR_PROGAM_ARGUMENTS,
						programArgsText.getText());
					wc.setAttribute(GhidraLaunchUtils.ATTR_VM_ARGUMENTS, vmArgsText.getText());
					wc.doSave();
				}
				catch (CoreException e) {
					EclipseMessageUtils.error("Failed to apply the arguments.", e);
				}
			}

			@Override
			public String getName() {
				return "Arguments";
			}
		};
	}
Gets the user-defined arguments to use.  These will be appended to Ghidra's required
launch arguments, which are hidden from the tab group.

@return The user-defined arguments to use.
GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/launchers/GhidraLaunchTabGroup.java