[Dynamic Instrumentation] DEBUG-4758 Fix type mismatch with @duration expression#7844
[Dynamic Instrumentation] DEBUG-4758 Fix type mismatch with @duration expression#7844dudikeleti merged 3 commits intomasterfrom
Conversation
… different (e.g., value type -> object)
This comment has been minimized.
This comment has been minimized.
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (7844) and master.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 68.30 ± (68.39 - 68.61) ms | 74.25 ± (74.24 - 74.57) ms | +8.7% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 72.18 ± (72.13 - 72.34) ms | 79.23 ± (79.18 - 79.54) ms | +9.8% | ❌⬆️ |
Full Metrics Comparison
FakeDbCommand
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 68.30 ± (68.39 - 68.61) ms | 74.25 ± (74.24 - 74.57) ms | +8.7% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 72.18 ± (72.13 - 72.34) ms | 79.23 ± (79.18 - 79.54) ms | +9.8% | ❌⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1003.41 ± (1004.79 - 1010.88) ms | 1056.93 ± (1058.58 - 1067.09) ms | +5.3% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 22.14 ± (22.10 - 22.19) ms | 23.12 ± (23.07 - 23.17) ms | +4.4% | ✅⬆️ |
| process.time_to_main_ms | 78.91 ± (78.75 - 79.08) ms | 87.61 ± (87.38 - 87.84) ms | +11.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.95 ± (10.94 - 10.95) MB | 10.91 ± (10.91 - 10.92) MB | -0.3% | ✅ |
| runtime.dotnet.threads.count | 12 ± (12 - 12) | 12 ± (12 - 12) | +0.0% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 21.94 ± (21.91 - 21.96) ms | 22.93 ± (22.90 - 22.97) ms | +4.5% | ✅⬆️ |
| process.time_to_main_ms | 79.81 ± (79.73 - 79.89) ms | 88.58 ± (88.34 - 88.82) ms | +11.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.96 ± (10.95 - 10.96) MB | 10.94 ± (10.94 - 10.95) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 13 ± (13 - 13) | 13 ± (13 - 13) | +0.0% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 245.11 ± (241.07 - 249.15) ms | 256.24 ± (251.66 - 260.83) ms | +4.5% | ✅⬆️ |
| process.time_to_main_ms | 470.63 ± (470.14 - 471.12) ms | 501.33 ± (500.57 - 502.09) ms | +6.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 48.14 ± (48.11 - 48.16) MB | 48.15 ± (48.13 - 48.18) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | -0.3% | ✅ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 20.67 ± (20.64 - 20.70) ms | 21.61 ± (21.56 - 21.65) ms | +4.5% | ✅⬆️ |
| process.time_to_main_ms | 68.08 ± (67.97 - 68.19) ms | 75.26 ± (75.10 - 75.43) ms | +10.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.60 ± (10.59 - 10.60) MB | 10.65 ± (10.65 - 10.65) MB | +0.5% | ✅⬆️ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 20.49 ± (20.46 - 20.51) ms | 21.55 ± (21.51 - 21.59) ms | +5.2% | ✅⬆️ |
| process.time_to_main_ms | 68.79 ± (68.73 - 68.86) ms | 76.05 ± (75.88 - 76.23) ms | +10.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.65 ± (10.65 - 10.66) MB | 10.74 ± (10.74 - 10.75) MB | +0.9% | ✅⬆️ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 244.96 ± (242.99 - 246.93) ms | 256.96 ± (254.18 - 259.73) ms | +4.9% | ✅⬆️ |
| process.time_to_main_ms | 440.78 ± (440.27 - 441.30) ms | 467.25 ± (466.60 - 467.90) ms | +6.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 48.65 ± (48.62 - 48.68) MB | 48.51 ± (48.49 - 48.53) MB | -0.3% | ✅ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | -0.0% | ✅ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 18.74 ± (18.71 - 18.77) ms | 19.79 ± (19.75 - 19.83) ms | +5.6% | ✅⬆️ |
| process.time_to_main_ms | 66.85 ± (66.74 - 66.97) ms | 74.80 ± (74.65 - 74.95) ms | +11.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.69 ± (7.68 - 7.70) MB | 7.70 ± (7.69 - 7.70) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 18.78 ± (18.76 - 18.80) ms | 19.90 ± (19.85 - 19.95) ms | +6.0% | ✅⬆️ |
| process.time_to_main_ms | 68.03 ± (67.97 - 68.08) ms | 76.31 ± (76.14 - 76.49) ms | +12.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.72 ± (7.71 - 7.73) MB | 7.73 ± (7.72 - 7.74) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 178.16 ± (177.12 - 179.21) ms | 192.77 ± (191.97 - 193.57) ms | +8.2% | ✅⬆️ |
| process.time_to_main_ms | 425.03 ± (424.32 - 425.75) ms | 457.22 ± (456.48 - 457.95) ms | +7.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 36.34 ± (36.32 - 36.37) MB | 36.57 ± (36.53 - 36.61) MB | +0.6% | ✅⬆️ |
| runtime.dotnet.threads.count | 27 ± (27 - 27) | 27 ± (27 - 27) | -0.4% | ✅ |
HttpMessageHandler
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 191.61 ± (191.40 - 192.28) ms | 192.06 ± (191.99 - 192.74) ms | +0.2% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 195.27 ± (194.91 - 195.41) ms | 195.24 ± (195.12 - 195.74) ms | -0.0% | ✅ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1098.77 ± (1100.94 - 1108.15) ms | 1103.08 ± (1104.63 - 1111.44) ms | +0.4% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 186.56 ± (186.25 - 186.86) ms | 186.28 ± (185.93 - 186.63) ms | -0.1% | ✅ |
| process.time_to_main_ms | 79.83 ± (79.64 - 80.02) ms | 80.26 ± (80.07 - 80.45) ms | +0.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.06 ± (16.03 - 16.09) MB | 16.19 ± (16.17 - 16.22) MB | +0.8% | ✅⬆️ |
| runtime.dotnet.threads.count | 20 ± (19 - 20) | 20 ± (20 - 20) | +0.6% | ✅⬆️ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 185.65 ± (185.38 - 185.92) ms | 186.35 ± (186.03 - 186.67) ms | +0.4% | ✅⬆️ |
| process.time_to_main_ms | 81.34 ± (81.20 - 81.48) ms | 81.53 ± (81.42 - 81.63) ms | +0.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.10 ± (16.03 - 16.16) MB | 16.22 ± (16.17 - 16.27) MB | +0.7% | ✅⬆️ |
| runtime.dotnet.threads.count | 21 ± (20 - 21) | 21 ± (20 - 21) | +0.2% | ✅⬆️ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 426.97 ± (424.26 - 429.68) ms | 419.77 ± (416.56 - 422.98) ms | -1.7% | ✅ |
| process.time_to_main_ms | 470.56 ± (470.13 - 470.99) ms | 472.21 ± (471.66 - 472.76) ms | +0.4% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 58.58 ± (58.46 - 58.69) MB | 58.77 ± (58.65 - 58.89) MB | +0.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 29 ± (29 - 30) | 29 ± (29 - 30) | -0.0% | ✅ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 190.52 ± (190.22 - 190.81) ms | 203.30 ± (202.91 - 203.70) ms | +6.7% | ✅⬆️ |
| process.time_to_main_ms | 69.39 ± (69.25 - 69.53) ms | 74.68 ± (74.38 - 74.98) ms | +7.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.87 ± (15.70 - 16.04) MB | 16.28 ± (16.25 - 16.31) MB | +2.6% | ✅⬆️ |
| runtime.dotnet.threads.count | 18 ± (18 - 18) | 19 ± (19 - 19) | +7.6% | ✅⬆️ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 189.85 ± (189.54 - 190.16) ms | 203.60 ± (203.30 - 203.89) ms | +7.2% | ✅⬆️ |
| process.time_to_main_ms | 70.38 ± (70.28 - 70.48) ms | 75.99 ± (75.84 - 76.15) ms | +8.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.93 ± (15.76 - 16.09) MB | 16.31 ± (16.29 - 16.34) MB | +2.4% | ✅⬆️ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 20 ± (20 - 20) | +7.0% | ✅⬆️ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 453.23 ± (451.27 - 455.19) ms | 470.59 ± (467.65 - 473.53) ms | +3.8% | ✅⬆️ |
| process.time_to_main_ms | 442.42 ± (441.95 - 442.89) ms | 469.53 ± (468.88 - 470.19) ms | +6.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 58.25 ± (58.12 - 58.37) MB | 57.92 ± (57.77 - 58.07) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | +0.2% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 189.48 ± (189.15 - 189.82) ms | 198.82 ± (198.27 - 199.37) ms | +4.9% | ✅⬆️ |
| process.time_to_main_ms | 69.12 ± (68.96 - 69.28) ms | 72.61 ± (72.37 - 72.86) ms | +5.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.80 ± (11.78 - 11.82) MB | 11.69 ± (11.67 - 11.70) MB | -1.0% | ✅ |
| runtime.dotnet.threads.count | 18 ± (18 - 18) | 18 ± (18 - 18) | +0.8% | ✅⬆️ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 187.56 ± (187.35 - 187.78) ms | 198.43 ± (198.00 - 198.86) ms | +5.8% | ✅⬆️ |
| process.time_to_main_ms | 69.75 ± (69.68 - 69.83) ms | 74.11 ± (73.88 - 74.35) ms | +6.3% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.82 ± (11.75 - 11.90) MB | 11.71 ± (11.70 - 11.73) MB | -0.9% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 19) | +1.4% | ✅⬆️ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 359.72 ± (357.98 - 361.45) ms | 370.09 ± (368.69 - 371.48) ms | +2.9% | ✅⬆️ |
| process.time_to_main_ms | 425.91 ± (425.28 - 426.54) ms | 436.88 ± (435.79 - 437.96) ms | +2.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 47.96 ± (47.93 - 47.99) MB | 48.01 ± (47.99 - 48.04) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 29 ± (29 - 29) | 29 ± (29 - 29) | -0.1% | ✅ |
Comparison explanation
Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
- Welch test with statistical test for significance of 5%
- Only results indicating a difference greater than 5% and 5 ms are considered.
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.
Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).
Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (74ms) : 72, 77
master - mean (69ms) : 67, 70
section Bailout
This PR (7844) - mean (79ms) : crit, 77, 82
master - mean (72ms) : 71, 73
section CallTarget+Inlining+NGEN
This PR (7844) - mean (1,063ms) : 1002, 1123
master - mean (1,008ms) : 964, 1051
FakeDbCommand (.NET Core 3.1)
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (118ms) : 113, 123
master - mean (106ms) : 104, 109
section Bailout
This PR (7844) - mean (119ms) : crit, 115, 122
master - mean (107ms) : 106, 108
section CallTarget+Inlining+NGEN
This PR (7844) - mean (794ms) : crit, 724, 864
master - mean (737ms) : 672, 803
FakeDbCommand (.NET 6)
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (104ms) : 100, 107
master - mean (93ms) : 92, 95
section Bailout
This PR (7844) - mean (104ms) : crit, 102, 106
master - mean (94ms) : 93, 95
section CallTarget+Inlining+NGEN
This PR (7844) - mean (758ms) : crit, 704, 812
master - mean (711ms) : 682, 741
FakeDbCommand (.NET 8)
gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (103ms) : 99, 106
master - mean (92ms) : 89, 94
section Bailout
This PR (7844) - mean (104ms) : crit, 102, 106
master - mean (93ms) : 92, 94
section CallTarget+Inlining+NGEN
This PR (7844) - mean (691ms) : crit, 666, 716
master - mean (631ms) : 617, 646
HttpMessageHandler (.NET Framework 4.8)
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (192ms) : 189, 196
master - mean (192ms) : 187, 197
section Bailout
This PR (7844) - mean (195ms) : 192, 198
master - mean (195ms) : 193, 198
section CallTarget+Inlining+NGEN
This PR (7844) - mean (1,108ms) : 1059, 1157
master - mean (1,105ms) : 1053, 1156
HttpMessageHandler (.NET Core 3.1)
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (275ms) : 270, 280
master - mean (274ms) : 270, 279
section Bailout
This PR (7844) - mean (276ms) : 271, 280
master - mean (275ms) : 271, 279
section CallTarget+Inlining+NGEN
This PR (7844) - mean (924ms) : 879, 969
master - mean (925ms) : 886, 964
HttpMessageHandler (.NET 6)
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (287ms) : 280, 294
master - mean (268ms) : 264, 273
section Bailout
This PR (7844) - mean (288ms) : crit, 284, 293
master - mean (268ms) : 264, 273
section CallTarget+Inlining+NGEN
This PR (7844) - mean (973ms) : 926, 1019
master - mean (923ms) : 894, 952
HttpMessageHandler (.NET 8)
gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7844) - mean (281ms) : 270, 293
master - mean (268ms) : 263, 273
section Bailout
This PR (7844) - mean (283ms) : crit, 274, 291
master - mean (267ms) : 264, 270
section CallTarget+Inlining+NGEN
This PR (7844) - mean (837ms) : 800, 875
master - mean (816ms) : 795, 836
BenchmarksBenchmark execution time: 2025-12-29 14:25:56 Comparing candidate commit 171fff9 in PR branch Found 10 performance improvements and 2 performance regressions! Performance is the same for 165 metrics, 9 unstable metrics. scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild net472
scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild net6.0
scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1
scenario:Benchmarks.Trace.HttpClientBenchmark.SendAsync netcoreapp3.1
scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark netcoreapp3.1
scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark netcoreapp3.1
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net472
scenario:Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin net6.0
|
Summary of changes
Fixes a bug in the debugger expression parser when compiling expressions with T == object that return value types (e.g. @duration as TimeSpan), causing a runtime error (“Expression of type 'System.TimeSpan' cannot be used for assignment to type 'System.Object'”).
Test coverage
ProbeExpressionParser_ObjectReturnType_AllowsValueTypeResults