Use copy of apex_available in AvailableToSameApexes

Modifying the list in-place causes some non-determinism.

Test: go test ./cc -run TestStubsForLibraryInMultipleApexes -count 1000
Bug: 275313114
Change-Id: Ia2519e146d97667ad5900cf68ab9935fcbaf08a4
diff --git a/android/apex.go b/android/apex.go
index 5bbc02e..5cc0584 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -502,8 +502,9 @@
 // exactly the same set of APEXes (and platform), i.e. if their apex_available
 // properties have the same elements.
 func AvailableToSameApexes(mod1, mod2 ApexModule) bool {
-	mod1ApexAvail := SortedUniqueStrings(mod1.apexModuleBase().ApexProperties.Apex_available)
-	mod2ApexAvail := SortedUniqueStrings(mod2.apexModuleBase().ApexProperties.Apex_available)
+	// Use CopyOf to prevent non-determinism (b/275313114#comment1)
+	mod1ApexAvail := SortedUniqueStrings(CopyOf(mod1.apexModuleBase().ApexProperties.Apex_available))
+	mod2ApexAvail := SortedUniqueStrings(CopyOf(mod2.apexModuleBase().ApexProperties.Apex_available))
 	if len(mod1ApexAvail) != len(mod2ApexAvail) {
 		return false
 	}
diff --git a/cc/cc_test.go b/cc/cc_test.go
index b986511..417ea9c 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -3573,9 +3573,6 @@
 }
 
 func TestStubsForLibraryInMultipleApexes(t *testing.T) {
-	// TODO(b/275313114): Test exposes non-determinism which should be corrected and the test
-	// reenabled.
-	t.Skip()
 	t.Parallel()
 	ctx := testCc(t, `
 		cc_library_shared {