Code diff:
```diff
@@ -129,16 +129,24 @@ public async Task<bool> PrepareSimulator(ILog log, params string[] bundleIdentif
         // We shutdown and erase all simulators.
         await Erase(log);
 
-        var tccDB = Path.Combine(DataPath, "data", "Library", "TCC", "TCC.db");
-        if (!File.Exists(tccDB))
+        var tccDBCandidates = new string[] {
+            Path.Combine(DataPath, "data", "Library", "TCC", "TCC.db"),
+            Path.Combine(DataPath, "Library", "TCC", "TCC.db"),
+        };
+        var tccDB = "";
+        var checkForTccDB = new Func<bool>(() => {
+            tccDB = tccDBCandidates.FirstOrDefault(candidate => File.Exists(candidate)) ?? "";
+            return !string.IsNullOrEmpty(tccDB);
+        });
```


Please write a code review comment for the above diff:
Mutating an outer-scope variable inside a closure can be confusing. Extract the lookup logic into a separate method (e.g. `bool TryFindTccDb(out string dbPath)`) to improve readability and testability.
```suggestion
        if (!TryFindTccDb(tccDBCandidates, out var tccDB))
```