private void create(File ghidraInstallDir, String projectName, File projectDir,
			boolean createRunConfig, String runConfigMemory,
			Set<ModuleTemplateType> moduleTemplateTypes, ProjectPythonInterpreter pythonInterpreter,
			IProgressMonitor monitor) throws InvocationTargetException {
		try {
			info("Creating " + projectName + " at " + projectDir);
			monitor.beginTask("Creating " + projectName, 3);

			GhidraApplicationLayout ghidraLayout = new GhidraApplicationLayout(ghidraInstallDir);
			monitor.worked(1);

			IJavaProject javaProject =
				GhidraModuleUtils.createGhidraModuleProject(projectName, projectDir,
					createRunConfig, runConfigMemory, ghidraLayout, pythonInterpreter, monitor);
			monitor.worked(1);

			IFile sourceFile = GhidraModuleUtils.configureModuleSource(javaProject,
				projectDir, ghidraLayout, moduleTemplateTypes, monitor);
			monitor.worked(1);

			if (sourceFile != null) {
				EclipseMessageUtils.displayInEditor(sourceFile, workbench);
			}

			info("Finished creating " + projectName);
		}
		catch (IOException | ParseException | CoreException e) {
			throw new InvocationTargetException(e);
		}
		finally {
			monitor.done();
		}
	}
Creates a Ghidra module project.

@param ghidraInstallDir The Ghidra installation directory to use.
@param projectName The name of the project to create.
@param projectDir The project's directory.
@param createRunConfig Whether or not to create a new run configuration for the project.
@param runConfigMemory The run configuration's desired memory.  Could be null.
@param moduleTemplateTypes The desired module template types.
@param pythonInterpreter The Python interpreter to use.	
@param monitor The monitor to use during project creation.
@throws InvocationTargetException if an error occurred during project creation.
GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/wizards/CreateGhidraModuleProjectWizard.java