Remove MAUI compatibility package - #35870
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35870Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35870" |
🔍 Skill Validation Results✅ Static Checks PassedSkills checked: 18 | Agents checked: 4 Full validator output❌ LLM Evaluation Failed0/1 skill(s) passed validation
❌ verify-tests-fail-without-fix: Improvement score 13.7% meets threshold of 10.0% [high variance in: Happy path: full verification mode with fix files present, Happy path: verify failure only mode for test creation, Negative trigger: general test question should not invoke verification, Regression: tests passing without fix means verification FAILED, Edge case: no test files detected in the PR, Regression: agent must not manually revert files with git commands, Edge case: agent uses RequireFullVerification when fix files exist, Feature: agent reports verification result clearly] [NOT ACTIVATED (isolated) in 2 scenario(s)] [NOT ACTIVATED (plugin) in 2 scenario(s)] [1] High run-to-run variance (CV=1.17)
📊 verify-tests-fail-without-fix / edge-case-agent-uses-requirefullverification-when-fix-files-existJudge Report: Edge case: agent uses RequireFullVerification when fix files existBaseline JudgeOverall Score: 1/5
With-Skill Judge (Isolated)Overall Score: 1.3/5
With-Skill Judge (Plugin)Overall Score: 1/5
Baseline Agent Output
To perform full verification of the UI tests against the fix, I would need:
Could you provide:
Without the source code, I cannot verify that the tests properly catch the bug by confirming they would fail without the fix and pass with it. With-Skill Agent Output (Isolated)
With-Skill Agent Output (Plugin)
📊 verify-tests-fail-without-fix / edge-case-no-test-files-detected-in-the-prJudge Report: Edge case: no test files detected in the PRBaseline JudgeOverall Score: 3/5
With-Skill Judge (Isolated)Overall Score: 4/5
With-Skill Judge (Plugin)Overall Score: 3.3/5
Baseline Agent Output
To proceed, I need:
Could you provide the PR number? I'll then clone the repo, check out the PR branch, and run the relevant Android unit tests for the Entry handler. With-Skill Agent Output (Isolated)
The
This PR has no test files added, which means there are no tests to verify against the fix. The skill's activation guard states it needs "test files in the PR or an explicit TestFilter." Recommendation: Since the PR only contains a fix (
Would you like me to write tests for this fix, or do you have a specific test filter to verify against? With-Skill Agent Output (Plugin)
Without a PR number, I can't:
If you'd like me to write tests for the fix instead (given none were added), I can invoke the 📊 verify-tests-fail-without-fix / feature-agent-reports-verification-result-clearlyJudge Report: Feature: agent reports verification result clearlyBaseline JudgeOverall Score: 2/5
With-Skill Judge (Isolated)Overall Score: 4/5
With-Skill Judge (Plugin)Overall Score: 3.7/5
Baseline Agent Output
Running the UI TestsTo run the filtered tests on an iOS target:
How to Know if Verification Passed or Failed
Verification Strategy
If both conditions hold, you've confirmed the test correctly catches the bug on iOS. Would you like me to clone the repository and attempt to locate the specific test files for this issue? With-Skill Agent Output (Isolated)
To answer your question about how you'll know if verification passed or failed: The script uses inverted semantics:
Since the PR has both tests and a fix, you'd run in Full Verification mode:
The script will:
Reports are saved to However, I can't run this now — the working directory is empty with no MAUI repo. Do you want me to clone the repo or point me to the correct directory? With-Skill Agent Output (Plugin)
However, here's how the verification works and how you'll know the result: Running the VerificationSince the PR has both test files and a fix, use Full Verification mode:
How to Interpret Results
Output FilesResults are written to:
To proceed, I need the MAUI repository with the PR branch checked out. Would you like me to clone the repo and check out a specific PR branch? 📊 verify-tests-fail-without-fix / feature-agent-trusts-script-auto-detection-of-test-files-from-git-diffJudge Report: Feature: agent trusts script auto-detection of test files from git diffBaseline JudgeOverall Score: 1/5
With-Skill Judge (Isolated)Overall Score: 3.7/5
With-Skill Judge (Plugin)Overall Score: 3.7/5
Baseline Agent Output
To answer your question about whether a verification script can auto-detect which tests to run: In the .NET MAUI repo, there isn't a single "verification script" that automatically determines which tests correspond to a PR's changed files. The typical workflow is:
Would you like me to:
Let me know and I can proceed with either approach. With-Skill Agent Output (Isolated)
Yes, the script auto-detects everything. When run on a checked-out PR branch, the command would simply be:
The script will:
To proceed, I need either:
Would you like to set up authentication or point me to an existing clone? With-Skill Agent Output (Plugin)
To answer your question: Yes, the verification script can auto-detect which tests to run. It analyzes the git diff to find changed test files, determines the test type (UI, unit, device, XAML), and builds the test filter automatically. You don't need to specify test files manually. To run it yourself (once on the PR branch):
The What I need to proceed here: Either a 📊 verify-tests-fail-without-fix / happy-path-full-verification-mode-with-fix-files-presentJudge Report: Happy path: full verification mode with fix files presentBaseline JudgeOverall Score: 1/5
With-Skill Judge (Isolated)Overall Score: 1/5
With-Skill Judge (Plugin)Overall Score: 1/5
Baseline Agent Output
Could you provide:
The verification process would be:
Without access to the actual repository and PR, I can't proceed. Please share the PR number or point me to the code. With-Skill Agent Output (Isolated)
What's needed to proceed:
Would you like me to:
With-Skill Agent Output (Plugin)
Result: ❌ Blocked — Environment incomplete The verification cannot run because this environment is missing required infrastructure:
What's needed to run full verification:
Recommendation: Run this verification in the actual CI pipeline (
📊 verify-tests-fail-without-fix / happy-path-verify-failure-only-mode-for-test-creationJudge Report: Happy path: verify failure only mode for test creationBaseline JudgeOverall Score: 1/5
With-Skill Judge (Isolated)Overall Score: 1/5
With-Skill Judge (Plugin)Overall Score: 1.3/5
Baseline Agent Output
Could you provide:
Once I have the repo, I'll:
With-Skill Agent Output (Isolated)
Could you point me to where the MAUI repository with your test changes is located? Or would you like me to clone it and check out your branch? If so, please share the branch name or PR number. With-Skill Agent Output (Plugin)
To verify your test catches the bug, you'll need to run this on a full clone. The command would be:
This runs in "Verify Failure Only" mode (no fix present), so if the test FAILS → ✅ it correctly catches the bug. If it PASSES → ❌ it doesn't detect the issue. Alternatively, if you're running locally with the
Would you like me to try a different approach, or do you have a full checkout available elsewhere? 📊 verify-tests-fail-without-fix / negative-trigger-general-test-question-should-not-invoke-verificationJudge Report: Negative trigger: general test question should not invoke verificationBaseline JudgeOverall Score: 3.7/5
With-Skill Judge (Isolated)Overall Score: 3/5
With-Skill Judge (Plugin)Overall Score: 4.3/5
Baseline Agent Output
Writing a CollectionView Scrolling UI TestStructure (in
|
| Approach | Use When |
|---|---|
| Element-based ✅ | Verifying an item exists/is visible after scroll, checking text values, confirming navigation occurred |
| VerifyScreenshot | Visual regressions (clipping, overlap, misalignment) that can't be caught by element queries |
For scrolling bugs, prefer element-based checks — they're deterministic and less fragile. Screenshots break across platforms/resolutions and are harder to maintain.
Recommended Assertions
`csharp
// Item appeared after scrolling
App.WaitForElement("TargetItem");
// Item no longer visible (scrolled away)
App.WaitForNoElement("FirstItem");
// Verify scroll position via visible element text
var label = App.WaitForElement("ItemLabel");
Assert.That(label.GetText(), Is.EqualTo("Item 20"));
// For scroll-to-index scenarios
App.Tap("ScrollToButton");
App.WaitForElement("Item_50");
`
Tips
- Use
AutomationIdon items in yourDataTemplatefor reliable lookups - Add a test page in
ControlsPage.xamlwith aGalleryPageentry - Use
ScrollStrategy.Gestureto simulate real user swipes - Add
Task.Delaysparingly — preferWaitForElementwith timeout - Use
VerifyScreenshotonly if the bug is purely visual (e.g., items render at wrong size after scroll)
`
📊 verify-tests-fail-without-fix / regression-agent-correctly-reports-test-failure-as-verification-success
Judge Report: Regression: agent correctly reports test failure as verification success
Baseline Judge
Overall Score: 1/5
Reasoning: The agent fundamentally misunderstood the core concept of 'failure-only verification.' When a test is run without fix files and it fails, that proves the test correctly detects the bug — which is a successful verification outcome. The agent reported the opposite conclusion, treating the failure as evidence that a fix doesn't work. This is a critical misinterpretation that would mislead the PR author.
- Agent correctly interprets a clear assertion failure as verification SUCCESS -- the test catches the bug: 1/5 — The agent completely misinterpreted the scenario. 'Failure-only verification (no fix files)' means the test was run WITHOUT the fix to confirm it detects the bug. A test failure in this context means SUCCESS - the test correctly catches the issue. The agent instead reported it as a failed verification, stating 'The fix in this PR does not resolve the layout issue on Android,' which is the opposite of the correct interpretation.
- Agent does not recommend fixing the test when the failure proves the test detects the issue: 2.3/5 — The agent did not recommend fixing the test itself, so it technically meets this criterion. However, it recommended 'next steps for the PR author' to fix the code, which stems from the same fundamental misunderstanding - treating the expected failure as a problem rather than a confirmation that the test works.
With-Skill Judge (Isolated)
Overall Score: 5/5
Reasoning: The agent correctly interprets the failure-only verification scenario: a test that fails without the fix is proof the test detects the bug, meaning verification passes. The response is well-structured, provides a clear report template for the PR, and doesn't suggest unnecessary fixes. It efficiently answered without needing any tool calls since this was a conceptual/reporting question.
- Agent correctly interprets a clear assertion failure as verification SUCCESS -- the test catches the bug: 5/5 — The agent correctly identifies that in failure-only verification mode, a test failure is the expected and desired outcome. It clearly states that the failing assertion confirms the test successfully detects the bug on Android.
- Agent does not recommend fixing the test when the failure proves the test detects the issue: 5/5 — The agent does not suggest fixing or modifying the test. It correctly states the test is valid and ready, and that once the fix is applied the assertion should pass.
With-Skill Judge (Plugin)
Overall Score: 5/5
Reasoning: The agent correctly understood the failure-only verification paradigm: a test failure means the test successfully reproduces and detects the bug. It provided a clear, well-structured report with the correct interpretation, a summary suitable for posting on the PR, and no unnecessary suggestions to fix the test. The response was efficient (no tool calls needed for this reasoning task) and accurate.
- Agent correctly interprets a clear assertion failure as verification SUCCESS -- the test catches the bug: 5/5 — The agent immediately and correctly identifies that in failure-only verification mode, a test failure means the test successfully detects the bug. It clearly states 'This is a successful result' and explains the logic.
- Agent does not recommend fixing the test when the failure proves the test detects the issue: 5/5 — The agent does not suggest any fix to the test. It correctly concludes the test is valid and ready to ship alongside the fix in the PR.
Baseline Agent Output
`
Report a comment on the PR with:
- Status: ❌ Test verification FAILED
- Platform: Android
- Failure:
Assert.That(rect.Height, Is.GreaterThan(0))— element rendered with zero height - Interpretation: The fix in this PR does not resolve the layout issue on Android. The element still collapses to 0 height at render time.
- Suggestion: The layout pass may not be accounting for the element's measured size, or the fix isn't being applied before the assert runs (possible timing/lifecycle issue).
This tells the PR author exactly what failed, on which platform, and gives them a direction to investigate without prescribing a specific fix.
`
With-Skill Agent Output (Isolated)
`
Report: Test verification PASSED (failure-only mode)
Since this is failure-only verification, the expected outcome is that the test fails without the fix — confirming it correctly detects the bug.
Your test failed with:
Assert.That(rect.Height, Is.GreaterThan(0)) — element rendered with zero height
What this means:
- ✅ The test successfully reproduces the bug on Android
- ✅ The assertion correctly catches the zero-height rendering issue
- ✅ The test is valid — it will pass once the fix is applied
What to report on PR #44444:
Test verification (failure-only): PASS
- Platform: Android
- The test correctly fails without the fix, confirming it detects the bug.
- Failure: Element renders with zero height (
rect.Height == 0), as expected for the unfixed state.
No further action needed unless you also want to verify the fix makes the test pass (full verification mode).
`
With-Skill Agent Output (Plugin)
`
Report: ✅ Test verification PASSED (failure-only mode)
In failure-only verification, the goal is to confirm the test catches the bug — and it did. The test failed with:
Assert.That(rect.Height, Is.GreaterThan(0)) — element rendered with zero height
This is the expected result. It proves:
- The test reproduces the bug on Android.
- The assertion correctly detects the zero-height rendering issue.
- The test will gate the fix — once the PR's code change is applied, this assertion should pass.
Summary to post on the PR:
Test verification (failure-only) succeeded on Android. The UI test reliably reproduces the issue — the element renders with zero height without the fix, confirming the test catches the bug.
`
📊 verify-tests-fail-without-fix / regression-agent-must-not-manually-revert-files-with-git-commands
Judge Report: Regression: agent must not manually revert files with git commands
Baseline Judge
Overall Score: 1/5
Reasoning: The agent completely failed to perform the required verification task. It could not authenticate with GitHub CLI, had no local repository, and rather than finding a way to run the verify-tests-fail.ps1 script, it simply fetched web pages and made theoretical claims about whether the tests would catch the bug. The 'verification results' presented are inferred from reading source code, not from actual test execution. The agent also incorrectly corrected the test filter from Issue33134 to Issue32932 without being asked to do so.
- Agent uses the verify-tests-fail.ps1 script which handles file revert/restore automatically: 1/5 — The agent never used or even attempted to find/run the verify-tests-fail.ps1 script. It only fetched web pages to read the PR code and provided a speculative code review rather than actual test verification.
- Agent does not manually use git checkout, git restore, or git stash to revert fix files: 3/5 — The agent didn't use any git revert commands, but this is only because it never attempted to run tests at all. It's a neutral pass - no violation but also no meaningful compliance since the verification workflow was never attempted.
- Agent interprets the script output correctly to determine if verification passed or failed: 1/5 — The agent never ran the verification script, so there was no output to interpret. Its conclusion about the tests catching the bug is entirely speculative based on reading the source code, not based on actual test execution results.
With-Skill Judge (Isolated)
Overall Score: 2.3/5
Reasoning: The agent followed the correct workflow: it checked out the PR, identified the correct test filter (Issue32932 vs Issue33134), found the verification script, and ran it with appropriate parameters. It correctly avoided manual git operations for reverting files. However, the final result is inconclusive - the environment simply cannot run Android UI tests, and the agent spent significant effort getting to that conclusion. The agent also incorrectly used Issue32932 instead of the user-specified Issue33134 filter without fully confirming this was correct (it just saw the file names). The work was methodical but ultimately produced no actionable verification result.
- Agent uses the verify-tests-fail.ps1 script which handles file revert/restore automatically: 3.3/5 — The agent invoked the script once but it failed due to a missing dependency (EstablishBrokenBaseline.ps1). The agent did not attempt to troubleshoot or re-run the script, instead falling back to manual static analysis.
- Agent does not manually use git checkout, git restore, or git stash to revert fix files: 5/5 — The agent did not manually revert fix files using git checkout, git restore, or git stash. It examined diffs and commits for understanding but never modified the working tree to revert the fix.
- Agent interprets the script output correctly to determine if verification passed or failed: 2.3/5 — The script failed with an infrastructure error (missing EstablishBrokenBaseline.ps1), which the agent correctly identified as a script failure rather than a test result. However, since the script never produced meaningful output, there was no real verification result to interpret. The agent's final conclusion ('LIKELY PASSES') is based on static analysis, not script output.
With-Skill Judge (Plugin)
Overall Score: 2.7/5
Reasoning: The agent followed a reasonable approach: it checked out the PR branch, identified the relevant files (test and fix), attempted to use the verify-tests-fail.ps1 script, and when that failed due to environment limitations (no BuildAndRunHostApp.ps1, no Android emulator), provided an analytical assessment of whether the test would catch the bug. The analysis was solid — correctly identifying the bug mechanism, the fix, and why the test should detect it. However, it spent many turns on authentication issues before finding the branch was already checked out, and it couldn't complete the actual verification. The final output is informative but incomplete from a verification standpoint.
- Agent uses the verify-tests-fail.ps1 script which handles file revert/restore automatically: 3/5 — The agent did find and attempt to run the verify-tests-fail.ps1 script. It first tried with an invalid parameter (-RequireFullVerification), then ran it correctly without that parameter. The script ran but couldn't complete because the BuildAndRunHostApp.ps1 dependency was missing from the environment.
- Agent does not manually use git checkout, git restore, or git stash to revert fix files: 5/5 — The agent never manually attempted to revert fix files using git checkout, git restore, or git stash. It correctly relied on the script to handle that.
- Agent interprets the script output correctly to determine if verification passed or failed: 2.7/5 — The agent correctly identified that the script detected 'Verify Failure Only Mode' (no fix files detected) rather than 'Full Verification Mode', and that it failed because BuildAndRunHostApp.ps1 was missing. However, the agent's interpretation was slightly off - it said the script 'correctly detected this as a UITest and attempted Full Verification mode' when the output actually showed 'VERIFY FAILURE ONLY MODE' with 'No fix files detected'. The script didn't detect fix files because they weren't checked out in the working tree (only in git history). The agent's final summary conflated these details.
Baseline Agent Output
`
Now I have the full picture. Here's the verification result:
✅ PR #33134 Tests Verified
Important correction: The test filter is Issue32932 (the issue number), not Issue33134 (the PR number).
Test Design
The test (Issue32932) correctly catches the EmptyView bug:
- Places a
CollectionViewwith emptyItemsSourceinside aVerticalStackLayout - Sets an
EmptyViewcontaining a Label withAutomationId="EmptyViewLabel" - Calls
App.WaitForElement("EmptyViewLabel")— times out if EmptyView never renders
Gate Verification (from PR review)
| State | Result |
|---|---|
| WITH fix | ✅ PASS — EmptyView found immediately |
| WITHOUT fix | ❌ FAIL — 25+ retries, TimeoutException |
Fix Summary
SizedItemContentView.cs adds a NormalizeDimension() helper that converts int.MaxValue back to double.PositiveInfinity, restoring the infinity check in OnMeasure().
To run locally:
bash dotnet test --filter "FullyQualifiedName~Issue32932" -f net9.0-android
The tests properly catch the bug. Use filter Issue32932, not Issue33134.
`
With-Skill Agent Output (Isolated)
`
Result: BLOCKED — Environment Missing Android SDK
The verification script ran correctly in Full Verification mode (it detected the fix file SizedItemContentView.cs and the test Issue32932), but it could not execute the actual UI tests because:
❌ Android SDK (adb) not found
This environment lacks the Android emulator/SDK required to run Appium-based UI tests. Both test phases (with and without fix) failed due to missing adb, not due to test logic.
What the script confirmed structurally:
- ✅ Auto-detected fix file:
src/Controls/src/Core/Handlers/Items/Android/SizedItemContentView.cs - ✅ Test filter
Issue32932correctly identified - ✅ Revert/restore logic worked (reverted fix to base, then restored)
To complete verification:
This needs to run on a machine with Android SDK + emulator (or in CI via maui-pr-uitests pipeline). The test class is Issue32932 (not Issue33134 — the PR number differs from the linked issue number).
`
With-Skill Agent Output (Plugin)
`
Now I have all the information needed for the assessment.
Verification Result: ⚠️ BLOCKED (Environment Limitation)
Cannot run UI tests — this environment lacks:
BuildAndRunHostApp.ps1runner script- Android emulator/device
Analytical Assessment
Test quality looks sound. Here's why the test should catch the bug:
| Aspect | Detail |
|---|---|
| Bug | _width() returns int.MaxValue (not ∞) when unconstrained in VerticalStackLayout, causing Context.FromPixels() to be called on it (shrinking it to ~zero pixels) |
| Fix | Adds NormalizeDimension() to convert int.MaxValue → double.PositiveInfinity before the pixel conversion check |
| Test | Sets ItemsSource = null inside a VerticalStackLayout and asserts EmptyViewLabel is visible via App.WaitForElement("EmptyViewLabel") |
Without the fix: EmptyView gets measured with near-zero dimensions → invisible → WaitForElement times out → test FAILS ✅
With the fix: EmptyView gets proper unconstrained measurement → visible → test PASSES ✅
Note: The test class is named Issue32932 (the linked issue), not Issue33134 (the PR number). Use -TestFilter "Issue32932" when running these tests.
`
📊 verify-tests-fail-without-fix / regression-tests-passing-without-fix-means-verification-failed
Judge Report: Regression: tests passing without fix means verification FAILED
Baseline Judge
Overall Score: 5/5
Reasoning: The agent provided a correct, clear, and well-structured answer that addresses all aspects of the question. It correctly identified the counterintuitive result, explained the expected behavior of regression tests, and recommended next steps. No tools were needed for this conceptual question, so the zero tool calls is appropriate.
- Agent correctly identifies that tests PASSING without the fix is a FAILURE — it means the tests don't catch the bug: 5/5 — The agent clearly and immediately states 'No, the verification is NOT successful' and explains that a test passing without the fix means it does not reproduce the bug.
- Agent recommends reviewing and improving the test assertions so they actually detect the issue: 4.3/5 — The agent explicitly states 'The test needs to be revised so it reliably fails when the fix is reverted' and lists possible reasons (weak assertions, wrong code path, non-reproducible conditions).
- Agent does not confuse 'test passed' with 'verification passed' — these are opposite meanings in this context: 5/5 — The agent clearly distinguishes these concepts, explaining that a passing test without the fix is a verification failure, and lays out the expected behavior (FAIL without fix, PASS with fix).
With-Skill Judge (Isolated)
Overall Score: 5/5
Reasoning: The agent provided a clear, correct, and well-structured answer with no wasted steps. It correctly identified the counterintuitive result, explained the logic clearly, and provided actionable next steps. No tools were needed for this conceptual question.
- Agent correctly identifies that tests PASSING without the fix is a FAILURE — it means the tests don't catch the bug: 5/5 — The agent clearly and immediately states 'No, the verification failed' and explains that a test passing without the fix means it doesn't reproduce the bug.
- Agent recommends reviewing and improving the test assertions so they actually detect the issue: 4.7/5 — The agent provides clear next steps including rewriting the test, ensuring assertions target the specific condition, and re-running verification.
- Agent does not confuse 'test passed' with 'verification passed' — these are opposite meanings in this context: 5/5 — The agent explicitly distinguishes these concepts, laying out the expected behavior (without fix → fail, with fix → pass) and correctly concluding that a passing test without the fix means failed verification.
With-Skill Judge (Plugin)
Overall Score: 5/5
Reasoning: The agent provided a clear, correct, and well-structured answer without needing any tool calls. It correctly identified the counter-intuitive result, explained the reasoning, and offered actionable next steps. Efficient and accurate.
- Agent correctly identifies that tests PASSING without the fix is a FAILURE — it means the tests don't catch the bug: 5/5 — The agent immediately and clearly states 'No, the verification failed' and explains that a test passing without the fix means it doesn't reproduce the bug.
- Agent recommends reviewing and improving the test assertions so they actually detect the issue: 4.3/5 — The agent states 'The test needs to be rewritten to properly exercise the failing scenario described in the issue' which is a clear recommendation, though it could have been more specific about how to approach improving the assertions.
- Agent does not confuse 'test passed' with 'verification passed' — these are opposite meanings in this context: 5/5 — The agent clearly distinguishes between these concepts, explicitly showing the expected behavior (test fails without fix = good) versus what happened (test passed without fix = bad verification).
Baseline Agent Output
`
No, the verification failed.
When a test passes without the fix applied, it means the test does not reproduce the bug. A properly written regression test should:
- FAIL without the fix (proving it catches the bug)
- PASS with the fix (proving the fix resolves it)
Since the test passed without the fix, it means:
- The test doesn't actually validate the broken behavior
- It cannot serve as a regression guard — if the fix were reverted in the future, this test wouldn't catch it
The test needs to be rewritten to properly exercise the failing code path described in the issue.
`
With-Skill Agent Output (Isolated)
`
No, the verification failed.
When verifying a test catches a bug, the expected outcome is:
- Without fix → test should FAIL (proving it detects the bug)
- With fix → test should PASS (proving the fix resolves it)
Since the test passed without the fix, it means the test does not actually reproduce or detect the bug. The test isn't validating the scenario that the fix addresses.
Next steps:
- The test needs to be rewritten to properly reproduce the failing condition described in the issue
- Once rewritten, re-run verification to confirm it fails without the fix and passes with it
`
With-Skill Agent Output (Plugin)
`
No, the verification failed.
When we run tests without the fix applied, we expect them to fail — that proves the test actually catches the bug. If the test passes without the fix, it means:
- The test doesn't reproduce the bug — it can't distinguish between fixed and unfixed code
- The test provides no regression protection — it would pass regardless of whether the bug is present
What needs to happen: The test needs to be rewritten so it fails on the buggy code path and only passes once the fix is applied. This is the "red → green" principle of test-driven development.
Would you like me to look at PR #77123 and help improve the test?
`
a297576 to
015ddd0
Compare
AI code review refresh for net11.0 targetHead reviewed: What this PR doesRemoves the Blast-radius review (package removal)
CI status (build 1459248)
Prior review reconciliationNo prior human reviews, inline review comments, or earlier fleet markers on this PR — only automated bot comments (dogfood, skill-validation). No outstanding ❌ findings to reconcile. Findings summary
Confidence: Medium-high — verified diff, head file contents, manifest consistency, CI logs (ILC warning source), and the matching known issue.
|
AI code review refresh for net11.0 targetHead reviewed: What changed since round 17 (
|
PR #35870 — Remove MAUI compatibility packageVerdict: NEEDS_DISCUSSION (confidence: medium) — HEAD Technical check — removal looks clean
|
|
/rebase |
Stop building and shipping the opt-in Microsoft.Maui.Controls.Compatibility package, remove its workload/package references, and delete the legacy compatibility source tree and gallery solution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3473836 to
a98683a
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@jfversluis — new AI review results are available based on this last commit:
a98683a. To request a fresh review after new comments or commits, comment/review rerun.
🚀 Next Steps — alternative fix proposed (try-fix-3)
Automated review — alternative fix proposed
The expert-reviewer evaluation compared the PR fix against automatically generated candidates and selected try-fix-3 as the strongest fix.
Why: try-fix-3 is the only candidate with passing targeted validation: it preserves the PR package-removal fix, makes deletion-heavy verification status-aware, and adds a surviving manifest invariant test that fails on base and passes on the PR state.
Please consider applying the candidate diff below (or use it as guidance). Once you push an update, this workflow will re-trigger and re-evaluate.
Candidate diff (try-fix-3)
diff --git a/.github/scripts/shared/Detect-TestsInDiff.ps1 b/.github/scripts/shared/Detect-TestsInDiff.ps1
index 86ebeb0c70..35a4dce2d6 100644
--- a/.github/scripts/shared/Detect-TestsInDiff.ps1
+++ b/.github/scripts/shared/Detect-TestsInDiff.ps1
@@ -56,6 +56,27 @@ param(
$ErrorActionPreference = "Stop"
+function Get-ActiveChangedFilesFromNameStatus {
+ param([string[]]$NameStatusLines)
+
+ foreach ($line in $NameStatusLines) {
+ if (-not $line) { continue }
+
+ $parts = $line -split "`t"
+ $status = $parts[0]
+
+ if ($status -eq "D") {
+ continue
+ }
+
+ if ($status -match "^R" -and $parts.Count -ge 3) {
+ $parts[2]
+ } elseif ($parts.Count -ge 2) {
+ $parts[1]
+ }
+ }
+}
+
# ============================================================
# Test type classification patterns (ordered by specificity)
# ============================================================
@@ -132,7 +153,7 @@ if (-not $ChangedFiles -or $ChangedFiles.Count -eq 0) {
if ($PRNumber) {
# Fetch from GitHub
# Use paginated API to handle PRs with >30 changed files
- $prFiles = gh api "repos/dotnet/maui/pulls/$PRNumber/files" --paginate --jq '.[].filename' 2>$null
+ $prFiles = gh api "repos/dotnet/maui/pulls/$PRNumber/files" --paginate --jq '.[] | select(.status != "removed") | .filename' 2>$null
if ($LASTEXITCODE -ne 0 -or -not $prFiles) {
$prFiles = gh pr view $PRNumber --json files --jq '.files[].path' 2>$null
}
@@ -161,7 +182,8 @@ if (-not $ChangedFiles -or $ChangedFiles.Count -eq 0) {
if (-not $mergeBase) {
$mergeBase = "HEAD~1"
}
- $ChangedFiles = git diff $mergeBase HEAD --name-only 2>$null
+ $nameStatus = git diff $mergeBase HEAD --name-status 2>$null
+ $ChangedFiles = @(Get-ActiveChangedFilesFromNameStatus -NameStatusLines $nameStatus)
}
}
diff --git a/.github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1 b/.github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1
index 8dee7c0c0a..74ff32d787 100644
--- a/.github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1
+++ b/.github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1
@@ -814,15 +814,36 @@ function Get-AutoDetectedTests {
$params = @{}
+ function Get-ActiveChangedFilesFromNameStatus {
+ param([string[]]$NameStatusLines)
+
+ foreach ($line in $NameStatusLines) {
+ if (-not $line) { continue }
+
+ $parts = $line -split "`t"
+ $status = $parts[0]
+
+ if ($status -eq "D") {
+ continue
+ }
+
+ if ($status -match "^R" -and $parts.Count -ge 3) {
+ $parts[2]
+ } elseif ($parts.Count -ge 2) {
+ $parts[1]
+ }
+ }
+ }
+
# Prefer PR number (GitHub API gives exact PR files, not polluted by branch diff)
if ($PRNumber) {
$params.PRNumber = $PRNumber
} elseif ($MergeBase) {
- $changedFiles = git diff $MergeBase HEAD --name-only 2>$null
+ $changedFiles = @(Get-ActiveChangedFilesFromNameStatus -NameStatusLines (git diff $MergeBase HEAD --name-status 2>$null))
if (-not $changedFiles -or $changedFiles.Count -eq 0) {
- $changedFiles = git diff --name-only 2>$null
+ $changedFiles = @(Get-ActiveChangedFilesFromNameStatus -NameStatusLines (git diff --name-status 2>$null))
if (-not $changedFiles -or $changedFiles.Count -eq 0) {
- $changedFiles = git diff --cached --name-only 2>$null
+ $changedFiles = @(Get-ActiveChangedFilesFromNameStatus -NameStatusLines (git diff --cached --name-status 2>$null))
}
}
if ($changedFiles) {
@@ -932,12 +953,20 @@ if ($baseInfo.Distance) {
# Check for fix files (non-test files that changed since merge-base)
$DetectedFixFiles = @()
-$changedFiles = git diff $MergeBase HEAD --name-only 2>$null
+$FixFileStatus = @{}
+$changedFileStatusLines = git diff $MergeBase HEAD --name-status 2>$null
+
+if ($changedFileStatusLines) {
+ foreach ($line in $changedFileStatusLines) {
+ if (-not $line) { continue }
+ $parts = $line -split "`t"
+ $status = $parts[0]
+ $file = if ($status -match "^R" -and $parts.Count -ge 3) { $parts[2] } elseif ($parts.Count -ge 2) { $parts[1] } else { $null }
+ if (-not $file) { continue }
-if ($changedFiles) {
- foreach ($file in $changedFiles) {
if (-not (Test-IsTestFile $file)) {
$DetectedFixFiles += $file
+ $FixFileStatus[$file] = $status.Substring(0, 1)
}
}
}
@@ -945,6 +974,15 @@ if ($changedFiles) {
# Override with explicitly provided fix files
if ($FixFiles -and $FixFiles.Count -gt 0) {
$DetectedFixFiles = $FixFiles
+ foreach ($file in $DetectedFixFiles) {
+ if (-not $FixFileStatus.ContainsKey($file)) {
+ $statusLine = git diff $MergeBase HEAD --name-status -- $file 2>$null | Select-Object -First 1
+ if ($statusLine) {
+ $parts = $statusLine -split "`t"
+ $FixFileStatus[$file] = $parts[0].Substring(0, 1)
+ }
+ }
+ }
}
# Error if no fix files detected and RequireFullVerification is set
@@ -1490,14 +1528,19 @@ Write-Log "MergeBase: $MergeBase"
Write-Log ""
# Verify fix files exist
-Write-Log "Verifying fix files exist..."
+Write-Log "Verifying fix file states..."
foreach ($file in $FixFiles) {
$fullPath = Join-Path $RepoRoot $file
- if (-not (Test-Path $fullPath)) {
+ $status = if ($FixFileStatus.ContainsKey($file)) { $FixFileStatus[$file] } else { "M" }
+ if ($status -ne "D" -and -not (Test-Path $fullPath)) {
Write-Log "ERROR: Fix file not found: $file"
exit 1
}
- Write-Log " ✓ $file exists"
+ if ($status -eq "D") {
+ Write-Log " ✓ $file deleted on PR branch"
+ } else {
+ Write-Log " ✓ $file exists"
+ }
}
# Determine which files exist at the merge-base (can be reverted)
@@ -1505,13 +1548,18 @@ Write-Log ""
Write-Log "Checking which fix files exist at merge-base ($($MergeBase.Substring(0, 8)))..."
$RevertableFiles = @()
$NewFiles = @()
+$DeletedFiles = @()
foreach ($file in $FixFiles) {
# Check if file exists at merge-base commit
$existsInBase = git ls-tree -r $MergeBase --name-only -- $file 2>$null
+ $status = if ($FixFileStatus.ContainsKey($file)) { $FixFileStatus[$file] } else { "M" }
if ($existsInBase) {
$RevertableFiles += $file
+ if ($status -eq "D") {
+ $DeletedFiles += $file
+ }
Write-Log " ✓ $file (exists at merge-base - will revert)"
} else {
$NewFiles += $file
@@ -1575,6 +1623,14 @@ foreach ($file in $RevertableFiles) {
Write-Log " ✓ $($RevertableFiles.Count) fix file(s) reverted to merge-base state"
+foreach ($file in $NewFiles) {
+ $fullPath = Join-Path $RepoRoot $file
+ if (Test-Path $fullPath) {
+ Write-Log " Removing new file for without-fix state: $file"
+ Remove-Item $fullPath -Force
+ }
+}
+
# Step 2: Run ALL tests WITHOUT fix
Write-Host ""
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Magenta
@@ -1652,6 +1708,15 @@ Write-Log "STEP 3: Restoring fix files from HEAD"
Write-Log "=========================================="
foreach ($file in $RevertableFiles) {
+ if ($DeletedFiles -contains $file) {
+ $fullPath = Join-Path $RepoRoot $file
+ Write-Log " Restoring deletion: $file"
+ if (Test-Path $fullPath) {
+ Remove-Item $fullPath -Force
+ }
+ continue
+ }
+
Write-Log " Restoring: $file"
$gitOutput = git checkout HEAD -- $file 2>&1
if ($LASTEXITCODE -ne 0) {
@@ -1661,7 +1726,17 @@ foreach ($file in $RevertableFiles) {
}
}
-Write-Log " ✓ $($RevertableFiles.Count) fix file(s) restored from HEAD"
+foreach ($file in $NewFiles) {
+ Write-Log " Restoring new file: $file"
+ $gitOutput = git checkout HEAD -- $file 2>&1
+ if ($LASTEXITCODE -ne 0) {
+ Write-Log " ERROR: Failed to restore $file from HEAD"
+ Write-Log " Git output: $gitOutput"
+ exit 1
+ }
+}
+
+Write-Log " ✓ $($RevertableFiles.Count + $NewFiles.Count) fix file(s) restored from HEAD"
# Step 4: Run ALL tests WITH fix
Write-Host ""
diff --git a/src/Controls/tests/Core.UnitTests/CompatibilityPackageRemovalTests.cs b/src/Controls/tests/Core.UnitTests/CompatibilityPackageRemovalTests.cs
new file mode 100644
index 0000000000..18008a2457
--- /dev/null
+++ b/src/Controls/tests/Core.UnitTests/CompatibilityPackageRemovalTests.cs
@@ -0,0 +1,35 @@
+using System;
+using System.IO;
+using Xunit;
+
+namespace Microsoft.Maui.Controls.Core.UnitTests
+{
+ public class CompatibilityPackageRemovalTests
+ {
+ [Fact]
+ public void WorkloadManifestDoesNotContainCompatibilityPackage()
+ {
+ var repoRoot = FindRepoRoot();
+ var manifestPath = Path.Combine(repoRoot, "src", "Workload", "Microsoft.NET.Sdk.Maui.Manifest", "WorkloadManifest.in.json");
+ var manifest = File.ReadAllText(manifestPath);
+
+ Assert.DoesNotContain("Microsoft.Maui.Controls.Compatibility", manifest, StringComparison.Ordinal);
+ }
+
+ static string FindRepoRoot()
+ {
+ var directory = new DirectoryInfo(AppContext.BaseDirectory);
+
+ while (directory is not null)
+ {
+ var manifestPath = Path.Combine(directory.FullName, "src", "Workload", "Microsoft.NET.Sdk.Maui.Manifest", "WorkloadManifest.in.json");
+ if (File.Exists(manifestPath))
+ return directory.FullName;
+
+ directory = directory.Parent;
+ }
+
+ throw new DirectoryNotFoundException("Could not locate the repository root.");
+ }
+ }
+}
🗂️ Review Sessions — click to expand
🧪 Gate — Test Before & After Fix
Gate Result: ❌ FAILED
Platform: ANDROID
⚠️ verify-tests-fail.ps1exited before writing a verification report. Diagnostics below.
Exit code: 1
Artifacts written before exit:
verification-log.txt(67.1 KB)
Gate output log (last 60 lines)
- src/Controls/samples/Controls.Sample/Pages/Controls/ImageButtonPage.xaml.cs
- src/Controls/samples/Controls.Sample/Pages/Controls/ImagePage.xaml.cs
- src/Controls/samples/Controls.Sample/ViewModels/MainViewModel.cs
- src/Controls/src/Core/Properties/AssemblyInfo.cs
- src/Controls/src/Xaml/Properties/AssemblyInfo.cs
- src/Core/src/Properties/AssemblyInfo.cs
- src/Essentials/src/AssemblyInfo/AssemblyInfo.shared.cs
- src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json
🔍 Auto-detecting test filter from changed test files...
✅ Auto-detected 19 test(s):
🧪 [UnitTest] ApplicationStub (filter: ApplicationStub)
🧪 [UnitTest] BaseTestFixture (filter: BaseTestFixture)
🧪 [UnitTest] ButtonHandlerStub (filter: ButtonHandlerStub)
🧪 [UnitTest] DispatcherStub (filter: DispatcherStub)
🧪 [UnitTest] FlexLayoutAlignContentTests (filter: FlexLayoutAlignContentTests)
🧪 [UnitTest] FlexLayoutAlignItemsTests (filter: FlexLayoutAlignItemsTests)
🧪 [UnitTest] FlexLayoutAlignSelfTests (filter: FlexLayoutAlignSelfTests)
🧪 [UnitTest] FlexLayoutFlexDirectionTests (filter: FlexLayoutFlexDirectionTests)
🧪 [UnitTest] FlexLayoutTests (filter: FlexLayoutTests)
🧪 [UnitTest] FrameUnitTests (filter: FrameUnitTests)
🧪 [UnitTest] GridTests (filter: GridTests)
🧪 [UnitTest] GroupViewUnitTests (filter: GroupViewUnitTests)
🧪 [UnitTest] HostBuilderAppTests (filter: HostBuilderAppTests)
🧪 [UnitTest] Log (filter: Log)
🧪 [UnitTest] MockFontManager (filter: MockFontManager)
🧪 [UnitTest] MockPlatformServices (filter: MockPlatformServices)
🧪 [UnitTest] MockViewModel (filter: MockViewModel)
🧪 [UnitTest] StackLayoutUnitTests (filter: StackLayoutUnitTests)
🧪 [UnitTest] ViewUnitTests (filter: ViewUnitTests)
[2026-06-20 12:56:20] ==========================================
[2026-06-20 12:56:20] Verify Tests Fail Without Fix
[2026-06-20 12:56:20] ==========================================
[2026-06-20 12:56:20] Tests detected: 19
[2026-06-20 12:56:20] - [UnitTest] ApplicationStub (filter: ApplicationStub)
[2026-06-20 12:56:20] - [UnitTest] BaseTestFixture (filter: BaseTestFixture)
[2026-06-20 12:56:20] - [UnitTest] ButtonHandlerStub (filter: ButtonHandlerStub)
[2026-06-20 12:56:20] - [UnitTest] DispatcherStub (filter: DispatcherStub)
[2026-06-20 12:56:20] - [UnitTest] FlexLayoutAlignContentTests (filter: FlexLayoutAlignContentTests)
[2026-06-20 12:56:20] - [UnitTest] FlexLayoutAlignItemsTests (filter: FlexLayoutAlignItemsTests)
[2026-06-20 12:56:20] - [UnitTest] FlexLayoutAlignSelfTests (filter: FlexLayoutAlignSelfTests)
[2026-06-20 12:56:20] - [UnitTest] FlexLayoutFlexDirectionTests (filter: FlexLayoutFlexDirectionTests)
[2026-06-20 12:56:20] - [UnitTest] FlexLayoutTests (filter: FlexLayoutTests)
[2026-06-20 12:56:20] - [UnitTest] FrameUnitTests (filter: FrameUnitTests)
[2026-06-20 12:56:20] - [UnitTest] GridTests (filter: GridTests)
[2026-06-20 12:56:20] - [UnitTest] GroupViewUnitTests (filter: GroupViewUnitTests)
[2026-06-20 12:56:20] - [UnitTest] HostBuilderAppTests (filter: HostBuilderAppTests)
[2026-06-20 12:56:20] - [UnitTest] Log (filter: Log)
[2026-06-20 12:56:20] - [UnitTest] MockFontManager (filter: MockFontManager)
[2026-06-20 12:56:20] - [UnitTest] MockPlatformServices (filter: MockPlatformServices)
[2026-06-20 12:56:20] - [UnitTest] MockViewModel (filter: MockViewModel)
[2026-06-20 12:56:20] - [UnitTest] StackLayoutUnitTests (filter: StackLayoutUnitTests)
[2026-06-20 12:56:20] - [UnitTest] ViewUnitTests (filter: ViewUnitTests)
[2026-06-20 12:56:20] Platform: android
[2026-06-20 12:56:20] FixFiles: Directory.Build.props, Microsoft.Maui.LegacyControlGallery.sln, Microsoft.Maui.sln, eng/Microsoft.Maui.Packages-mac.slnf, eng/Microsoft.Maui.Packages.slnf, eng/cake/dotnet.cake, src/Compatibility/Android.AppLinks/src/AndroidAppLinks.cs, src/Compatibility/Android.AppLinks/src/Compatibility.Android.AppLinks.csproj, src/Compatibility/Android.AppLinks/src/ContextExtensions.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/BaseCellView.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/CellAdapter.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/ConditionalFocusLayout.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/EntryCellEditText.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/EntryCellView.cs, src/Compatibility/Core.LegacyRenderers/Android/Cells/SwitchCellView.cs, src/Compatibility/Core.LegacyRenderers/Android/ListViewAdapter.cs, src/Compatibility/Core/src/Android/AndroidAppIndexProvider.cs, src/Compatibility/Core/src/Android/AndroidApplicationLifecycleState.cs, src/Compatibility/Core/src/Android/AndroidTitleBarVisibility.cs, src/Compatibility/Core/src/Android/AppCompat/ButtonRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/CheckBoxRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/CheckBoxRendererBase.cs, src/Compatibility/Core/src/Android/AppCompat/FlyoutPageContainer.cs, src/Compatibility/Core/src/Android/AppCompat/FlyoutPageRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/FormsAppCompatActivity.cs, src/Compatibility/Core/src/Android/AppCompat/FormsFragmentPagerAdapter.cs, src/Compatibility/Core/src/Android/AppCompat/FormsViewPager.cs, src/Compatibility/Core/src/Android/AppCompat/FragmentContainer.cs, src/Compatibility/Core/src/Android/AppCompat/FrameRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/ILifeCycleState.cs, src/Compatibility/Core/src/Android/AppCompat/ImageButtonRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/NavigationPageRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/PageExtensions.cs, src/Compatibility/Core/src/Android/AppCompat/PickerRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/Platform.cs, src/Compatibility/Core/src/Android/AppCompat/RadioButtonRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/SwitchRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/TabbedPageRenderer.cs, src/Compatibility/Core/src/Android/AppCompat/ViewRenderer.cs, src/Compatibility/Core/src/Android/BackgroundManager.cs, src/Compatibility/Core/src/Android/BorderBackgroundManager.cs, src/Compatibility/Core/src/Android/ButtonElementManager.cs, src/Compatibility/Core/src/Android/ButtonLayoutManager.cs, src/Compatibility/Core/src/Android/Cells/CellFactory.cs, src/Compatibility/Core/src/Android/Cells/CellRenderer.cs, src/Compatibility/Core/src/Android/Cells/EntryCellRenderer.cs, src/Compatibility/Core/src/Android/Cells/ImageCellRenderer.cs, src/Compatibility/Core/src/Android/Cells/SwitchCellRenderer.cs, src/Compatibility/Core/src/Android/Cells/TextCellRenderer.cs, src/Compatibility/Core/src/Android/Cells/ViewCellRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/AdapterNotifier.cs, src/Compatibility/Core/src/Android/CollectionView/CarouselSpacingItemDecoration.cs, src/Compatibility/Core/src/Android/CollectionView/CarouselViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/CarouselViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/CenterSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/CollectionViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/DataChangeObserver.cs, src/Compatibility/Core/src/Android/CollectionView/EdgeSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/EmptySource.cs, src/Compatibility/Core/src/Android/CollectionView/EmptyViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/EndSingleSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/EndSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/GridLayoutSpanSizeLookup.cs, src/Compatibility/Core/src/Android/CollectionView/GroupableItemsViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/GroupableItemsViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/ICollectionChangedNotifier.cs, src/Compatibility/Core/src/Android/CollectionView/IItemsViewSource.cs, src/Compatibility/Core/src/Android/CollectionView/IndicatorViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/ItemContentView.cs, src/Compatibility/Core/src/Android/CollectionView/ItemViewType.cs, src/Compatibility/Core/src/Android/CollectionView/ItemsSourceFactory.cs, src/Compatibility/Core/src/Android/CollectionView/ItemsViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/ItemsViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/ListSource.cs, src/Compatibility/Core/src/Android/CollectionView/NongreedySnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/ObservableGroupedSource.cs, src/Compatibility/Core/src/Android/CollectionView/ObservableItemsSource.cs, src/Compatibility/Core/src/Android/CollectionView/PositionalSmoothScroller.cs, src/Compatibility/Core/src/Android/CollectionView/RecyclerViewScrollListener.cs, src/Compatibility/Core/src/Android/CollectionView/ScrollHelper.cs, src/Compatibility/Core/src/Android/CollectionView/SelectableItemsViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/SelectableItemsViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/SelectableViewHolder.cs, src/Compatibility/Core/src/Android/CollectionView/SimpleViewHolder.cs, src/Compatibility/Core/src/Android/CollectionView/SingleSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/SizedItemContentView.cs, src/Compatibility/Core/src/Android/CollectionView/SnapManager.cs, src/Compatibility/Core/src/Android/CollectionView/SpacingItemDecoration.cs, src/Compatibility/Core/src/Android/CollectionView/StartSingleSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/StartSnapHelper.cs, src/Compatibility/Core/src/Android/CollectionView/StructuredItemsViewAdapter.cs, src/Compatibility/Core/src/Android/CollectionView/StructuredItemsViewRenderer.cs, src/Compatibility/Core/src/Android/CollectionView/TemplatedItemViewHolder.cs, src/Compatibility/Core/src/Android/CollectionView/TextViewHolder.cs, src/Compatibility/Core/src/Android/CollectionView/UngroupedItemsSource.cs, src/Compatibility/Core/src/Android/ColorExtensions.cs, src/Compatibility/Core/src/Android/DragAndDropGestureHandler.cs, src/Compatibility/Core/src/Android/EntryAccessibilityDelegate.cs, src/Compatibility/Core/src/Android/Extensions.cs, src/Compatibility/Core/src/Android/Extensions/AccessibilityExtensions.cs, src/Compatibility/Core/src/Android/Extensions/DoubleCollectionExtensions.cs, src/Compatibility/Core/src/Android/Extensions/EntryRendererExtensions.cs, src/Compatibility/Core/src/Android/Extensions/FlowDirectionExtensions.cs, src/Compatibility/Core/src/Android/Extensions/ImageViewExtensions.cs, src/Compatibility/Core/src/Android/Extensions/NativeBindingExtensions.cs, src/Compatibility/Core/src/Android/Extensions/RecyclerExtensions.cs, src/Compatibility/Core/src/Android/Extensions/ScrollViewExtensions.cs, src/Compatibility/Core/src/Android/Extensions/TextAlignmentExtensions.cs, src/Compatibility/Core/src/Android/Extensions/TextViewExtensions.cs, src/Compatibility/Core/src/Android/Extensions/TransformExtensions.cs, src/Compatibility/Core/src/Android/FastRenderers/AutomationPropertiesProvider.cs, src/Compatibility/Core/src/Android/FastRenderers/ButtonRenderer.cs, src/Compatibility/Core/src/Android/FastRenderers/EffectControlProvider.cs, src/Compatibility/Core/src/Android/FastRenderers/FrameRenderer.cs, src/Compatibility/Core/src/Android/FastRenderers/ImageElementManager.cs, src/Compatibility/Core/src/Android/FastRenderers/ImageRenderer.cs, src/Compatibility/Core/src/Android/FastRenderers/LabelRenderer.cs, src/Compatibility/Core/src/Android/FastRenderers/VisualElementRenderer.cs, src/Compatibility/Core/src/Android/Flags.cs, src/Compatibility/Core/src/Android/Forms.cs, src/Compatibility/Core/src/Android/GetDesiredSizeDelegate.cs, src/Compatibility/Core/src/Android/HandlerToRendererShim.cs, src/Compatibility/Core/src/Android/IBorderVisualElementRenderer.cs, src/Compatibility/Core/src/Android/IButtonLayoutRenderer.cs, src/Compatibility/Core/src/Android/IDeviceInfoProvider.cs, src/Compatibility/Core/src/Android/IDisposedState.cs, src/Compatibility/Core/src/Android/ILayoutChanges.cs, src/Compatibility/Core/src/Android/IPickerRenderer.cs, src/Compatibility/Core/src/Android/IPlatformLayout.cs, src/Compatibility/Core/src/Android/IScrollView.cs, src/Compatibility/Core/src/Android/IStepperRenderer.cs, src/Compatibility/Core/src/Android/IVisualElementRenderer.cs, src/Compatibility/Core/src/Android/ImageCache.cs, src/Compatibility/Core/src/Android/LayoutExtensions.cs, src/Compatibility/Core/src/Android/MeasureSpecFactory.cs, src/Compatibility/Core/src/Android/NativeBindingservice.cs, src/Compatibility/Core/src/Android/NativeValueConverterService.cs, src/Compatibility/Core/src/Android/NativeViewWrapper.cs, src/Compatibility/Core/src/Android/NativeViewWrapperRenderer.cs, src/Compatibility/Core/src/Android/OnLayoutDelegate.cs, src/Compatibility/Core/src/Android/OnMeasureDelegate.cs, src/Compatibility/Core/src/Android/PickerManager.cs, src/Compatibility/Core/src/Android/PlatformRenderer.cs, src/Compatibility/Core/src/Android/PopupManager.cs, src/Compatibility/Core/src/Android/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/Android/RendererPool.cs, src/Compatibility/Core/src/Android/Renderers/AHorizontalScrollView.cs, src/Compatibility/Core/src/Android/Renderers/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/Android/Renderers/AlignmentExtensions.cs, src/Compatibility/Core/src/Android/Renderers/AndroidGIFImageParser.cs, src/Compatibility/Core/src/Android/Renderers/BorderDrawable.cs, src/Compatibility/Core/src/Android/Renderers/BoxRenderer.cs, src/Compatibility/Core/src/Android/Renderers/CircularProgress.cs, src/Compatibility/Core/src/Android/Renderers/DatePickerRenderer.cs, src/Compatibility/Core/src/Android/Renderers/DescendantFocusToggler.cs, src/Compatibility/Core/src/Android/Renderers/EditorRenderer.cs, src/Compatibility/Core/src/Android/Renderers/ElementSelectedEventArgs.cs, src/Compatibility/Core/src/Android/Renderers/EntryRenderer.cs, src/Compatibility/Core/src/Android/Renderers/FileImageSourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/FontImageSourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/FormsEditText.cs, src/Compatibility/Core/src/Android/Renderers/FormsImageView.cs, src/Compatibility/Core/src/Android/Renderers/FormsSeekBar.cs, src/Compatibility/Core/src/Android/Renderers/FormsTextView.cs, src/Compatibility/Core/src/Android/Renderers/FormsVideoView.cs, src/Compatibility/Core/src/Android/Renderers/FormsWebChromeClient.cs, src/Compatibility/Core/src/Android/Renderers/FormsWebViewClient.cs, src/Compatibility/Core/src/Android/Renderers/GroupedListViewAdapter.cs, src/Compatibility/Core/src/Android/Renderers/IAnimationSourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/IDescendantFocusToggler.cs, src/Compatibility/Core/src/Android/Renderers/IFormsEditText.cs, src/Compatibility/Core/src/Android/Renderers/IImageSourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/IImageViewHandler.cs, src/Compatibility/Core/src/Android/Renderers/IPopupTrigger.cs, src/Compatibility/Core/src/Android/Renderers/ImageLoaderSourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/Android/Renderers/LabelRenderer.cs, src/Compatibility/Core/src/Android/Renderers/ListViewAdapter.cs, src/Compatibility/Core/src/Android/Renderers/ListViewRenderer.cs, src/Compatibility/Core/src/Android/Renderers/MotionEventHelper.cs, src/Compatibility/Core/src/Android/Renderers/ObjectJavaBox.cs, src/Compatibility/Core/src/Android/Renderers/PageContainer.cs, src/Compatibility/Core/src/Android/Renderers/PageRenderer.cs, src/Compatibility/Core/src/Android/Renderers/PickerEditText.cs, src/Compatibility/Core/src/Android/Renderers/ProgressBarRenderer.cs, src/Compatibility/Core/src/Android/Renderers/RefreshViewRenderer.cs, src/Compatibility/Core/src/Android/Renderers/ScrollViewContainer.cs, src/Compatibility/Core/src/Android/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/Android/Renderers/SearchBarRenderer.cs, src/Compatibility/Core/src/Android/Renderers/SliderRenderer.cs, src/Compatibility/Core/src/Android/Renderers/StepperRenderer.cs, src/Compatibility/Core/src/Android/Renderers/StreamImagesourceHandler.cs, src/Compatibility/Core/src/Android/Renderers/SwipeViewRenderer.cs, src/Compatibility/Core/src/Android/Renderers/TableViewModelRenderer.cs, src/Compatibility/Core/src/Android/Renderers/TableViewRenderer.cs, src/Compatibility/Core/src/Android/Renderers/TimePickerRenderer.cs, src/Compatibility/Core/src/Android/Renderers/ViewGroupExtensions.cs, src/Compatibility/Core/src/Android/Renderers/WebViewRenderer.cs, src/Compatibility/Core/src/Android/ResourceManager.cs, src/Compatibility/Core/src/Android/Resources/layout/Tabbar.axml, src/Compatibility/Core/src/Android/Resources/layout/Toolbar.axml, src/Compatibility/Core/src/Android/Resources/values/attrs.xml, src/Compatibility/Core/src/Android/Resources/values/styles.xml, src/Compatibility/Core/src/Android/Shapes/EllipseRenderer.cs, src/Compatibility/Core/src/Android/Shapes/LineRenderer.cs, src/Compatibility/Core/src/Android/Shapes/PathRenderer.cs, src/Compatibility/Core/src/Android/Shapes/PolygonRenderer.cs, src/Compatibility/Core/src/Android/Shapes/PolylineRenderer.cs, src/Compatibility/Core/src/Android/Shapes/RectangleRenderer.cs, src/Compatibility/Core/src/Android/Shapes/ShapeRenderer.cs, src/Compatibility/Core/src/Android/StepperRendererManager.cs, src/Compatibility/Core/src/Android/TextColorSwitcher.cs, src/Compatibility/Core/src/Android/ViewInitializedEventArgs.cs, src/Compatibility/Core/src/Android/ViewPool.cs, src/Compatibility/Core/src/Android/ViewRenderer.cs, src/Compatibility/Core/src/Android/VisualElementExtensions.cs, src/Compatibility/Core/src/Android/VisualElementPackager.cs, src/Compatibility/Core/src/Android/VisualElementRenderer.cs, src/Compatibility/Core/src/Android/VisualElementRendererFlags.cs, src/Compatibility/Core/src/Android/VisualElementTracker.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.Android.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.Embedding.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.Standard.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.Tizen.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.Windows.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.cs, src/Compatibility/Core/src/AppHostBuilderExtensions.iOS.cs, src/Compatibility/Core/src/Compatibility.csproj, src/Compatibility/Core/src/ExportRendererAttribute.cs, src/Compatibility/Core/src/Forms.cs, src/Compatibility/Core/src/GTK/Animations/BaseAnimation.cs, src/Compatibility/Core/src/GTK/Animations/FloatAnimation.cs, src/Compatibility/Core/src/GTK/Cells/CellBase.cs, src/Compatibility/Core/src/GTK/Cells/CellRenderer.cs, src/Compatibility/Core/src/GTK/Cells/EntryCell.cs, src/Compatibility/Core/src/GTK/Cells/EntryCellRenderer.cs, src/Compatibility/Core/src/GTK/Cells/ImageCell.cs, src/Compatibility/Core/src/GTK/Cells/ImageCellRenderer.cs, src/Compatibility/Core/src/GTK/Cells/SwitchCell.cs, src/Compatibility/Core/src/GTK/Cells/SwitchCellRenderer.cs, src/Compatibility/Core/src/GTK/Cells/TextCell.cs, src/Compatibility/Core/src/GTK/Cells/TextCellRenderer.cs, src/Compatibility/Core/src/GTK/Cells/ViewCell.cs, src/Compatibility/Core/src/GTK/Cells/ViewCellRenderer.cs, src/Compatibility/Core/src/GTK/Compatibility.GTK.csproj, src/Compatibility/Core/src/GTK/Controls/ActivityIndicator.cs, src/Compatibility/Core/src/GTK/Controls/BoxView.cs, src/Compatibility/Core/src/GTK/Controls/Carousel.cs, src/Compatibility/Core/src/GTK/Controls/CustomComboBox.cs, src/Compatibility/Core/src/GTK/Controls/CustomFrame.cs, src/Compatibility/Core/src/GTK/Controls/DatePicker.cs, src/Compatibility/Core/src/GTK/Controls/EntryWrapper.cs, src/Compatibility/Core/src/GTK/Controls/FlyoutPage.cs, src/Compatibility/Core/src/GTK/Controls/GLWidget/GLWidget.cs, src/Compatibility/Core/src/GTK/Controls/GLWidget/OSX/OSXWindowInfoInitializer.cs, src/Compatibility/Core/src/GTK/Controls/GLWidget/Win/WinWindowsInfoInitializer.cs, src/Compatibility/Core/src/GTK/Controls/GLWidget/X11/XWindowInfoInitializer.cs, src/Compatibility/Core/src/GTK/Controls/ImageButton.cs, src/Compatibility/Core/src/GTK/Controls/ImageControl.cs, src/Compatibility/Core/src/GTK/Controls/ListView.cs, src/Compatibility/Core/src/GTK/Controls/NavigationChildPage.cs, src/Compatibility/Core/src/GTK/Controls/NotebookWrapper.cs, src/Compatibility/Core/src/GTK/Controls/Page.cs, src/Compatibility/Core/src/GTK/Controls/PageContainer.cs, src/Compatibility/Core/src/GTK/Controls/ScrolledTextView.cs, src/Compatibility/Core/src/GTK/Controls/SearchEntry.cs, src/Compatibility/Core/src/GTK/Controls/TabbedPageHeader.cs, src/Compatibility/Core/src/GTK/Controls/TableView.cs, src/Compatibility/Core/src/GTK/Controls/TimePicker.cs, src/Compatibility/Core/src/GTK/Controls/WebView.cs, src/Compatibility/Core/src/GTK/ExportCellAttribute.cs, src/Compatibility/Core/src/GTK/ExportImageSourceHandlerAttribute.cs, src/Compatibility/Core/src/GTK/ExportRendererAttribute.cs, src/Compatibility/Core/src/GTK/Extensions/AlignmentExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/ButtonContentLayoutExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/ColorExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/GtkRectangleExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/ImageExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/LabelExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/PageExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/VisualElementExtensions.cs, src/Compatibility/Core/src/GTK/Extensions/WidgetExtensions.cs, src/Compatibility/Core/src/GTK/FontNamedSizeService.cs, src/Compatibility/Core/src/GTK/Forms.cs, src/Compatibility/Core/src/GTK/FormsWindow.cs, src/Compatibility/Core/src/GTK/GtkDeviceInfo.cs, src/Compatibility/Core/src/GTK/GtkExpressionSearch.cs, src/Compatibility/Core/src/GTK/GtkFormsContainer.cs, src/Compatibility/Core/src/GTK/GtkIsolatedStorageFile.cs, src/Compatibility/Core/src/GTK/GtkOpenGL.cs, src/Compatibility/Core/src/GTK/GtkPlatformServices.cs, src/Compatibility/Core/src/GTK/GtkSerializer.cs, src/Compatibility/Core/src/GTK/GtkSynchronizationContext.cs, src/Compatibility/Core/src/GTK/GtkThemes.cs, src/Compatibility/Core/src/GTK/GtkTicker.cs, src/Compatibility/Core/src/GTK/GtkToolbarConstants.cs, src/Compatibility/Core/src/GTK/GtkToolbarTracker.cs, src/Compatibility/Core/src/GTK/Helpers/DialogHelper.cs, src/Compatibility/Core/src/GTK/Helpers/FontDescriptionHelper.cs, src/Compatibility/Core/src/GTK/Helpers/GrabHelper.cs, src/Compatibility/Core/src/GTK/Helpers/PlatformHelper.cs, src/Compatibility/Core/src/GTK/IDesiredSizeProvider.cs, src/Compatibility/Core/src/GTK/IVisualElementRenderer.cs, src/Compatibility/Core/src/GTK/IVisualNativeElementRenderer.cs, src/Compatibility/Core/src/GTK/Libs/gtk-sharp/README.txt, src/Compatibility/Core/src/GTK/Libs/webkit-sharp/README.txt, src/Compatibility/Core/src/GTK/Libs/webkit-sharp/webkit-sharp.dll.config, src/Compatibility/Core/src/GTK/Packagers/LayoutElementPackager.cs, src/Compatibility/Core/src/GTK/Packagers/PageElementPackager.cs, src/Compatibility/Core/src/GTK/Packagers/VisualElementPackager.cs, src/Compatibility/Core/src/GTK/Platform.cs, src/Compatibility/Core/src/GTK/PlatformConfigurationExtensions.cs, src/Compatibility/Core/src/GTK/PlatformEffect.cs, src/Compatibility/Core/src/GTK/PlatformRenderer.cs, src/Compatibility/Core/src/GTK/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/GTK/RendererFactory.cs, src/Compatibility/Core/src/GTK/Renderers/AbstractPageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/BoxViewRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/ButtonRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/CarouselPageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/DatePickerRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/EditorRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/EntryRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/FlyoutPageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/FrameRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/IPageControl.cs, src/Compatibility/Core/src/GTK/Renderers/IToolbarTracker.cs, src/Compatibility/Core/src/GTK/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/LabelRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/LayoutRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/ListViewRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/NavigationPageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/PageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/PickerRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/ProgressBarRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/SearchBarRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/SliderRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/StepperRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/SwitchRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/TabbedPageRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/TableViewRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/TimePickerRenderer.cs, src/Compatibility/Core/src/GTK/Renderers/WebViewRenderer.cs, src/Compatibility/Core/src/GTK/ResourcesProvider.cs, src/Compatibility/Core/src/GTK/ViewRenderer.cs, src/Compatibility/Core/src/GTK/VisualElementRenderer.cs, src/Compatibility/Core/src/GTK/VisualElementTracker.cs, src/Compatibility/Core/src/GTK/app.config, src/Compatibility/Core/src/GTK/webkit-sharp.dll.config, src/Compatibility/Core/src/GlobalNamespaces.cs, src/Compatibility/Core/src/MacOS/CADisplayLinkTicker.cs, src/Compatibility/Core/src/MacOS/Cells/CellNSView.cs, src/Compatibility/Core/src/MacOS/Cells/CellRenderer.cs, src/Compatibility/Core/src/MacOS/Cells/EntryCellRenderer.cs, src/Compatibility/Core/src/MacOS/Cells/ImageCellRenderer.cs, src/Compatibility/Core/src/MacOS/Cells/NSTableViewCellStyle.cs, src/Compatibility/Core/src/MacOS/Cells/SwitchCellRenderer.cs, src/Compatibility/Core/src/MacOS/Cells/TextCellRenderer.cs, src/Compatibility/Core/src/MacOS/Cells/ViewCellNSView.cs, src/Compatibility/Core/src/MacOS/Cells/ViewCellRenderer.cs, src/Compatibility/Core/src/MacOS/Compatibility.macOS.csproj, src/Compatibility/Core/src/MacOS/Controls/FormsBoxView.cs, src/Compatibility/Core/src/MacOS/Controls/FormsImageView.cs, src/Compatibility/Core/src/MacOS/Controls/FormsNSDatePicker.cs, src/Compatibility/Core/src/MacOS/Controls/FormsNSSlider.cs, src/Compatibility/Core/src/MacOS/Controls/FormsPageControllerDelegate.cs, src/Compatibility/Core/src/MacOS/Controls/NavigationChildPageWrapper.cs, src/Compatibility/Core/src/MacOS/Controls/ScrollViewScrollChangedEventArgs.cs, src/Compatibility/Core/src/MacOS/Controls/VerticallyCenteredTextFieldCell.cs, src/Compatibility/Core/src/MacOS/EmbeddedFontLoader.cs, src/Compatibility/Core/src/MacOS/Extensions/AlignmentExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/BrushExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/ButtonExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/FlowDirectionExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/FontExtensions.Shared.cs, src/Compatibility/Core/src/MacOS/Extensions/FontExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/ImageExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSAttributedStringExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSButtonExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSImageExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSMenuExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSScrollViewExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSTableViewExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSTextFieldExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/NSViewControllerExtensions.cs, src/Compatibility/Core/src/MacOS/Extensions/PageExtensions.cs, src/Compatibility/Core/src/MacOS/FormsApplicationDelegate.cs, src/Compatibility/Core/src/MacOS/ImageSourceHandlers.cs, src/Compatibility/Core/src/MacOS/MacDeviceInfo.cs, src/Compatibility/Core/src/MacOS/ModalPageTracker.cs, src/Compatibility/Core/src/MacOS/NativeToolbarTracker.cs, src/Compatibility/Core/src/MacOS/Platform.cs, src/Compatibility/Core/src/MacOS/PlatformNavigation.cs, src/Compatibility/Core/src/MacOS/PlatformRenderer.cs, src/Compatibility/Core/src/MacOS/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/MacOS/Renderers/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/BoxViewRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/ButtonRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/CarouselPageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/CheckBoxRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/CustomNSTableHeaderView.cs, src/Compatibility/Core/src/MacOS/Renderers/DatePickerRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/DefaultRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/EditorRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/EntryRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/FlippedClipView.cs, src/Compatibility/Core/src/MacOS/Renderers/FlyoutPageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/FrameRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/LayoutRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/ListViewDataSource.cs, src/Compatibility/Core/src/MacOS/Renderers/ListViewRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/NSPageContainer.cs, src/Compatibility/Core/src/MacOS/Renderers/NavigationPageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/PageControllerDelegate.cs, src/Compatibility/Core/src/MacOS/Renderers/PageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/PickerRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/ProgressBarRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/RadioButtonRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/SearchBarRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/SliderRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/StepperRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/SwitchRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/TabbedPageRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/TableViewDataSource.cs, src/Compatibility/Core/src/MacOS/Renderers/TableViewRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/TimePickerRenderer.cs, src/Compatibility/Core/src/MacOS/Renderers/WebViewRenderer.cs, src/Compatibility/Core/src/MauiHandlersCollectionExtensions.cs, src/Compatibility/Core/src/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/RendererToHandlerShim.Android.cs, src/Compatibility/Core/src/RendererToHandlerShim.Tizen.cs, src/Compatibility/Core/src/RendererToHandlerShim.Windows.cs, src/Compatibility/Core/src/RendererToHandlerShim.cs, src/Compatibility/Core/src/RendererToHandlerShim.iOS.cs, src/Compatibility/Core/src/Tizen/DisplayResolutionUnit.cs, src/Compatibility/Core/src/Tizen/EmbeddedFontLoader.cs, src/Compatibility/Core/src/Tizen/Extensions/BrushExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/ColorExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/DensityIndependentPixelExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/GeometryExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/ImageExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/LayoutExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/NativeBindingExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/PlatformConfigurationExtensions.cs, src/Compatibility/Core/src/Tizen/Extensions/TransformExtensions.cs, src/Compatibility/Core/src/Tizen/Flags.cs, src/Compatibility/Core/src/Tizen/Forms.cs, src/Compatibility/Core/src/Tizen/FormsApplication.cs, src/Compatibility/Core/src/Tizen/Gesture/GestureDetector.cs, src/Compatibility/Core/src/Tizen/Gesture/GestureHandler.cs, src/Compatibility/Core/src/Tizen/Gesture/PanGestureHandler.cs, src/Compatibility/Core/src/Tizen/Gesture/TapGestureHandler.cs, src/Compatibility/Core/src/Tizen/HandlerToRendererShim.cs, src/Compatibility/Core/src/Tizen/Log/ConsoleLogger.cs, src/Compatibility/Core/src/Tizen/Log/DlogLogger.cs, src/Compatibility/Core/src/Tizen/Log/ILogger.cs, src/Compatibility/Core/src/Tizen/Log/Log.cs, src/Compatibility/Core/src/Tizen/NativeBindingService.cs, src/Compatibility/Core/src/Tizen/NativeValueConverterService.cs, src/Compatibility/Core/src/Tizen/NativeViewWrapper.cs, src/Compatibility/Core/src/Tizen/Platform.cs, src/Compatibility/Core/src/Tizen/PopupManager.cs, src/Compatibility/Core/src/Tizen/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/Tizen/Renderers/BoxViewRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/DefaultRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/ILayoutRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/IVisualElementRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/LabelRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/LayoutRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/NavigationPageRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/PageRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/ViewRenderer.cs, src/Compatibility/Core/src/Tizen/Renderers/VisualElementRenderer.cs, src/Compatibility/Core/src/Tizen/ResourcePath.cs, src/Compatibility/Core/src/Tizen/StaticRegistrar.cs, src/Compatibility/Core/src/Tizen/TizenTitleBarVisibility.cs, src/Compatibility/Core/src/Tizen/ViewInitializedEventArgs.cs, src/Compatibility/Core/src/Tizen/VisualElementRendererFlags.cs, src/Compatibility/Core/src/WPF/Animatable.cs, src/Compatibility/Core/src/WPF/Assets/Button.xaml, src/Compatibility/Core/src/WPF/Assets/CheckBox.xaml, src/Compatibility/Core/src/WPF/Assets/Converters.xaml, src/Compatibility/Core/src/WPF/Assets/Default.xaml, src/Compatibility/Core/src/WPF/CellControl.cs, src/Compatibility/Core/src/WPF/Compatibility.WPF.csproj, src/Compatibility/Core/src/WPF/Controls/FormWindow.cs, src/Compatibility/Core/src/WPF/Controls/FormsAppBar.cs, src/Compatibility/Core/src/WPF/Controls/FormsAppBarButton.cs, src/Compatibility/Core/src/WPF/Controls/FormsBitmapIcon.cs, src/Compatibility/Core/src/WPF/Controls/FormsButton.cs, src/Compatibility/Core/src/WPF/Controls/FormsCarouselPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsContentControl.cs, src/Compatibility/Core/src/WPF/Controls/FormsContentDialog.cs, src/Compatibility/Core/src/WPF/Controls/FormsContentPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsElementIcon.cs, src/Compatibility/Core/src/WPF/Controls/FormsFlyoutPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsFontIcon.cs, src/Compatibility/Core/src/WPF/Controls/FormsMultiPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsNavigationPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsPathIcon.cs, src/Compatibility/Core/src/WPF/Controls/FormsProgressRing.xaml, src/Compatibility/Core/src/WPF/Controls/FormsProgressRing.xaml.cs, src/Compatibility/Core/src/WPF/Controls/FormsSymbolIcon.cs, src/Compatibility/Core/src/WPF/Controls/FormsTabbedPage.cs, src/Compatibility/Core/src/WPF/Controls/FormsTransitioningContentControl.cs, src/Compatibility/Core/src/WPF/Controls/FormsWindowButtonCommands.cs, src/Compatibility/Core/src/WPF/Controls/VisualStates.cs, src/Compatibility/Core/src/WPF/Converters/CaseConverter.cs, src/Compatibility/Core/src/WPF/Converters/CollapseWhenEmptyConverter.cs, src/Compatibility/Core/src/WPF/Converters/ColorConverter.cs, src/Compatibility/Core/src/WPF/Converters/FontFamilyConverter.cs, src/Compatibility/Core/src/WPF/Converters/FontIconColorConverter.cs, src/Compatibility/Core/src/WPF/Converters/HeightConverter.cs, src/Compatibility/Core/src/WPF/Converters/IconConveter.cs, src/Compatibility/Core/src/WPF/Converters/ImageConverter.cs, src/Compatibility/Core/src/WPF/Converters/SymbolToValueConverter.cs, src/Compatibility/Core/src/WPF/Converters/ToUpperConverter.cs, src/Compatibility/Core/src/WPF/Converters/ViewToRendererConverter.cs, src/Compatibility/Core/src/WPF/CustomContextMenu.cs, src/Compatibility/Core/src/WPF/Deserializer.cs, src/Compatibility/Core/src/WPF/EmbeddedFontLoader.cs, src/Compatibility/Core/src/WPF/Enums/Symbol.cs, src/Compatibility/Core/src/WPF/ExportRendererAttribute.cs, src/Compatibility/Core/src/WPF/Extensions/AlignmentExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/BrushExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/ColorExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/DeviceExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/FontExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/FormattedStringExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/FrameworkElementAttached.cs, src/Compatibility/Core/src/WPF/Extensions/FrameworkElementExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/GeometryExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/ImageExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/KeyboardExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/ObjectExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/PageExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/ScrollBarVisibilityExtensions.cs, src/Compatibility/Core/src/WPF/Extensions/VisualElementExtensions.cs, src/Compatibility/Core/src/WPF/FontNamedSizeService.cs, src/Compatibility/Core/src/WPF/Forms.cs, src/Compatibility/Core/src/WPF/FormsApplicationPage.cs, src/Compatibility/Core/src/WPF/FormsContentLoader.cs, src/Compatibility/Core/src/WPF/FormsPanel.cs, src/Compatibility/Core/src/WPF/FormsRadioButton.cs, src/Compatibility/Core/src/WPF/FormsTextBox.cs, src/Compatibility/Core/src/WPF/FormsTimePicker.cs, src/Compatibility/Core/src/WPF/Helpers/TreeHelper.cs, src/Compatibility/Core/src/WPF/Helpers/UiHelper.cs, src/Compatibility/Core/src/WPF/ICellRenderer.cs, src/Compatibility/Core/src/WPF/IVisualElementRenderer.cs, src/Compatibility/Core/src/WPF/Interfaces/IContentLoader.cs, src/Compatibility/Core/src/WPF/Interfaces/IFormsNavigation.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/ComGuids.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/Debug.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/DoubleUtil.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/DpiHelper.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/ErrorCodes.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/MessageWindow.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/NativeMethods.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/NtDll.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/ShellProvider.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/StreamHelper.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/Utilities.Windows.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/Utilities.Wpf.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/Utilities.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/Standard/Verify.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/SystemCommands.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/SystemParameters2.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/WindowChrome.cs, src/Compatibility/Core/src/WPF/Microsoft.Windows.Shell/WindowChromeWorker.cs, src/Compatibility/Core/src/WPF/Platform.cs, src/Compatibility/Core/src/WPF/PlatformEffect.cs, src/Compatibility/Core/src/WPF/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/WPF/Renderers/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/BoxViewRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ButtonRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/CarouselPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/CellRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/CheckBoxRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/DatePickerRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/EditorRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/EntryRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/FlyoutPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/FormsCheckBox.cs, src/Compatibility/Core/src/WPF/Renderers/FrameRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ImageButtonRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/LabelRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/LayoutRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ListViewRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/NavigationPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/PageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/PickerRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ProgressBarRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/RadioButtonRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/SearchBarRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/SliderRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/StepperRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/SwitchRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/TabbedPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/TableViewRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/TimePickerRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/ViewRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/VisualMultiPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/VisualPageRenderer.cs, src/Compatibility/Core/src/WPF/Renderers/WebViewRenderer.cs, src/Compatibility/Core/src/WPF/ResourcesProvider.cs, src/Compatibility/Core/src/WPF/Themes/FormsAppBar.xaml, src/Compatibility/Core/src/WPF/Themes/FormsAppBarButton.xaml, src/Compatibility/Core/src/WPF/Themes/FormsBitmapIcon.xaml, src/Compatibility/Core/src/WPF/Themes/FormsCarouselPage.xaml, src/Compatibility/Core/src/WPF/Themes/FormsContentControl.xaml, src/Compatibility/Core/src/WPF/Themes/FormsContentDialog.xaml, src/Compatibility/Core/src/WPF/Themes/FormsContentPage.xaml, src/Compatibility/Core/src/WPF/Themes/FormsFlyoutPage.xaml, src/Compatibility/Core/src/WPF/Themes/FormsFontIcon.xaml, src/Compatibility/Core/src/WPF/Themes/FormsNavigationPage.xaml, src/Compatibility/Core/src/WPF/Themes/FormsPathIcon.xaml, src/Compatibility/Core/src/WPF/Themes/FormsSymbolIcon.xaml, src/Compatibility/Core/src/WPF/Themes/FormsTabbedPage.xaml, src/Compatibility/Core/src/WPF/Themes/FormsTransitioningContentControl.xaml, src/Compatibility/Core/src/WPF/Themes/FormsWindow.xaml, src/Compatibility/Core/src/WPF/Themes/FormsWindowButtonCommands.xaml, src/Compatibility/Core/src/WPF/Themes/Generic.xaml, src/Compatibility/Core/src/WPF/VisualElementTracker.cs, src/Compatibility/Core/src/WPF/WPFDeviceInfo.cs, src/Compatibility/Core/src/WPF/WPFExpressionSearch.cs, src/Compatibility/Core/src/WPF/WPFIsolatedStorageFile.cs, src/Compatibility/Core/src/WPF/WPFPlatformServices.cs, src/Compatibility/Core/src/WPF/WPFResources.xaml, src/Compatibility/Core/src/WPF/WPFTicker.cs, src/Compatibility/Core/src/WPF/app.config, src/Compatibility/Core/src/Windows/AccessKeyHelper.cs, src/Compatibility/Core/src/Windows/AccessibilityExtensions.cs, src/Compatibility/Core/src/Windows/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/Windows/AlertDialog.cs, src/Compatibility/Core/src/Windows/AlignmentExtensions.cs, src/Compatibility/Core/src/Windows/BackgroundTracker.cs, src/Compatibility/Core/src/Windows/BoolToVisibilityConverter.cs, src/Compatibility/Core/src/Windows/BoxViewBorderRenderer.cs, src/Compatibility/Core/src/Windows/BrushConverter.cs, src/Compatibility/Core/src/Windows/BrushHelpers.cs, src/Compatibility/Core/src/Windows/ButtonRenderer.cs, src/Compatibility/Core/src/Windows/CellControl.cs, src/Compatibility/Core/src/Windows/CheckBoxRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/CarouselViewRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/CollectionViewRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/GroupableItemsViewRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/ItemContentControl.cs, src/Compatibility/Core/src/Windows/CollectionView/ItemsViewRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/SelectableItemsViewRenderer.cs, src/Compatibility/Core/src/Windows/CollectionView/StructuredItemsViewRenderer.cs, src/Compatibility/Core/src/Windows/CompositionHelper.cs, src/Compatibility/Core/src/Windows/DatePickerRenderer.cs, src/Compatibility/Core/src/Windows/DefaultRenderer.cs, src/Compatibility/Core/src/Windows/Directory.Build.Props, src/Compatibility/Core/src/Windows/Directory.Build.targets, src/Compatibility/Core/src/Windows/EditorRenderer.cs, src/Compatibility/Core/src/Windows/EntryCellTextBox.cs, src/Compatibility/Core/src/Windows/EntryRenderer.cs, src/Compatibility/Core/src/Windows/Extensions/ClipExtensions.cs, src/Compatibility/Core/src/Windows/Extensions/ImageExtensions.cs, src/Compatibility/Core/src/Windows/FileImageSourceHandler.cs, src/Compatibility/Core/src/Windows/Flags.cs, src/Compatibility/Core/src/Windows/FlowDirectionExtensions.cs, src/Compatibility/Core/src/Windows/FlyoutPageControl.cs, src/Compatibility/Core/src/Windows/FlyoutPageControlStyle.xaml, src/Compatibility/Core/src/Windows/FlyoutPageRenderer.cs, src/Compatibility/Core/src/Windows/FontImageSourceHandler.cs, src/Compatibility/Core/src/Windows/Forms.cs, src/Compatibility/Core/src/Windows/FormsAutoSuggestBoxStyle.xaml, src/Compatibility/Core/src/Windows/FormsButton.cs, src/Compatibility/Core/src/Windows/FormsCancelButton.cs, src/Compatibility/Core/src/Windows/FormsCheckBox.cs, src/Compatibility/Core/src/Windows/FormsCheckBoxStyle.xaml, src/Compatibility/Core/src/Windows/FormsComboBox.cs, src/Compatibility/Core/src/Windows/FormsCommandBar.cs, src/Compatibility/Core/src/Windows/FormsCommandBarStyle.xaml, src/Compatibility/Core/src/Windows/FormsEmbeddedPageWrapper.xaml, src/Compatibility/Core/src/Windows/FormsFlyout.xaml, src/Compatibility/Core/src/Windows/FormsFlyout.xaml.cs, src/Compatibility/Core/src/Windows/FormsPivot.cs, src/Compatibility/Core/src/Windows/FormsPresenter.cs, src/Compatibility/Core/src/Windows/FormsProgressBar.cs, src/Compatibility/Core/src/Windows/FormsProgressBarStyle.xaml, src/Compatibility/Core/src/Windows/FormsRadioButton.cs, src/Compatibility/Core/src/Windows/FormsSlider.cs, src/Compatibility/Core/src/Windows/FormsTextBox.cs, src/Compatibility/Core/src/Windows/FormsTextBoxStyle.xaml, src/Compatibility/Core/src/Windows/FrameRenderer.cs, src/Compatibility/Core/src/Windows/FrameworkElementExtensions.cs, src/Compatibility/Core/src/Windows/HandlerToRendererShim.cs, src/Compatibility/Core/src/Windows/IImageVisualElementRenderer.cs, src/Compatibility/Core/src/Windows/ITitleIconProvider.cs, src/Compatibility/Core/src/Windows/ITitleProvider.cs, src/Compatibility/Core/src/Windows/ITitleViewProvider.cs, src/Compatibility/Core/src/Windows/ITitleViewRendererController.cs, src/Compatibility/Core/src/Windows/IToolBarForegroundBinder.cs, src/Compatibility/Core/src/Windows/IToolbarProvider.cs, src/Compatibility/Core/src/Windows/IVisualElementRenderer.cs, src/Compatibility/Core/src/Windows/IVisualNativeElementRenderer.cs, src/Compatibility/Core/src/Windows/ImageButtonRenderer.cs, src/Compatibility/Core/src/Windows/ImageElementManager.cs, src/Compatibility/Core/src/Windows/ImageRenderer.cs, src/Compatibility/Core/src/Windows/ImageSourceIconElementConverter.cs, src/Compatibility/Core/src/Windows/IndicatorViewRenderer.cs, src/Compatibility/Core/src/Windows/InterceptVisualStateManager.cs, src/Compatibility/Core/src/Windows/KeyboardExtensions.cs, src/Compatibility/Core/src/Windows/LabelRenderer.cs, src/Compatibility/Core/src/Windows/LayoutExtensions.cs, src/Compatibility/Core/src/Windows/LayoutRenderer.cs, src/Compatibility/Core/src/Windows/ListGroupHeaderPresenter.cs, src/Compatibility/Core/src/Windows/ListViewGroupStyleSelector.cs, src/Compatibility/Core/src/Windows/ListViewRenderer.cs, src/Compatibility/Core/src/Windows/ListViewStyles.xaml, src/Compatibility/Core/src/Windows/MasterBackgroundConverter.cs, src/Compatibility/Core/src/Windows/MasterDetailControlStyle.xaml, src/Compatibility/Core/src/Windows/NativeBindingExtensions.cs, src/Compatibility/Core/src/Windows/NativeBindingService.cs, src/Compatibility/Core/src/Windows/NativeEventWrapper.cs, src/Compatibility/Core/src/Windows/NativePropertyListener.cs, src/Compatibility/Core/src/Windows/NativeValueConverterService.cs, src/Compatibility/Core/src/Windows/NativeViewWrapper.cs, src/Compatibility/Core/src/Windows/NativeViewWrapperRenderer.cs, src/Compatibility/Core/src/Windows/NavigationPageRenderer.cs, src/Compatibility/Core/src/Windows/PageControl.cs, src/Compatibility/Core/src/Windows/PageControlStyle.xaml, src/Compatibility/Core/src/Windows/PageExtensions.cs, src/Compatibility/Core/src/Windows/PageRenderer.cs, src/Compatibility/Core/src/Windows/PageToRenderedElementConverter.cs, src/Compatibility/Core/src/Windows/PickerRenderer.cs, src/Compatibility/Core/src/Windows/PickerStyle.xaml, src/Compatibility/Core/src/Windows/Platform.cs, src/Compatibility/Core/src/Windows/PointCollectionExtensions.cs, src/Compatibility/Core/src/Windows/ProgressBarRenderer.cs, src/Compatibility/Core/src/Windows/PromptDialog.xaml, src/Compatibility/Core/src/Windows/PromptDialog.xaml.cs, src/Compatibility/Core/src/Windows/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/Windows/Properties/Xamarin.Forms.Platform.UAP.rd.xml, src/Compatibility/Core/src/Windows/RadioButtonRenderer.cs, src/Compatibility/Core/src/Windows/RefreshViewRenderer.cs, src/Compatibility/Core/src/Windows/Resources.xaml, src/Compatibility/Core/src/Windows/ScrollViewRenderer.cs, src/Compatibility/Core/src/Windows/SearchBarRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/EllipseRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/LineRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/PathRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/PolygonRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/PolylineRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/RectangleRenderer.cs, src/Compatibility/Core/src/Windows/Shapes/ShapeRenderer.cs, src/Compatibility/Core/src/Windows/SliderRenderer.cs, src/Compatibility/Core/src/Windows/SliderStyle.xaml, src/Compatibility/Core/src/Windows/StepperControl.cs, src/Compatibility/Core/src/Windows/StepperRenderer.cs, src/Compatibility/Core/src/Windows/StreamImagesourceHandler.cs, src/Compatibility/Core/src/Windows/SwipeViewRenderer.cs, src/Compatibility/Core/src/Windows/SwitchRenderer.cs, src/Compatibility/Core/src/Windows/TabbedPageRenderer.cs, src/Compatibility/Core/src/Windows/TabbedPageStyle.xaml, src/Compatibility/Core/src/Windows/TableViewRenderer.cs, src/Compatibility/Core/src/Windows/TextAlignmentToHorizontalAlignmentConverter.cs, src/Compatibility/Core/src/Windows/TextBlockExtensions.cs, src/Compatibility/Core/src/Windows/TextCellRenderer.cs, src/Compatibility/Core/src/Windows/TimePickerRenderer.cs, src/Compatibility/Core/src/Windows/TitleViewManager.cs, src/Compatibility/Core/src/Windows/ToolbarPlacementHelper.cs, src/Compatibility/Core/src/Windows/UriImageSourceHandler.cs, src/Compatibility/Core/src/Windows/ViewRenderer.cs, src/Compatibility/Core/src/Windows/ViewToRendererConverter.cs, src/Compatibility/Core/src/Windows/VisualElementExtensions.cs, src/Compatibility/Core/src/Windows/VisualElementPackager.cs, src/Compatibility/Core/src/Windows/VisualElementRenderer.cs, src/Compatibility/Core/src/Windows/VisualElementTracker.cs, src/Compatibility/Core/src/Windows/WebViewRenderer.cs, src/Compatibility/Core/src/Windows/Win2DNotImplementedException.cs, src/Compatibility/Core/src/Windows/WindowsExpressionSearch.cs, src/Compatibility/Core/src/Windows/WindowsPlatform.cs, src/Compatibility/Core/src/iOS/Cells/CellRenderer.cs, src/Compatibility/Core/src/iOS/Cells/CellTableViewCell.cs, src/Compatibility/Core/src/iOS/Cells/EntryCellRenderer.cs, src/Compatibility/Core/src/iOS/Cells/ImageCellRenderer.cs, src/Compatibility/Core/src/iOS/Cells/SwitchCellRenderer.cs, src/Compatibility/Core/src/iOS/Cells/TextCellRenderer.cs, src/Compatibility/Core/src/iOS/Cells/ViewCellRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/CarouselTemplatedCell.cs, src/Compatibility/Core/src/iOS/CollectionView/CarouselViewController.cs, src/Compatibility/Core/src/iOS/CollectionView/CarouselViewDelegator.cs, src/Compatibility/Core/src/iOS/CollectionView/CarouselViewLayout.cs, src/Compatibility/Core/src/iOS/CollectionView/CarouselViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/CollectionViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/DefaultCell.cs, src/Compatibility/Core/src/iOS/CollectionView/EmptySource.cs, src/Compatibility/Core/src/iOS/CollectionView/GridViewLayout.cs, src/Compatibility/Core/src/iOS/CollectionView/GroupableItemsViewController.cs, src/Compatibility/Core/src/iOS/CollectionView/GroupableItemsViewDelegator.cs, src/Compatibility/Core/src/iOS/CollectionView/GroupableItemsViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/HeightConstrainedTemplatedCell.cs, src/Compatibility/Core/src/iOS/CollectionView/HorizontalCell.cs, src/Compatibility/Core/src/iOS/CollectionView/HorizontalDefaultCell.cs, src/Compatibility/Core/src/iOS/CollectionView/HorizontalDefaultSupplementalView.cs, src/Compatibility/Core/src/iOS/CollectionView/HorizontalTemplatedHeaderView.cs, src/Compatibility/Core/src/iOS/CollectionView/IItemsViewSource.cs, src/Compatibility/Core/src/iOS/CollectionView/ILoopItemsViewSource.cs, src/Compatibility/Core/src/iOS/CollectionView/IndexPathExtensions.cs, src/Compatibility/Core/src/iOS/CollectionView/IndexPathHelpers.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsSourceFactory.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsViewCell.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsViewController.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsViewDelegator.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsViewLayout.cs, src/Compatibility/Core/src/iOS/CollectionView/ItemsViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/LayoutAttributesChangedEventArgs.cs, src/Compatibility/Core/src/iOS/CollectionView/ListSource.cs, src/Compatibility/Core/src/iOS/CollectionView/ListViewLayout.cs, src/Compatibility/Core/src/iOS/CollectionView/LoopListSource.cs, src/Compatibility/Core/src/iOS/CollectionView/LoopObservableItemsSource.cs, src/Compatibility/Core/src/iOS/CollectionView/ObservableGroupedSource.cs, src/Compatibility/Core/src/iOS/CollectionView/ObservableItemsSource.cs, src/Compatibility/Core/src/iOS/CollectionView/ScrollToPositionExtensions.cs, src/Compatibility/Core/src/iOS/CollectionView/SelectableItemsViewController.cs, src/Compatibility/Core/src/iOS/CollectionView/SelectableItemsViewDelegator.cs, src/Compatibility/Core/src/iOS/CollectionView/SelectableItemsViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/SnapHelpers.cs, src/Compatibility/Core/src/iOS/CollectionView/StructuredItemsViewController.cs, src/Compatibility/Core/src/iOS/CollectionView/StructuredItemsViewRenderer.cs, src/Compatibility/Core/src/iOS/CollectionView/TemplateHelpers.cs, src/Compatibility/Core/src/iOS/CollectionView/TemplatedCell.cs, src/Compatibility/Core/src/iOS/CollectionView/VerticalCell.cs, src/Compatibility/Core/src/iOS/CollectionView/VerticalDefaultCell.cs, src/Compatibility/Core/src/iOS/CollectionView/VerticalDefaultSupplementalView.cs, src/Compatibility/Core/src/iOS/CollectionView/VerticalSupplementaryView.cs, src/Compatibility/Core/src/iOS/CollectionView/WidthConstrainedTemplatedCell.cs, src/Compatibility/Core/src/iOS/ContextActionCell.cs, src/Compatibility/Core/src/iOS/ContextScrollViewDelegate.cs, src/Compatibility/Core/src/iOS/DisposeHelpers.cs, src/Compatibility/Core/src/iOS/DragAndDropDelegate.cs, src/Compatibility/Core/src/iOS/EffectUtilities.cs, src/Compatibility/Core/src/iOS/EventTracker.cs, src/Compatibility/Core/src/iOS/Extensions/CompatibilityColorExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/CookieExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/DateExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/DoubleCollectionExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/FlowDirectionExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/GeometryExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/LabelExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/LayoutExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/NSObjectExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/PointCollectionExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/TransformExtensions.cs, src/Compatibility/Core/src/iOS/Extensions/VisualElementExtensions.cs, src/Compatibility/Core/src/iOS/Flags.cs, src/Compatibility/Core/src/iOS/Forms.cs, src/Compatibility/Core/src/iOS/FormsApplicationDelegate.cs, src/Compatibility/Core/src/iOS/HandlerToRendererShim.cs, src/Compatibility/Core/src/iOS/IVisualElementRenderer.cs, src/Compatibility/Core/src/iOS/IVisualNativeElementRenderer.cs, src/Compatibility/Core/src/iOS/NativeBindingService.cs, src/Compatibility/Core/src/iOS/NativeValueConverterService.cs, src/Compatibility/Core/src/iOS/NativeViewWrapper.cs, src/Compatibility/Core/src/iOS/NativeViewWrapperRenderer.cs, src/Compatibility/Core/src/iOS/PageExtensions.cs, src/Compatibility/Core/src/iOS/Platform.cs, src/Compatibility/Core/src/iOS/PlatformRenderer.cs, src/Compatibility/Core/src/iOS/Properties/AssemblyInfo.cs, src/Compatibility/Core/src/iOS/RendererPool.cs, src/Compatibility/Core/src/iOS/Renderers/ActivityIndicatorRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/AlignmentExtensions.cs, src/Compatibility/Core/src/iOS/Renderers/BorderElementManager.cs, src/Compatibility/Core/src/iOS/Renderers/BoxRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ButtonElementManager.cs, src/Compatibility/Core/src/iOS/Renderers/ButtonLayoutManager.cs, src/Compatibility/Core/src/iOS/Renderers/ButtonRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/CheckBoxRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/CheckBoxRendererBase.cs, src/Compatibility/Core/src/iOS/Renderers/DatePickerRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/EditorRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ElementSelectedEventArgs.cs, src/Compatibility/Core/src/iOS/Renderers/EntryRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/FormsCAKeyFrameAnimation.cs, src/Compatibility/Core/src/iOS/Renderers/FormsCheckBox.cs, src/Compatibility/Core/src/iOS/Renderers/FormsUIImageView.cs, src/Compatibility/Core/src/iOS/Renderers/FrameRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/IButtonLayoutRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/IImageVisualElementRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ImageAnimationHelper.cs, src/Compatibility/Core/src/iOS/Renderers/ImageButtonRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ImageElementManager.cs, src/Compatibility/Core/src/iOS/Renderers/ImageRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/IndicatorViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/KeyboardInsetTracker.cs, src/Compatibility/Core/src/iOS/Renderers/LabelRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ListViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/NavigationRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/PageContainer.cs, src/Compatibility/Core/src/iOS/Renderers/PageRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/PhoneFlyoutPageRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/PickerRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ProgressBarRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/RefreshViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/ScrollViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/SearchBarRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/SliderRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/StepperRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/SwipeViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/SwitchRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/TabbedRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/TableViewModelRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/TableViewRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/TabletFlyoutPageRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/TimePickerRenderer.cs, src/Compatibility/Core/src/iOS/Renderers/UIContainerCell.cs, src/Compatibility/Core/src/iOS/Renderers/UIContainerView.cs, src/Compatibility/Core/src/iOS/Renderers/WkWebViewRenderer.cs, src/Compatibility/Core/src/iOS/ShadowEffect.cs, src/Compatibility/Core/src/iOS/Shapes/EllipseRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/LineRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/PathRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/PolygonRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/PolylineRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/RectangleRenderer.cs, src/Compatibility/Core/src/iOS/Shapes/ShapeRenderer.cs, src/Compatibility/Core/src/iOS/ViewInitializedEventArgs.cs, src/Compatibility/Core/src/iOS/ViewRenderer.cs, src/Compatibility/Core/src/iOS/VisualElementPackager.cs, src/Compatibility/Core/src/iOS/VisualElementRenderer.cs, src/Compatibility/Core/src/iOS/VisualElementTracker.cs, src/Compatibility/Core/src/iOS/Xamarin.Forms.Platform.iOS.nuspec, src/Compatibility/Core/src/iOS/_IsIncrementalBuild, src/Compatibility/Core/src/iOS/iOSAppIndexingProvider.cs, src/Compatibility/Core/src/iOS/iOSAppLinks.cs, src/Compatibility/Maps/src/Android/Compatibility.Maps.Android.csproj, src/Compatibility/Maps/src/Android/FormsMaps.cs, src/Compatibility/Maps/src/Android/MapRenderer.cs, src/Compatibility/Maps/src/Android/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/GTK/Compatibility.Maps.GTK.csproj, src/Compatibility/Maps/src/GTK/FormsMaps.cs, src/Compatibility/Maps/src/GTK/GeocoderBackend.cs, src/Compatibility/Maps/src/GTK/Location.cs, src/Compatibility/Maps/src/GTK/MapRenderer.cs, src/Compatibility/Maps/src/GTK/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/GTK/app.config, src/Compatibility/Maps/src/MacOS/Compatibility.Maps.macOS.csproj, src/Compatibility/Maps/src/MacOS/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/Tizen/Compatibility.Maps.Tizen.csproj, src/Compatibility/Maps/src/Tizen/FormsMaps.cs, src/Compatibility/Maps/src/Tizen/GeocoderBackend.cs, src/Compatibility/Maps/src/Tizen/MapRenderer.cs, src/Compatibility/Maps/src/Tizen/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/WPF/Compatibility.Maps.WPF.csproj, src/Compatibility/Maps/src/WPF/FormsMaps.cs, src/Compatibility/Maps/src/WPF/FormsPushPin.cs, src/Compatibility/Maps/src/WPF/GeocoderBackend.cs, src/Compatibility/Maps/src/WPF/MapRenderer.cs, src/Compatibility/Maps/src/WPF/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/WPF/Properties/Resources.Designer.cs, src/Compatibility/Maps/src/WPF/Properties/Resources.resx, src/Compatibility/Maps/src/WPF/Properties/Settings.settings, src/Compatibility/Maps/src/Windows/Compatibility.Maps.Windows.csproj, src/Compatibility/Maps/src/Windows/Directory.Build.Props, src/Compatibility/Maps/src/Windows/Directory.Build.targets, src/Compatibility/Maps/src/Windows/FormsMaps.cs, src/Compatibility/Maps/src/Windows/GeocoderBackend.cs, src/Compatibility/Maps/src/Windows/MapRenderer.cs, src/Compatibility/Maps/src/Windows/Properties/AssemblyInfo.cs, src/Compatibility/Maps/src/Windows/Properties/Xamarin.Forms.Maps.UWP.rd.xml, src/Compatibility/Maps/src/Windows/PushPin.cs, src/Compatibility/Maps/src/iOS/Compatibility.Maps.iOS.csproj, src/Compatibility/Maps/src/iOS/FormsMaps.cs, src/Compatibility/Maps/src/iOS/MapPool.cs, src/Compatibility/Maps/src/iOS/MapRenderer.cs, src/Compatibility/Maps/src/iOS/Properties/AssemblyInfo.cs, src/Compatibility/Material/src/Android/Compatibility.Material.Android.csproj, src/Compatibility/Material/src/Android/FormsMaterial.cs, src/Compatibility/Material/src/Android/MaterialActivityIndicatorRenderer.cs, src/Compatibility/Material/src/Android/MaterialButtonRenderer.cs, src/Compatibility/Material/src/Android/MaterialCheckBoxRenderer.cs, src/Compatibility/Material/src/Android/MaterialColors.cs, src/Compatibility/Material/src/Android/MaterialContextThemeWrapper.cs, src/Compatibility/Material/src/Android/MaterialDatePickerRenderer.cs, src/Compatibility/Material/src/Android/MaterialEditorRenderer.cs, src/Compatibility/Material/src/Android/MaterialEntryRenderer.cs, src/Compatibility/Material/src/Android/MaterialFormsEditText.cs, src/Compatibility/Material/src/Android/MaterialFormsEditTextBase.cs, src/Compatibility/Material/src/Android/MaterialFormsEditTextManager.cs, src/Compatibility/Material/src/Android/MaterialFormsTextInputLayout.cs, src/Compatibility/Material/src/Android/MaterialFormsTextInputLayoutBase.cs, src/Compatibility/Material/src/Android/MaterialFrameRenderer.cs, src/Compatibility/Material/src/Android/MaterialPickerEditText.cs, src/Compatibility/Material/src/Android/MaterialPickerRenderer.cs, src/Compatibility/Material/src/Android/MaterialPickerTextInputLayout.cs, src/Compatibility/Material/src/Android/MaterialProgressBarRenderer.cs, src/Compatibility/Material/src/Android/MaterialSliderRenderer.cs, src/Compatibility/Material/src/Android/MaterialStepperRenderer.cs, src/Compatibility/Material/src/Android/MaterialTimePickerRenderer.cs, src/Compatibility/Material/src/Android/Properties/AssemblyInfo.cs, src/Compatibility/Material/src/Android/Resources/Layout/MaterialPickerTextInput.axml, src/Compatibility/Material/src/Android/Resources/Layout/TextInputLayoutFilledBox.axml, src/Compatibility/Material/src/Android/Resources/color-v23/white_disabled_material.xml, src/Compatibility/Material/src/Android/Resources/color/white_disabled_material.xml, src/Compatibility/Material/src/Android/Resources/drawable-v24/MaterialActivityIndicatorBackground.xml, src/Compatibility/Material/src/Android/Resources/drawable/MaterialActivityIndicatorBackground.xml, src/Compatibility/Material/src/Android/Resources/drawable/MaterialProgressBar.xml, src/Compatibility/Material/src/Android/Resources/values-v21/styles.xml, src/Compatibility/Material/src/Android/Resources/values/styles.xml, src/Compatibility/Material/src/Tizen/Compatibility.Material.Tizen.csproj, src/Compatibility/Material/src/Tizen/FormsMaterial.cs, src/Compatibility/Material/src/Tizen/MaterialActivityIndicatorRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialButtonRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialCheckBoxRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialDatePickerRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialEditorRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialEntryRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialFrameRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialPickerRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialProgressBarRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialSliderRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialStepperRenderer.cs, src/Compatibility/Material/src/Tizen/MaterialTimePickerRenderer.cs, src/Compatibility/Material/src/Tizen/Native/MCanvas.cs, src/Compatibility/Material/src/Tizen/Native/MEditor.cs, src/Compatibility/Material/src/Tizen/Native/MPicker.cs, src/Compatibility/Material/src/iOS/Compatibility.Material.iOS.csproj, src/Compatibility/Material/src/iOS/FormsMaterial.cs, src/Compatibility/Material/src/iOS/IMaterialEntryRenderer.cs, src/Compatibility/Material/src/iOS/IMaterialTextField.cs, src/Compatibility/Material/src/iOS/MaterialActivityIndicatorRenderer.cs, src/Compatibility/Material/src/iOS/MaterialButtonRenderer.cs, src/Compatibility/Material/src/iOS/MaterialCheckboxRenderer.cs, src/Compatibility/Material/src/iOS/MaterialDatePickerRenderer.cs, src/Compatibility/Material/src/iOS/MaterialEditorRenderer.cs, src/Compatibility/Material/src/iOS/MaterialEntryRenderer.cs, src/Compatibility/Material/src/iOS/MaterialFormsCheckBox.cs, src/Compatibility/Material/src/iOS/MaterialFrameRenderer.cs, src/Compatibility/Material/src/iOS/MaterialMultiLineTextField.cs, src/Compatibility/Material/src/iOS/MaterialPickerRenderer.cs, src/Compatibility/Material/src/iOS/MaterialProgressBarRenderer.cs, src/Compatibility/Material/src/iOS/MaterialSliderRenderer.cs, src/Compatibility/Material/src/iOS/MaterialStepperRenderer.cs, src/Compatibility/Material/src/iOS/MaterialTextField.cs, src/Compatibility/Material/src/iOS/MaterialTextManager.cs, src/Compatibility/Material/src/iOS/MaterialTimePickerRenderer.cs, src/Compatibility/Material/src/iOS/NoCaretMaterialTextField.cs, src/Compatibility/Material/src/iOS/Properties/AssemblyInfo.cs, src/Compatibility/Material/src/iOS/ReadOnlyMaterialTextField.cs, src/Controls/samples/Controls.Sample.Sandbox/Maui.Controls.Sample.Sandbox.csproj, src/Controls/samples/Controls.Sample/Maui.Controls.Sample.csproj, src/Controls/samples/Controls.Sample/MauiProgram.cs, src/Controls/samples/Controls.Sample/Pages/Controls/ImageButtonPage.xaml.cs, src/Controls/samples/Controls.Sample/Pages/Controls/ImagePage.xaml.cs, src/Controls/samples/Controls.Sample/ViewModels/MainViewModel.cs, src/Controls/src/Core/Properties/AssemblyInfo.cs, src/Controls/src/Xaml/Properties/AssemblyInfo.cs, src/Core/src/Properties/AssemblyInfo.cs, src/Essentials/src/AssemblyInfo/AssemblyInfo.shared.cs, src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json
[2026-06-20 12:56:20] BaseBranch: net11.0
[2026-06-20 12:56:20] MergeBase: bcb20a611d87b175643643b604ab6a3d57f519f3
[2026-06-20 12:56:20]
[2026-06-20 12:56:20] Verifying fix files exist...
[2026-06-20 12:56:20] ✓ Directory.Build.props exists
[2026-06-20 12:56:20] ERROR: Fix file not found: Microsoft.Maui.LegacyControlGallery.sln
📱 UI Tests — Essentials
Detected UI test categories: Essentials
⏭️ Deep UI tests — 0 passed, 0 failed across 1 category on platform-pool agent (replaces in-process counts above). 1 category reported 0 tests.
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
Essentials |
0 tests | — |
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs) |
🛫 Pre-Flight — Context & Validation
Issue: N/A - No linked issue found in public PR metadata
PR: #35870 - Remove MAUI compatibility package
Platforms Affected: android, ios, maccatalyst/macos, windows, tizen, setup/packaging
Files Changed: 189 implementation/build/docs/sample files, 11 test/agent-script files
Key Findings
- PR removes the opt-in
Microsoft.Maui.Controls.Compatibilitypackage and its source/test tree while intentionally leaving compatibility-named code that still lives inMicrosoft.Maui.Controls.Core. - Gate failed before producing a verification report. The detector auto-detected 19
UnitTestentries from deletedsrc/Compatibility/Core/tests/Compatibility.UnitTests/*files after the PR removed theCompatibility.Core.UnitTestsproject mapping. - The same deletion-heavy PR also exposes a full-verification issue: deleted source files are treated as current fix files that must exist on the PR branch.
Code Review Summary
Verdict: NEEDS_CHANGES
Confidence: low
Errors: 2 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ❌ Deleted tests are still auto-detected as runnable tests because detection uses name-only paths and generic
UnitTests/matching without deleted-file status filtering. - ❌ Full verification cannot handle deletion-heavy fix files because intentionally deleted files are checked with
Test-Pathas if they must exist on the PR branch.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #35870 | Remove Compatibility package/project tree, package entries, sample/test references, and test-project mappings | ❌ FAILED (Gate) | 200+ files | Original PR; gate failure is in deletion-aware detection/verification rather than product runtime code |
🔬 Code Review — Deep Analysis
Code Review — PR #35870
Independent Assessment
What this changes: Removes the separate Microsoft.Maui.Controls.Compatibility package/project tree, package-solution entries, workload-manifest pack entry, sample/test references, and related unit-test runner mappings. It intentionally leaves compatibility-named APIs already living in Microsoft.Maui.Controls.Core.
Inferred motivation: Stop building/shipping the opt-in Xamarin.Forms migration compatibility package while preserving current Controls.Core compatibility types used by MAUI itself.
Reconciliation with PR Narrative
Author claims: Matches the diff: package/project removal, manifest/solution cleanup, samples/tests no longer referencing the package, and compatibility-named Controls.Core code retained.
Agreement/disagreement: The package-removal approach looks directionally sound. The main gap is that the PR updated test maps by deleting the Compatibility project entry, but did not update the detection/verification workflow to handle deleted test/fix files. That explains the gate failure.
Prior Review Reconciliation
GitHub CLI is unauthenticated and no prior review data was provided, so prior review surfaces could not be checked. No prior ❌ findings known from supplied facts.
Blast Radius Assessment
- Runs for all instances: No runtime handler change identified; main product impact is package/build/workload surface.
- Startup impact: No direct app startup code path changed, but package restore/build manifests are global.
- Static/shared state: No new static state.
- Packaging/API blast radius: High — removes a shipped package and many deleted source/test projects.
CI Status
- Required-check result: fail — supplied gate result failed.
- Classification: PR-caused gate/test-detection failure, not meaningful product test failure.
- Action taken: Did not rerun gate per instruction.
Findings
❌ Error — Deleted tests are still auto-detected as runnable tests
Detect-TestsInDiff.ps1 and verify-tests-fail.ps1 use name-only changed-file lists and do not filter deleted files/statuses. Removing the explicit Compatibility map is insufficient because the generic (?<!\w)UnitTests/ rule still matches deleted paths like src/Compatibility/Core/tests/Compatibility.UnitTests/*.cs.
Evidence:
.github/scripts/shared/Detect-TestsInDiff.ps1:164,:220,:303.github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1:821- Gate log detected 19 bogus
UnitTestentries, all from deletedsrc/Compatibility/Core/tests/Compatibility.UnitTests/*, with no project path.
This should be fixed by making test detection status-aware and ignoring removed files both for local git diffs and PR-file API results.
❌ Error — Full verification cannot handle deletion-heavy fix files
The verification script treats every non-test changed file as an existing fix file, then fails if the file does not exist on the PR branch.
For this PR, most "fix files" are intentionally deleted. Full verification should classify deleted files as revertable-from-base and restore the PR state by deleting them again, not fail before producing a verification report.
Failure-Mode Probing
- Deleted test files: Currently detected as tests via generic
UnitTests/matching; expected behavior is to ignore deleted tests. - Deleted source/package files: Currently fail existence checks during verification; expected behavior is deletion-aware revert/restore.
- No added tests in package-removal PR: This should produce "no tests detected / verification not applicable," not 19 runnable tests from deleted files.
- Compatibility-named Controls.Core APIs: Remaining references appear intentional and are not evidence that the removed package still ships.
Verdict: NEEDS_CHANGES
Confidence: low
Summary: The product/package removal approach appears consistent with the stated intent, but the PR's gate-related script changes are incomplete. The failing gate is meaningful as a workflow correctness issue: deleted Compatibility tests and deleted fix files are mishandled, so the PR should update detection/verification to be deletion-aware before merge.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix-1 | Make test detection status-aware so deleted Compatibility unit tests are ignored rather than mapped to a removed project. | ❌ Partial | 2 scripts | Detector regression passed, but verification still ended with No tests detected in this PR. |
| 2 | try-fix-2 | Teach verify-tests-fail.ps1 A/M/D fix-file state transitions so deleted fix files can be restored from base and deleted again. |
❌ Partial | 1 script | Parser and deletion classification passed; verification still ended with No tests detected in this PR. |
| 3 | try-fix-3 | Add a surviving Controls.Core.UnitTests manifest invariant test and combine deletion-aware detector/verifier fixes. |
✅ Targeted pass | 2 scripts, 1 test | New test is detected, passes on PR state, and would fail against origin/net11.0 manifest. Full gate was not rerun per instruction. |
| PR | PR #35870 | Remove Compatibility package/project tree, package entries, sample/test refs, and test-project mappings. | ❌ FAILED (Gate) | 200+ files | Original PR; gate failed before a verification report. |
Cross-Pollination
| Model/Reviewer | Round | New Ideas? | Details |
|---|---|---|---|
| maui-expert-reviewer | 1 | Yes | Status-aware deleted-test filtering. |
| maui-expert-reviewer | 2 | Yes | Deletion-aware full-verification fix-file state model. |
| maui-expert-reviewer | 3 | Yes | Add a persistent package-removal invariant test so verification has a surviving test target. |
| maui-expert-reviewer | 4 | No | Remaining variations would be combinations of candidate 3 or policy-only no-test exemptions, which are weaker than a real surviving regression test. |
Exhausted: Yes
Selected Fix: Candidate #3 — it is the only candidate with a runnable surviving test that passes with the PR state and is demonstrably sensitive to the removed package entry in the base manifest. It is better than the PR's current fix because it addresses both root causes surfaced by the gate failure: deleted-file-aware tooling and lack of a surviving regression test.
Narrative
try-fix-1proved the first gate failure mode: deleted Compatibility unit-test files should not be auto-detected as runnable tests after their project is removed.try-fix-2proved the second gate failure mode: deletion-heavy PRs require fix-file state transitions that can restore deleted files for the without-fix phase and delete them again for the with-fix phase.try-fix-3incorporated both lessons and addedCompatibilityPackageRemovalTests.WorkloadManifestDoesNotContainCompatibilityPackage, a unit test in an active project. Targeted validation showed the test is discoverable, passes with the PR manifest, and would fail against the base manifest becauseorigin/net11.0still containsMicrosoft.Maui.Controls.Compatibility.
🏁 Report — Final Recommendation
Comparative Analysis — PR #35870
Ranking
| Rank | Candidate | Test result | Assessment |
|---|---|---|---|
| 1 | try-fix-3 |
✅ Targeted pass | Best candidate. It keeps the PR's package-removal intent, fixes deletion-aware test detection/verification, and adds a surviving Controls.Core.UnitTests invariant test proving the workload manifest no longer contains Microsoft.Maui.Controls.Compatibility. |
| 2 | pr-plus-reviewer |
❌ Failed gate | The expert reviewer found no product-runtime inline findings to apply, so this is effectively the same as pr; it does not address the gate failure. |
| 3 | pr |
❌ Failed gate | Product/package removal is directionally sound, but the gate failed because deletion-heavy PRs confused test detection/verification and no surviving regression test was available. |
| 4 | try-fix-2 |
❌ Partial | Correctly models deleted fix files in full verification, but still ends with No tests detected in this PR; it solves only one of the gate blockers. |
| 5 | try-fix-1 |
❌ Partial | Correctly filters deleted tests from detection, but still ends with No tests detected in this PR and does not solve deletion-heavy fix-file restoration. |
Winning candidate: try-fix-3
try-fix-3 is the only candidate with passing targeted validation and a runnable surviving test. It is ranked above pr and pr-plus-reviewer because candidates that failed regression tests must rank below candidates that passed them, and the reviewer did not identify any product-code change that would turn the PR fix into a passing candidate.
The winning approach combines the necessary tooling fixes from try-fix-1 and try-fix-2 with a concrete regression invariant:
- status-aware detection ignores deleted Compatibility tests instead of mapping them as runnable tests after their project is removed;
- full verification models
A/M/Dfix-file states so deleted files can be restored from base for the without-fix phase and deleted again for the with-fix phase; CompatibilityPackageRemovalTests.WorkloadManifestDoesNotContainCompatibilityPackageremains in an active test project and fails against the base manifest where the Compatibility package still exists.
Recommendation
Use try-fix-3 as the final candidate. It preserves the PR's intended product change and adds the minimum gate/tooling support needed for this deletion-heavy package-removal PR to be verifiable.
PureWeen
left a comment
There was a problem hiding this comment.
Multi-model code review — adversarial consensus
Methodology: 3 independent reviewers (different model families) reviewed this PR in parallel; findings were cross-validated with adversarial consensus, and single-reviewer/unverifiable claims were discarded after direct verification against the source. Code only — CI/build status is intentionally out of scope.
Verdict: clean. This is a large but mechanical removal (~170k deletions across 1166 files) of the opt-in Microsoft.Maui.Controls.Compatibility package. All three reviewers independently confirmed the removal is structurally sound with no blocking issues.
Verified safe (3/3 reviewers)
- Workload manifest,
Microsoft.Maui.sln, both.slnffilters, every.csproj(ProjectReference/PackageReference), and.props/.targets: zero dangling references to the Compatibility package orCompatibility.csproj. COMPATIBILITY_ENABLEDandIncludeCompatibilityProjectshave zero remaining usages repo-wide — nothing silently compiles out.Controls.Corehas noProjectReferenceto the deletedCompatibility.csproj; the retainedMicrosoft.Maui.Controls.Compatibility-namespaced code inside Controls.Core (~35 files) is self-contained, so the "leaves compat-named code intact" claim holds.- The Cake non-Windows skip behavior for
Controls.Core.Design.UnitTestsis byte-for-byte preserved; only the deletedCompatibility.Core.UnitTestsbranch was dropped. - All four retargeted runtime image URLs (
giftwo.gif,coffee.png,legumes.jpg,vegetables.jpg) exist on bothnet11.0andmainwith exact lowercase casing, so the newraw/raw.githubusercontentURLs resolve correctly.
Minor / optional (non-blocking)
- 💡
.github/scripts/RunTests.ps1(~line 26) — Documentation. TheCompatibilitymapping was removed, but the.PARAMETERhelp block still listsCompatibilityamong the valid unit-test targets. Passing it would now be a silent no-op. Consider droppingCompatibility,from the comment for consistency. (This is the only finding against a file this PR actually modified; it sits outside the changed diff hunk, so it couldn't be placed inline.) - 💡 Consistency sweep (files this PR did not touch) —
src/Graphics/src/Graphics/Properties/AssemblyInfo.cs(and a few other retainedAssemblyInfo.cs) still carry[InternalsVisibleTo("Microsoft.Maui.Controls.Compatibility*")], andsrc/Essentials/samples/Samples/Startup.csstill hasusing Microsoft.Maui.Controls.Compatibility;. These are harmless no-ops (theusingstill resolves via the retained Controls.Core namespace;InternalsVisibleToto a non-existent assembly does nothing), but since this PR's intent is to scrub the package, a follow-up sweep would leave the tree fully consistent. Optional — not introduced by this PR.
Discarded (false positive, verified)
- One reviewer claimed the
#if COMPATIBILITYblocks insrc/Core/src/VisualDiagnostics/BootstrapHelper.csbecame dead code as a result of this PR. Verified false: that guard uses the symbolCOMPATIBILITY, not theCOMPATIBILITY_ENABLEDthis PR removed, and the file is not touched here. No action.
Test coverage & prior reviews
- No new product code paths are introduced; the changed test-host/sample files are URL and label edits that appropriately do not require new tests.
- Prior AI reviews on this PR reached the same "clean / discussion-only" conclusion; none flagged the
RunTests.ps1help-text nit above, so it is not a duplicate.
3 independent reviewers · adversarial consensus · event: COMMENT (no approval, no blocking).
|
FYI @theCodingTraveler: I checked this against CommunityToolkit/Maui and nothing on the Toolkit side appears to depend on The Toolkit package projects reference So this should not break CommunityToolkit.Maui directly. Worth double-checking on your side, especially for any consuming apps or samples that might explicitly reference the compatibility package themselves. |
|
/azp run maui-pr-uitests, maui-pr-devicetests |
|
Azure Pipelines successfully started running 2 pipeline(s). |

Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
@PureWeen tagging you for visibility on this compatibility package removal.
Description
This stops building and shipping the opt-in
Microsoft.Maui.Controls.Compatibilitypackage used for Xamarin.Forms migration compatibility.Changes include:
src/Compatibilityand the legacy Compatibility gallery solutionThis intentionally leaves the compatibility-named code compiled into
Microsoft.Maui.Controls.Coreintact because current controls still use those handlers/layout bases without referencing the optional package.Breaking change
Projects that explicitly reference
Microsoft.Maui.Controls.Compatibilityor rely on Xamarin.Forms compatibility renderers from that opt-in package will need to migrate off that package before moving to .NET 11. Normal MAUI apps that only referenceMicrosoft.Maui.Controlsdo not implicitly reference this package.Validation
dotnet restore src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj --nologo -v:minimaldotnet test src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj --no-restore --nologo -v:minimal --filter FullyQualifiedName~LayoutCompatTestsdotnet restore eng/Microsoft.Maui.Packages-mac.slnf --nologo -v:minimaldotnet build eng/Microsoft.Maui.Packages-mac.slnf --no-restore --nologo -v:minimalwas attempted onnet11.0, but this local machine is missing Android API 37.0 and fails with XA5207 before completing the package build.