public MuleModule(String name, Set<String> exportedPackages, Set<String> exportedPaths, Set<String> privilegedExportedPackages,
Set<String> privilegedArtifacts, List<ExportedService> exportedServices) {
checkArgument(!StringUtils.isEmpty(name), "name cannot be empty");
checkArgument(exportedPackages != null, "exportedPackages cannot be null");
checkArgument(exportedPaths != null, "exportedPaths cannot be null");
checkArgument(!containsMetaInfServicesResource(exportedPaths), "exportedPaths cannot contain paths on META-INF/services");
checkArgument(privilegedExportedPackages != null, "privilegedExportedPackages cannot be null");
checkArgument(privilegedArtifacts != null, "privilegedArtifacts cannot be null");
checkArgument(exportedServices != null, "exportedServices cannot be null");
this.name = name;
this.exportedPackages = unmodifiableSet(exportedPackages);
this.exportedPaths = unmodifiableSet(exportedPaths);
this.privilegedExportedPackages = privilegedExportedPackages;
this.privilegedArtifacts = privilegedArtifacts;
this.exportedServices = exportedServices;
}