diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go
index 001cac8..06e154a 100644
--- a/fsgen/filesystem_creator.go
+++ b/fsgen/filesystem_creator.go
@@ -68,7 +68,7 @@
 }
 
 // Map of module name to depCandidateProps
-type multilibDeps *map[string]*depCandidateProps
+type multilibDeps map[string]*depCandidateProps
 
 // Information necessary to generate the filesystem modules, including details about their
 // dependencies
@@ -76,7 +76,7 @@
 	// List of modules in `PRODUCT_PACKAGES` and `PRODUCT_PACKAGES_DEBUG`
 	depCandidates []string
 	// Map of names of partition to the information of modules to be added as deps
-	fsDeps map[string]multilibDeps
+	fsDeps map[string]*multilibDeps
 	// List of name of partitions to be generated by the filesystem_creator module
 	soongGeneratedPartitions []string
 	// Mutex to protect the fsDeps
@@ -90,10 +90,6 @@
 	Overrides []string
 }
 
-func newMultilibDeps() multilibDeps {
-	return &map[string]*depCandidateProps{}
-}
-
 func defaultDepCandidateProps(config android.Config) *depCandidateProps {
 	return &depCandidateProps{
 		Namespace: ".",
@@ -122,9 +118,9 @@
 
 		return &FsGenState{
 			depCandidates: candidates,
-			fsDeps: map[string]multilibDeps{
+			fsDeps: map[string]*multilibDeps{
 				// These additional deps are added according to the cuttlefish system image bp.
-				"system": &map[string]*depCandidateProps{
+				"system": {
 					"com.android.apex.cts.shim.v1_prebuilt":     defaultDepCandidateProps(ctx.Config()),
 					"dex_bootjars":                              defaultDepCandidateProps(ctx.Config()),
 					"framework_compatibility_matrix.device.xml": defaultDepCandidateProps(ctx.Config()),
@@ -142,19 +138,19 @@
 					"public.libraries.android.txt": defaultDepCandidateProps(ctx.Config()),
 					"update_engine_sideload":       defaultDepCandidateProps(ctx.Config()),
 				},
-				"vendor": &map[string]*depCandidateProps{
+				"vendor": {
 					"fs_config_files_vendor":                               defaultDepCandidateProps(ctx.Config()),
 					"fs_config_dirs_vendor":                                defaultDepCandidateProps(ctx.Config()),
 					generatedModuleName(ctx.Config(), "vendor-build.prop"): defaultDepCandidateProps(ctx.Config()),
 				},
-				"odm": &map[string]*depCandidateProps{
+				"odm": {
 					// fs_config_* files are automatically installed for all products with odm partitions.
 					// https://cs.android.com/android/_/android/platform/build/+/e4849e87ab660b59a6501b3928693db065ee873b:tools/fs_config/Android.mk;l=34;drc=8d6481b92c4b4e9b9f31a61545b6862090fcc14b;bpv=1;bpt=0
 					"fs_config_files_odm": defaultDepCandidateProps(ctx.Config()),
 					"fs_config_dirs_odm":  defaultDepCandidateProps(ctx.Config()),
 				},
-				"product": newMultilibDeps(),
-				"system_ext": &map[string]*depCandidateProps{
+				"product": {},
+				"system_ext": {
 					// VNDK apexes are automatically included.
 					// This hardcoded list will need to be updated if `PRODUCT_EXTRA_VNDK_VERSIONS` is updated.
 					// https://cs.android.com/android/_/android/platform/build/+/adba533072b00c53ac0f198c550a3cbd7a00e4cd:core/main.mk;l=984;bpv=1;bpt=0;drc=174db7b179592cf07cbfd2adb0119486fda911e7
@@ -172,14 +168,14 @@
 	}).(*FsGenState)
 }
 
-func checkDepModuleInMultipleNamespaces(mctx android.BottomUpMutatorContext, foundDeps map[string]*depCandidateProps, module string, partitionName string) {
+func checkDepModuleInMultipleNamespaces(mctx android.BottomUpMutatorContext, foundDeps multilibDeps, module string, partitionName string) {
 	otherNamespace := mctx.Namespace().Path
 	if val, found := foundDeps[module]; found && otherNamespace != "." && !android.InList(val.Namespace, []string{".", otherNamespace}) {
 		mctx.ModuleErrorf("found in multiple namespaces(%s and %s) when including in %s partition", val.Namespace, otherNamespace, partitionName)
 	}
 }
 
-func appendDepIfAppropriate(mctx android.BottomUpMutatorContext, deps *map[string]*depCandidateProps, installPartition string) {
+func appendDepIfAppropriate(mctx android.BottomUpMutatorContext, deps *multilibDeps, installPartition string) {
 	checkDepModuleInMultipleNamespaces(mctx, *deps, mctx.Module().Name(), installPartition)
 	if _, ok := (*deps)[mctx.Module().Name()]; ok {
 		// Prefer the namespace-specific module over the platform module
