public static IJavaProject createGhidraModuleProject(String projectName, File projectDir,
			boolean createRunConfig, String runConfigMemory, GhidraApplicationLayout ghidraLayout,
			ProjectPythonInterpreter jythonInterpreterName, IProgressMonitor monitor)
			throws IOException, ParseException, CoreException {

		// Create empty Ghidra project
		IJavaProject javaProject =
			GhidraProjectUtils.createEmptyGhidraProject(projectName, projectDir, createRunConfig,
				runConfigMemory, ghidraLayout, jythonInterpreterName, monitor);
		IProject project = javaProject.getProject();

		// Set default output location
		javaProject.setOutputLocation(project.getFolder(defaultOutputPath).getFullPath(), monitor);
		
		// Create source directories and add them to the project's classpath
		List<IClasspathEntry> classpathEntries = new LinkedList<>();
		for (String sourcePath : sourceToOutputMap.keySet()) {
			IFolder sourceFolder = project.getFolder(sourcePath);
			IFolder outputFolder = project.getFolder(sourceToOutputMap.get(sourcePath));
			GhidraProjectUtils.createFolder(sourceFolder, monitor);
			classpathEntries.add(JavaCore.newSourceEntry(sourceFolder.getFullPath(), new IPath[0],
				outputFolder.getFullPath()));
		}
		GhidraProjectUtils.addToClasspath(javaProject, classpathEntries, monitor);

		return javaProject;
	}
Creates a new Ghidra module project with the given name.

@param projectName The name of the project to create.
@param projectDir The directory the project will be created in.
@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 ghidraLayout The Ghidra layout to link the project to.
@param jythonInterpreterName The name of the Jython interpreter to use for Python support.
  Could be null if Python support is not wanted.
@param monitor The progress monitor to use during project creation.
@return The created project.
@throws IOException If there was a file-related problem with creating the project.
@throws ParseException If there was a parse-related problem with creating the project.
@throws CoreException If there was an Eclipse-related problem with creating the project.
GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraModuleUtils.java