diff --git a/sdk/member_trait.go b/sdk/member_trait.go
index 85b3e13..4229ca8 100644
--- a/sdk/member_trait.go
+++ b/sdk/member_trait.go
@@ -32,7 +32,7 @@
 }
 
 // Cache of dynamically generated dynamicSdkMemberTraits objects. The key is the pointer
-// to a slice of SdkMemberTrait instances held in android.RegisteredSdkMemberTraits.
+// to a slice of SdkMemberTrait instances returned by android.RegisteredSdkMemberTraits().
 var dynamicSdkMemberTraitsMap android.OncePer
 
 // A dynamically generated set of member list properties and associated structure type.
@@ -41,7 +41,7 @@
 type dynamicSdkMemberTraits struct {
 	// The dynamically generated structure type.
 	//
-	// Contains one []string exported field for each android.RegisteredSdkMemberTraits. The name of
+	// Contains one []string exported field for each SdkMemberTrait returned by android.RegisteredSdkMemberTraits(). The name of
 	// the field is the exported form of the value returned by SdkMemberTrait.SdkPropertyName().
 	propertiesStructType reflect.Type
 
@@ -53,14 +53,7 @@
 	return reflect.New(d.propertiesStructType).Interface()
 }
 
-func getDynamicSdkMemberTraits(registry *android.SdkMemberTraitsRegistry) *dynamicSdkMemberTraits {
-
-	// Get a key that uniquely identifies the registry contents.
-	key := registry.UniqueOnceKey()
-
-	// Get the registered traits.
-	registeredTraits := registry.RegisteredTraits()
-
+func getDynamicSdkMemberTraits(key android.OnceKey, registeredTraits []android.SdkMemberTrait) *dynamicSdkMemberTraits {
 	// Get the cached value, creating new instance if necessary.
 	return dynamicSdkMemberTraitsMap.Once(key, func() interface{} {
 		return createDynamicSdkMemberTraits(registeredTraits)
diff --git a/sdk/member_type.go b/sdk/member_type.go
index 9aab61d..10669fe 100644
--- a/sdk/member_type.go
+++ b/sdk/member_type.go
@@ -64,14 +64,7 @@
 	return reflect.New(d.propertiesStructType).Interface()
 }
 
-func getDynamicSdkMemberTypes(registry *android.SdkMemberTypesRegistry) *dynamicSdkMemberTypes {
-
-	// Get a key that uniquely identifies the registry contents.
-	key := registry.UniqueOnceKey()
-
-	// Get the registered types.
-	registeredTypes := registry.RegisteredTypes()
-
+func getDynamicSdkMemberTypes(key android.OnceKey, registeredTypes []android.SdkMemberType) *dynamicSdkMemberTypes {
 	// Get the cached value, creating new instance if necessary.
 	return dynamicSdkMemberTypesMap.Once(key, func() interface{} {
 		return createDynamicSdkMemberTypes(registeredTypes)
diff --git a/sdk/sdk.go b/sdk/sdk.go
index 949a4b4..84c9a96 100644
--- a/sdk/sdk.go
+++ b/sdk/sdk.go
@@ -111,19 +111,14 @@
 	s := &sdk{}
 	s.properties.Module_exports = moduleExports
 	// Get the dynamic sdk member type data for the currently registered sdk member types.
-	var typeRegistry *android.SdkMemberTypesRegistry
-	if moduleExports {
-		typeRegistry = android.ModuleExportsMemberTypes
-	} else {
-		typeRegistry = android.SdkMemberTypes
-	}
-	s.dynamicSdkMemberTypes = getDynamicSdkMemberTypes(typeRegistry)
+	sdkMemberTypeKey, sdkMemberTypes := android.RegisteredSdkMemberTypes(moduleExports)
+	s.dynamicSdkMemberTypes = getDynamicSdkMemberTypes(sdkMemberTypeKey, sdkMemberTypes)
 	// Create an instance of the dynamically created struct that contains all the
 	// properties for the member type specific list properties.
 	s.dynamicMemberTypeListProperties = s.dynamicSdkMemberTypes.createMemberTypeListProperties()
 
-	traitRegistry := android.RegisteredSdkMemberTraits
-	s.dynamicSdkMemberTraits = getDynamicSdkMemberTraits(traitRegistry)
+	sdkMemberTraitsKey, sdkMemberTraits := android.RegisteredSdkMemberTraits()
+	s.dynamicSdkMemberTraits = getDynamicSdkMemberTraits(sdkMemberTraitsKey, sdkMemberTraits)
 	// Create an instance of the dynamically created struct that contains all the properties for the
 	// member trait specific list properties.
 	s.dynamicMemberTraitListProperties = s.dynamicSdkMemberTraits.createMemberTraitListProperties()
