public void createModule(
     final JavaPackage topLevelPackage,
     final String name,
     final GAV parent,
     final PackagingType packagingType) {
   Assert.isTrue(isCreateModuleAvailable(), "Cannot create modules at this time");
   final String moduleName = StringUtils.defaultIfEmpty(name, topLevelPackage.getLastElement());
   final GAV module =
       new GAV(topLevelPackage.getFullyQualifiedPackageName(), moduleName, parent.getVersion());
   final ProjectMetadata project = getProjectMetadata();
   // TODO create or update "modules" element of parent module's POM
   // Create the new module's directory, named by its artifactId (Maven standard practice)
   fileManager.createDirectory(moduleName);
   // Focus the new module so that artifacts created below go to the correct path(s)
   focus(module);
   packagingType.createArtifacts(topLevelPackage, name, "${java.version}", parent);
 }