Full Code of dotnet/BenchmarkDotNet for AI

master df0dfb7f0d12 cached
1333 files
4.6 MB
1.3M tokens
7885 symbols
1 requests
Download .txt
Showing preview only (5,140K chars total). Download the full file or copy to clipboard to get everything.
Repository: dotnet/BenchmarkDotNet
Branch: master
Commit: df0dfb7f0d12
Files: 1333
Total size: 4.6 MB

Directory structure:
gitextract_8mg2sr0i/

├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   └── workflows/
│       ├── generate-changelog.yaml
│       ├── generate-coverage-report.yaml
│       ├── generate-gh-pages.yaml
│       ├── publish-nightly.yaml
│       ├── release.yaml
│       ├── run-tests-selected.yaml
│       └── run-tests.yaml
├── .gitignore
├── BenchmarkDotNet.slnx
├── BenchmarkDotNet.slnx.DotSettings
├── LICENSE.md
├── NuGet.Config
├── README.md
├── build/
│   ├── BenchmarkDotNet.Build/
│   │   ├── BenchmarkDotNet.Build.csproj
│   │   ├── BuildContext.cs
│   │   ├── CommandLineParser.cs
│   │   ├── EnvVar.cs
│   │   ├── Example.cs
│   │   ├── Folder.DotSettings
│   │   ├── HelpInfo.cs
│   │   ├── Helpers/
│   │   │   ├── OctokitExtensions.cs
│   │   │   └── Utils.cs
│   │   ├── IHelpProvider.cs
│   │   ├── Meta/
│   │   │   ├── Repo.cs
│   │   │   └── VersionHistory.cs
│   │   ├── Options/
│   │   │   ├── BoolOption.cs
│   │   │   ├── IOption.cs
│   │   │   ├── KnownOptions.cs
│   │   │   ├── Option.cs
│   │   │   └── StringOption.cs
│   │   ├── Program.cs
│   │   └── Runners/
│   │       ├── BuildRunner.cs
│   │       ├── Changelog/
│   │       │   ├── ChangelogBuilder.cs
│   │       │   └── ChangelogDetailsBuilder.cs
│   │       ├── DocumentationRunner.cs
│   │       ├── GitRunner.cs
│   │       ├── ReleaseRunner.cs
│   │       └── UnitTestRunner.cs
│   ├── CodingStyle.ruleset
│   ├── build.bat
│   ├── build.ps1
│   ├── build.sh
│   ├── cSpell.json
│   ├── common.props
│   ├── common.targets
│   ├── sdk/
│   │   └── global.json
│   ├── strongNameKey.snk
│   └── versions.txt
├── build.cmd
├── docs/
│   ├── .gitignore
│   ├── _redirects/
│   │   └── _redirects
│   ├── api/
│   │   └── index.md
│   ├── articles/
│   │   ├── configs/
│   │   │   ├── analysers.md
│   │   │   ├── columns.md
│   │   │   ├── configoptions.md
│   │   │   ├── configs.md
│   │   │   ├── diagnosers.md
│   │   │   ├── exporters.md
│   │   │   ├── filters.md
│   │   │   ├── jobs.md
│   │   │   ├── loggers.md
│   │   │   ├── orderers.md
│   │   │   ├── powerplans.md
│   │   │   ├── toc.yml
│   │   │   ├── toolchains.md
│   │   │   └── validators.md
│   │   ├── contributing/
│   │   │   ├── building.md
│   │   │   ├── debugging.md
│   │   │   ├── disassembler.md
│   │   │   ├── documentation.md
│   │   │   ├── miscellaneous.md
│   │   │   ├── running-tests.md
│   │   │   └── toc.yml
│   │   ├── faq.md
│   │   ├── features/
│   │   │   ├── baselines.md
│   │   │   ├── disassembler.md
│   │   │   ├── etwprofiler.md
│   │   │   ├── event-pipe-profiler.md
│   │   │   ├── parameterization.md
│   │   │   ├── setup-and-cleanup.md
│   │   │   ├── statistics.md
│   │   │   ├── toc.yml
│   │   │   ├── vsprofiler.md
│   │   │   └── vstest.md
│   │   ├── guides/
│   │   │   ├── choosing-run-strategy.md
│   │   │   ├── console-args.md
│   │   │   ├── customizing-runtime.md
│   │   │   ├── dotnet-new-templates.md
│   │   │   ├── getting-started.md
│   │   │   ├── good-practices.md
│   │   │   ├── how-it-works.md
│   │   │   ├── how-to-run.md
│   │   │   ├── nuget.md
│   │   │   ├── toc.yml
│   │   │   └── troubleshooting.md
│   │   ├── license.md
│   │   ├── overview.md
│   │   ├── samples/
│   │   │   ├── IntroArguments.md
│   │   │   ├── IntroArgumentsPriority.md
│   │   │   ├── IntroArgumentsSource.md
│   │   │   ├── IntroArrayParam.md
│   │   │   ├── IntroBasic.md
│   │   │   ├── IntroBenchmarkBaseline.md
│   │   │   ├── IntroCategories.md
│   │   │   ├── IntroCategoryBaseline.md
│   │   │   ├── IntroCategoryDiscoverer.md
│   │   │   ├── IntroColdStart.md
│   │   │   ├── IntroComparableComplexParam.md
│   │   │   ├── IntroConfigSource.md
│   │   │   ├── IntroConfigUnion.md
│   │   │   ├── IntroCustomMono.md
│   │   │   ├── IntroCustomMonoArguments.md
│   │   │   ├── IntroDeferredExecution.md
│   │   │   ├── IntroDisassembly.md
│   │   │   ├── IntroDisassemblyAllJits.md
│   │   │   ├── IntroDisassemblyDry.md
│   │   │   ├── IntroDisassemblyRyuJit.md
│   │   │   ├── IntroDotMemoryDiagnoser.md
│   │   │   ├── IntroDotTraceDiagnoser.md
│   │   │   ├── IntroEnvVars.md
│   │   │   ├── IntroEventPipeProfiler.md
│   │   │   ├── IntroEventPipeProfilerAdvanced.md
│   │   │   ├── IntroExceptionDiagnoser.md
│   │   │   ├── IntroExport.md
│   │   │   ├── IntroExportJson.md
│   │   │   ├── IntroExportXml.md
│   │   │   ├── IntroFilters.md
│   │   │   ├── IntroFluentConfigBuilder.md
│   │   │   ├── IntroGcMode.md
│   │   │   ├── IntroGenericTypeArguments.md
│   │   │   ├── IntroHardwareCounters.md
│   │   │   ├── IntroInProcess.md
│   │   │   ├── IntroInProcessWrongEnv.md
│   │   │   ├── IntroInliningDiagnoser.md
│   │   │   ├── IntroJitStatsDiagnoser.md
│   │   │   ├── IntroJobBaseline.md
│   │   │   ├── IntroJoin.md
│   │   │   ├── IntroLargeAddressAware.md
│   │   │   ├── IntroMaui.md
│   │   │   ├── IntroMonitoring.md
│   │   │   ├── IntroMultimodal.md
│   │   │   ├── IntroNativeMemory.md
│   │   │   ├── IntroNuGet.md
│   │   │   ├── IntroOrderAttr.md
│   │   │   ├── IntroOrderManual.md
│   │   │   ├── IntroOutliers.md
│   │   │   ├── IntroParams.md
│   │   │   ├── IntroParamsAllValues.md
│   │   │   ├── IntroParamsPriority.md
│   │   │   ├── IntroParamsSource.md
│   │   │   ├── IntroPercentiles.md
│   │   │   ├── IntroPowerPlan.md
│   │   │   ├── IntroRankColumn.md
│   │   │   ├── IntroRatioSD.md
│   │   │   ├── IntroRatioStyle.md
│   │   │   ├── IntroSetupCleanupGlobal.md
│   │   │   ├── IntroSetupCleanupIteration.md
│   │   │   ├── IntroSetupCleanupTarget.md
│   │   │   ├── IntroStaThread.md
│   │   │   ├── IntroStatisticalTesting.md
│   │   │   ├── IntroStatisticsColumns.md
│   │   │   ├── IntroStopOnFirstError.md
│   │   │   ├── IntroSummaryStyle.md
│   │   │   ├── IntroTagColumn.md
│   │   │   ├── IntroTailcall.md
│   │   │   ├── IntroTemplate.txt
│   │   │   ├── IntroThreadingDiagnoser.md
│   │   │   ├── IntroUnicode.md
│   │   │   ├── IntroVisualStudioProfiler.md
│   │   │   ├── IntroWakeLock.md
│   │   │   ├── IntroWasm.md
│   │   │   └── toc.yml
│   │   ├── team.md
│   │   └── toc.yml
│   ├── docfx.json
│   ├── filter.yml
│   ├── guide/
│   │   └── README.md
│   ├── logo/
│   │   ├── logo-cmyk.eps
│   │   └── logo-rgb.eps
│   ├── template/
│   │   └── public/
│   │       ├── main.css
│   │       └── main.js
│   └── toc.yml
├── samples/
│   ├── BenchmarkDotNet.Maui.slnx
│   ├── BenchmarkDotNet.Samples/
│   │   ├── BenchmarkDotNet.Samples.csproj
│   │   ├── BenchmarkDotNet.Samples.csproj.DotSettings
│   │   ├── IntroArguments.cs
│   │   ├── IntroArgumentsPriority.cs
│   │   ├── IntroArgumentsSource.cs
│   │   ├── IntroArrayParam.cs
│   │   ├── IntroBasic.cs
│   │   ├── IntroBenchmarkBaseline.cs
│   │   ├── IntroCategories.cs
│   │   ├── IntroCategoryBaseline.cs
│   │   ├── IntroCategoryDiscoverer.cs
│   │   ├── IntroColdStart.cs
│   │   ├── IntroComparableComplexParam.cs
│   │   ├── IntroConfigSource.cs
│   │   ├── IntroConfigUnion.cs
│   │   ├── IntroCultureInfo.cs
│   │   ├── IntroCustomMono.cs
│   │   ├── IntroCustomMonoArguments.cs
│   │   ├── IntroDeferredExecution.cs
│   │   ├── IntroDisassembly.cs
│   │   ├── IntroDisassemblyAllJits.cs
│   │   ├── IntroDisassemblyDry.cs
│   │   ├── IntroDisassemblyRyuJit.cs
│   │   ├── IntroDotMemoryDiagnoser.cs
│   │   ├── IntroDotTraceDiagnoser.cs
│   │   ├── IntroEnvVars.cs
│   │   ├── IntroEventPipeProfiler.cs
│   │   ├── IntroEventPipeProfilerAdvanced.cs
│   │   ├── IntroExceptionDiagnoser.cs
│   │   ├── IntroExport.cs
│   │   ├── IntroExportJson.cs
│   │   ├── IntroExportXml.cs
│   │   ├── IntroFilters.cs
│   │   ├── IntroFluentConfigBuilder.cs
│   │   ├── IntroGcMode.cs
│   │   ├── IntroGenericTypeArguments.cs
│   │   ├── IntroHardwareCounters.cs
│   │   ├── IntroHidingColumns.cs
│   │   ├── IntroInProcess.cs
│   │   ├── IntroInProcessWrongEnv.cs
│   │   ├── IntroInliningDiagnoser.cs
│   │   ├── IntroJitStatsDiagnoser.cs
│   │   ├── IntroJobBaseline.cs
│   │   ├── IntroJoin.cs
│   │   ├── IntroLargeAddressAware.cs
│   │   ├── IntroMemoryRandomization.cs
│   │   ├── IntroMonitoring.cs
│   │   ├── IntroMultimodal.cs
│   │   ├── IntroNativeMemory.cs
│   │   ├── IntroNuGet.cs
│   │   ├── IntroOrderAttr.cs
│   │   ├── IntroOrderManual.cs
│   │   ├── IntroOutliers.cs
│   │   ├── IntroParams.cs
│   │   ├── IntroParamsAllValues.cs
│   │   ├── IntroParamsPriority.cs
│   │   ├── IntroParamsSource.cs
│   │   ├── IntroPercentiles.cs
│   │   ├── IntroPerfCollectProfiler.cs
│   │   ├── IntroPowerPlan.cs
│   │   ├── IntroRankColumn.cs
│   │   ├── IntroRatioSD.cs
│   │   ├── IntroRatioStyle.cs
│   │   ├── IntroSetupCleanupGlobal.cs
│   │   ├── IntroSetupCleanupIteration.cs
│   │   ├── IntroSetupCleanupTarget.cs
│   │   ├── IntroSmokeEmptyBasic.cs
│   │   ├── IntroSmokeIncrements.cs
│   │   ├── IntroSmokeStringBuilder.cs
│   │   ├── IntroSmokeValueTypes.cs
│   │   ├── IntroStaThread.cs
│   │   ├── IntroStatisticalTesting.cs
│   │   ├── IntroStatisticsColumns.cs
│   │   ├── IntroStopOnFirstError.cs
│   │   ├── IntroSummaryStyle.cs
│   │   ├── IntroTagColumn.cs
│   │   ├── IntroTailcall.cs
│   │   ├── IntroThreadingDiagnoser.cs
│   │   ├── IntroUnicode.cs
│   │   ├── IntroVisualStudioDiagnoser.cs
│   │   ├── IntroWakeLock.cs
│   │   ├── IntroWasm.cs
│   │   ├── Program.cs
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       └── launchSettings.json
│   ├── BenchmarkDotNet.Samples.FSharp/
│   │   ├── BenchmarkDotNet.Samples.FSharp.fsproj
│   │   └── Program.fs
│   ├── BenchmarkDotNet.Samples.Maui/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AppShell.xaml
│   │   ├── AppShell.xaml.cs
│   │   ├── BenchmarkDotNet.Samples.Maui.csproj
│   │   ├── MainPage.xaml
│   │   ├── MainPage.xaml.cs
│   │   ├── MauiProgram.cs
│   │   ├── Platforms/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── MainActivity.cs
│   │   │   │   ├── MainApplication.cs
│   │   │   │   └── Resources/
│   │   │   │       └── values/
│   │   │   │           └── colors.xml
│   │   │   ├── MacCatalyst/
│   │   │   │   ├── AppDelegate.cs
│   │   │   │   ├── Entitlements.plist
│   │   │   │   ├── Info.plist
│   │   │   │   └── Program.cs
│   │   │   ├── Windows/
│   │   │   │   ├── App.xaml
│   │   │   │   ├── App.xaml.cs
│   │   │   │   ├── Package.appxmanifest
│   │   │   │   └── app.manifest
│   │   │   └── iOS/
│   │   │       ├── AppDelegate.cs
│   │   │       ├── Info.plist
│   │   │       ├── Program.cs
│   │   │       └── Resources/
│   │   │           └── PrivacyInfo.xcprivacy
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── Resources/
│   │       └── Styles/
│   │           ├── Colors.xaml
│   │           └── Styles.xaml
│   └── Directory.Build.props
├── src/
│   ├── BenchmarkDotNet/
│   │   ├── Analysers/
│   │   │   ├── AnalyserBase.cs
│   │   │   ├── BaselineCustomAnalyzer.cs
│   │   │   ├── CompositeAnalyser.cs
│   │   │   ├── Conclusion.cs
│   │   │   ├── ConclusionHelper.cs
│   │   │   ├── ConclusionKind.cs
│   │   │   ├── EnvironmentAnalyser.cs
│   │   │   ├── HideColumnsAnalyser.cs
│   │   │   ├── IAnalyser.cs
│   │   │   ├── MinIterationTimeAnalyser.cs
│   │   │   ├── MultimodalDistributionAnalyzer.cs
│   │   │   ├── OutliersAnalyser.cs
│   │   │   ├── RuntimeErrorAnalyser.cs
│   │   │   ├── ZeroMeasurementAnalyser.cs
│   │   │   └── ZeroMeasurementHelper.cs
│   │   ├── Attributes/
│   │   │   ├── ArtifactsPathAttribute.cs
│   │   │   ├── CategoryDiscovererAttribute.cs
│   │   │   ├── Columns/
│   │   │   │   ├── AllStatisticsColumnAttribute.cs
│   │   │   │   ├── BaselineColumnAttribute.cs
│   │   │   │   ├── CategoriesColumnAttribute.cs
│   │   │   │   ├── ColumnConfigBaseAttribute.cs
│   │   │   │   ├── ConfidenceIntervalErrorColumnAttribute.cs
│   │   │   │   ├── IterationsColumnAttribute.cs
│   │   │   │   ├── KurtosisColumnAttribute.cs
│   │   │   │   ├── LogicalGroupColumnAttribute.cs
│   │   │   │   ├── MValueColumnAttribute.cs
│   │   │   │   ├── MaxColumnAttribute.cs
│   │   │   │   ├── MeanColumnAttribute.cs
│   │   │   │   ├── MedianColumnAttribute.cs
│   │   │   │   ├── MinColumnAttribute.cs
│   │   │   │   ├── NamespaceColumnAttribute.cs
│   │   │   │   ├── OperationsPerSecondAttribute.cs
│   │   │   │   ├── Q1ColumnAttribute.cs
│   │   │   │   ├── Q3ColumnAttribute.cs
│   │   │   │   ├── RankColumnAttribute.cs
│   │   │   │   ├── SkewnessColumnAttribute.cs
│   │   │   │   ├── StdDevColumnAttribute.cs
│   │   │   │   ├── StdErrorColumnAttribute.cs
│   │   │   │   └── WelchTTestPValueColumnAttribute.cs
│   │   │   ├── ConfigAttribute.cs
│   │   │   ├── DisassemblyDiagnoserAttribute.cs
│   │   │   ├── EventPipeProfilerAttribute.cs
│   │   │   ├── ExceptionDiagnoserAttribute.cs
│   │   │   ├── ExceptionDiagnoserConfig.cs
│   │   │   ├── Exporters/
│   │   │   │   ├── AsciiDocExporterAttribute.cs
│   │   │   │   ├── CsvExporterAttribute.cs
│   │   │   │   ├── CsvMeasurementsExporterAttribute.cs
│   │   │   │   ├── ExporterConfigBaseAttribute.cs
│   │   │   │   ├── HtmlExporterAttribute.cs
│   │   │   │   ├── JsonExporterAttribute.cs
│   │   │   │   ├── MarkdownExporterAttribute.cs
│   │   │   │   ├── OpenMetricsExporterAttribute.cs
│   │   │   │   ├── PerfonarExporterAttribute.cs
│   │   │   │   ├── PlainExporterAttribute.cs
│   │   │   │   ├── RPlotExporterAttribute.cs
│   │   │   │   └── XmlExporterAttribute.cs
│   │   │   ├── Filters/
│   │   │   │   ├── AllCategoriesFilterAttribute.cs
│   │   │   │   ├── AnyCategoriesFilterAttribute.cs
│   │   │   │   ├── AotFilterAttribute.cs
│   │   │   │   ├── FilterConfigBaseAttribute.cs
│   │   │   │   ├── OperatingSystemsArchitectureFilterAttribute.cs
│   │   │   │   └── OperatingSystemsFilterAttribute.cs
│   │   │   ├── GroupBenchmarksByAttribute.cs
│   │   │   ├── HardwareCountersAttribute.cs
│   │   │   ├── HideColumnsAttribute.cs
│   │   │   ├── Jobs/
│   │   │   │   ├── DryJobAttribute.cs
│   │   │   │   ├── InProcessAttribute.cs
│   │   │   │   ├── JobConfigbaseAttribute.cs
│   │   │   │   ├── LegacyJitX64JobAttribute.cs
│   │   │   │   ├── LegacyJitX86JobAttribute.cs
│   │   │   │   ├── LongRunJobAttribute.cs
│   │   │   │   ├── MediumRunJobAttribute.cs
│   │   │   │   ├── MonoJobAttribute.cs
│   │   │   │   ├── RyuJitX64JobAttribute.cs
│   │   │   │   ├── RyuJitX86JobAttribute.cs
│   │   │   │   ├── ShortRunJobAttribute.cs
│   │   │   │   ├── SimpleJobAttribute.cs
│   │   │   │   └── VeryLongRunJobAttribute.cs
│   │   │   ├── KeepBenchmarkFilesAttribute.cs
│   │   │   ├── MemoryDiagnoserAttribute.cs
│   │   │   ├── Mutators/
│   │   │   │   ├── EvaluateOverheadAttribute.cs
│   │   │   │   ├── GcConcurrentAttribute.cs
│   │   │   │   ├── GcForceAttribute.cs
│   │   │   │   ├── GcServerAttribute.cs
│   │   │   │   ├── InnerIterationCountAttribute.cs
│   │   │   │   ├── InvocationCountAttribute.cs
│   │   │   │   ├── IterationCountAttribute.cs
│   │   │   │   ├── IterationTimeAttribute.cs
│   │   │   │   ├── JobMutatorConfigBaseAttribute.cs
│   │   │   │   ├── MaxAbsoluteErrorAttribute.cs
│   │   │   │   ├── MaxIterationCountAttribute.cs
│   │   │   │   ├── MaxRelativeErrorAttribute.cs
│   │   │   │   ├── MaxWarmupCountAttribute.cs
│   │   │   │   ├── MemoryRandomizationAttribute.cs
│   │   │   │   ├── MinInvokeCountAttribute.cs
│   │   │   │   ├── MinIterationCountAttribute.cs
│   │   │   │   ├── MinIterationTimeAttribute.cs
│   │   │   │   ├── MinWarmupCountAttribute.cs
│   │   │   │   ├── OutliersAttribute.cs
│   │   │   │   ├── ProcessCountAttribute.cs
│   │   │   │   ├── RunOncePerIterationAttribute.cs
│   │   │   │   └── WarmupCountAttribute.cs
│   │   │   ├── OrdererAttribute.cs
│   │   │   ├── PerfCollectProfilerAttribute.cs
│   │   │   ├── StopOnFirstErrorAttribute.cs
│   │   │   ├── ThreadingDiagnoserAttribute.cs
│   │   │   ├── UnicodeConsoleLoggerAttribute.cs
│   │   │   ├── Validators/
│   │   │   │   ├── ExecutionValidatorAttribute.cs
│   │   │   │   ├── ReturnValueValidatorAttribute.cs
│   │   │   │   └── ValidatorConfigBaseAttribute.cs
│   │   │   └── WakeLockAttribute.cs
│   │   ├── BenchmarkDotNet.csproj
│   │   ├── BenchmarkDotNet.csproj.DotSettings
│   │   ├── BenchmarkDotNet.targets
│   │   ├── Characteristics/
│   │   │   ├── Characteristic.cs
│   │   │   ├── CharacteristicHelper.cs
│   │   │   ├── CharacteristicObject.cs
│   │   │   ├── CharacteristicObject`1.cs
│   │   │   ├── CharacteristicPresenter.cs
│   │   │   ├── CharacteristicSet.cs
│   │   │   ├── CharacteristicSetPresenter.cs
│   │   │   ├── Characteristic`1.cs
│   │   │   ├── CompositeResolver.cs
│   │   │   ├── IResolver.cs
│   │   │   └── Resolver.cs
│   │   ├── Code/
│   │   │   ├── ArrayParam.cs
│   │   │   ├── CodeGenBenchmarkRunCallType.cs
│   │   │   ├── CodeGenerator.cs
│   │   │   ├── DeclarationsProvider.cs
│   │   │   ├── EnumParam.cs
│   │   │   └── IParam.cs
│   │   ├── Columns/
│   │   │   ├── BaselineAllocationRatioColumn.cs
│   │   │   ├── BaselineColumn.cs
│   │   │   ├── BaselineCustomColumn.cs
│   │   │   ├── BaselineRatioColumn.cs
│   │   │   ├── CategoriesColumn.cs
│   │   │   ├── Column.cs
│   │   │   ├── ColumnCategory.cs
│   │   │   ├── ColumnExtensions.cs
│   │   │   ├── ColumnHidingByIdRule.cs
│   │   │   ├── ColumnHidingByNameRule.cs
│   │   │   ├── CompositeColumnProvider.cs
│   │   │   ├── DefaultColumnProvider.cs
│   │   │   ├── EmptyColumnProvider.cs
│   │   │   ├── IColumn.cs
│   │   │   ├── IColumnHidingRule.cs
│   │   │   ├── IColumnProvider.cs
│   │   │   ├── JobCharacteristicColumn.cs
│   │   │   ├── LogicalGroupColumn.cs
│   │   │   ├── MetricColumn.cs
│   │   │   ├── ParamColumn.cs
│   │   │   ├── RankColumn.cs
│   │   │   ├── RatioColumnStyle.cs
│   │   │   ├── SimpleColumnProvider.cs
│   │   │   ├── StatisticColumn.cs
│   │   │   ├── StatisticalTestColumn.cs
│   │   │   ├── TagColumn.cs
│   │   │   ├── TargetMethodColumn.cs
│   │   │   └── UnitType.cs
│   │   ├── Configs/
│   │   │   ├── BenchmarkLogicalGroupRule.cs
│   │   │   ├── ConfigExtensions.cs
│   │   │   ├── ConfigOptions.cs
│   │   │   ├── ConfigUnionRule.cs
│   │   │   ├── DebugConfig.cs
│   │   │   ├── DefaultConfig.cs
│   │   │   ├── IConfig.cs
│   │   │   ├── IConfigSource.cs
│   │   │   ├── ImmutableConfig.cs
│   │   │   ├── ImmutableConfigBuilder.cs
│   │   │   ├── ManualConfig.cs
│   │   │   └── WakeLockType.cs
│   │   ├── ConsoleArguments/
│   │   │   ├── CommandLineOptions.cs
│   │   │   ├── ConfigParser.cs
│   │   │   ├── CorrectionsSuggester.cs
│   │   │   ├── LevenshteinDistanceCalculator.cs
│   │   │   ├── ListBenchmarks/
│   │   │   │   ├── BenchmarkCasesPrinter.cs
│   │   │   │   ├── FlatBenchmarkCasesPrinter.cs
│   │   │   │   ├── IBenchmarkCasesPrinter.cs
│   │   │   │   ├── ListBechnmarkCaseMode.cs
│   │   │   │   ├── Node.cs
│   │   │   │   └── TreeBenchmarkCasesPrinter.cs
│   │   │   ├── LoggerWrapper.cs
│   │   │   └── RuntimeFlavor.cs
│   │   ├── Detectors/
│   │   │   ├── Cpu/
│   │   │   │   ├── HardwareIntrinsics.cs
│   │   │   │   ├── ICpuDetector.cs
│   │   │   │   ├── Linux/
│   │   │   │   │   ├── LinuxCpuDetector.cs
│   │   │   │   │   └── LinuxCpuInfoParser.cs
│   │   │   │   ├── Windows/
│   │   │   │   │   ├── MosCpuDetector.cs
│   │   │   │   │   ├── PowershellWmiCpuDetector.cs
│   │   │   │   │   ├── PowershellWmiCpuInfoParser.cs
│   │   │   │   │   ├── WindowsCpuDetector.cs
│   │   │   │   │   ├── WmicCpuDetector.cs
│   │   │   │   │   ├── WmicCpuInfoKeyNames.cs
│   │   │   │   │   └── WmicCpuInfoParser.cs
│   │   │   │   └── macOS/
│   │   │   │       ├── MacOsCpuDetector.cs
│   │   │   │       └── SysctlCpuInfoParser.cs
│   │   │   ├── CpuDetector.cs
│   │   │   └── OsDetector.cs
│   │   ├── Diagnosers/
│   │   │   ├── AllocatedMemoryMetricDescriptor.cs
│   │   │   ├── AllocatedNativeMemoryDescriptor.cs
│   │   │   ├── CompositeDiagnoser.cs
│   │   │   ├── DiagnoserActionParameters.cs
│   │   │   ├── DiagnoserResults.cs
│   │   │   ├── DiagnosersLoader.cs
│   │   │   ├── EventPipeProfile.cs
│   │   │   ├── EventPipeProfileMapper.cs
│   │   │   ├── EventPipeProfiler.cs
│   │   │   ├── ExceptionDiagnoser.cs
│   │   │   ├── HardwareCounter.cs
│   │   │   ├── IDiagnoser.cs
│   │   │   ├── IHardwareCounterDiagnoser.cs
│   │   │   ├── IProfiler.cs
│   │   │   ├── InProcessDiagnoserActionParameters.cs
│   │   │   ├── InProcessDiagnoserHandlerData.cs
│   │   │   ├── InProcessDiagnoserRouter.cs
│   │   │   ├── MemoryDiagnoser.cs
│   │   │   ├── MemoryDiagnoserConfig.cs
│   │   │   ├── PerfCollectProfiler.cs
│   │   │   ├── PerfCollectProfilerConfig.cs
│   │   │   ├── PmcMetricDescriptor.cs
│   │   │   ├── PmcStats.cs
│   │   │   ├── PreciseMachineCounter.cs
│   │   │   ├── RunMode.cs
│   │   │   ├── SnapshotProfilerBase.cs
│   │   │   ├── SpeedScopeExporter.cs
│   │   │   ├── ThreadingDiagnoser.cs
│   │   │   ├── ThreadingDiagnoserConfig.cs
│   │   │   └── UnresolvedDiagnoser.cs
│   │   ├── Disassemblers/
│   │   │   ├── Arm64Disassembler.cs
│   │   │   ├── Arm64InstructionFormatter.cs
│   │   │   ├── ClrMdArgs.cs
│   │   │   ├── ClrMdDisassembler.cs
│   │   │   ├── DataContracts.cs
│   │   │   ├── DisassemblyAnalyzer.cs
│   │   │   ├── DisassemblyDiagnoser.cs
│   │   │   ├── DisassemblyDiagnoserConfig.cs
│   │   │   ├── DisassemblySyntax.cs
│   │   │   ├── Exporters/
│   │   │   │   ├── CombinedDisassemblyExporter.cs
│   │   │   │   ├── DisassemblyPrettifier.cs
│   │   │   │   ├── GithubMarkdownDiffDisassemblyExporter.cs
│   │   │   │   ├── GithubMarkdownDisassemblyExporter.cs
│   │   │   │   ├── HtmlDisassemblyExporter.cs
│   │   │   │   └── SymbolResolver.cs
│   │   │   ├── InstructionFormatter.cs
│   │   │   ├── IntelDisassembler.cs
│   │   │   ├── IntelInstructionFormatter.cs
│   │   │   ├── MonoDisassembler.cs
│   │   │   └── SourceCodeProvider.cs
│   │   ├── Engines/
│   │   │   ├── AnonymousPipesHost.cs
│   │   │   ├── BenchmarkSignal.cs
│   │   │   ├── Consumer.cs
│   │   │   ├── ConsumerExtensions.cs
│   │   │   ├── DeadCodeEliminationHelper.cs
│   │   │   ├── Engine.cs
│   │   │   ├── EngineActualStage.cs
│   │   │   ├── EngineEventSource.cs
│   │   │   ├── EngineFactory.cs
│   │   │   ├── EngineJitStage.cs
│   │   │   ├── EngineParameters.cs
│   │   │   ├── EnginePilotStage.cs
│   │   │   ├── EngineResolver.cs
│   │   │   ├── EngineStage.cs
│   │   │   ├── EngineWarmupStage.cs
│   │   │   ├── GcStats.cs
│   │   │   ├── HostExtensions.cs
│   │   │   ├── HostSignal.cs
│   │   │   ├── IEngine.cs
│   │   │   ├── IEngineFactory.cs
│   │   │   ├── IHost.cs
│   │   │   ├── IterationData.cs
│   │   │   ├── IterationMode.cs
│   │   │   ├── IterationStage.cs
│   │   │   ├── NoAcknowledgementConsoleHost.cs
│   │   │   ├── RunResults.cs
│   │   │   └── RunStrategy.cs
│   │   ├── Environments/
│   │   │   ├── BenchmarkEnvironmentInfo.cs
│   │   │   ├── EnvironmentResolver.cs
│   │   │   ├── GcResolver.cs
│   │   │   ├── HostEnvironmentInfo.cs
│   │   │   ├── InfrastructureResolver.cs
│   │   │   ├── Jit.cs
│   │   │   ├── PhysicalMemoryInfo.cs
│   │   │   ├── Platform.cs
│   │   │   ├── PowerPlan.cs
│   │   │   └── Runtimes/
│   │   │       ├── ClrRuntime.cs
│   │   │       ├── CoreRuntime.cs
│   │   │       ├── CustomRuntime.cs
│   │   │       ├── MonoAotLLVMRuntime.cs
│   │   │       ├── MonoRuntime.cs
│   │   │       ├── NativeAotRuntime.cs
│   │   │       ├── R2RRuntime.cs
│   │   │       ├── Runtime.cs
│   │   │       └── WasmRuntime.cs
│   │   ├── EventProcessors/
│   │   │   ├── CompositeEventProcessor.cs
│   │   │   └── EventProcessor.cs
│   │   ├── Exporters/
│   │   │   ├── AsciiDocExporter.cs
│   │   │   ├── BenchmarkReportExporter.cs
│   │   │   ├── CompositeExporter.cs
│   │   │   ├── Csv/
│   │   │   │   ├── CsvExporter.cs
│   │   │   │   ├── CsvHelper.cs
│   │   │   │   ├── CsvMeasurementsExporter.cs
│   │   │   │   ├── CsvSeparator.cs
│   │   │   │   └── CsvSeparatorExtensions.cs
│   │   │   ├── DefaultExporters.cs
│   │   │   ├── ExporterBase.cs
│   │   │   ├── FullNameProvider.cs
│   │   │   ├── HtmlExporter.cs
│   │   │   ├── IExporter.cs
│   │   │   ├── IExporterDependencies.cs
│   │   │   ├── InstructionPointerExporter.cs
│   │   │   ├── Json/
│   │   │   │   ├── JsonExporter.cs
│   │   │   │   └── JsonExporterBase.cs
│   │   │   ├── MarkdownExporter.cs
│   │   │   ├── OpenMetrics/
│   │   │   │   └── OpenMetricsExporter.cs
│   │   │   ├── PerfonarJsonExporter.cs
│   │   │   ├── PerfonarMdExporter.cs
│   │   │   ├── PlainExporter.cs
│   │   │   ├── RPlotExporter.cs
│   │   │   └── Xml/
│   │   │       ├── IXmlSerializer.cs
│   │   │       ├── SimpleXmlWriter.cs
│   │   │       ├── SummaryDto.cs
│   │   │       ├── XmlExporter.cs
│   │   │       ├── XmlExporterBase.cs
│   │   │       └── XmlSerializer.cs
│   │   ├── Extensions/
│   │   │   ├── AssemblyExtensions.cs
│   │   │   ├── CommonExtensions.cs
│   │   │   ├── ConfigurationExtensions.cs
│   │   │   ├── CultureInfoExtensions.cs
│   │   │   ├── DoubleExtensions.cs
│   │   │   ├── EncodingExtensions.cs
│   │   │   ├── Hashing.cs
│   │   │   ├── MathExtensions.cs
│   │   │   ├── MethodInfoExtensions.cs
│   │   │   ├── PathFeatures.cs
│   │   │   ├── Polyfills/
│   │   │   │   ├── ArgumentExceptionExtensions.cs
│   │   │   │   ├── ArgumentNullExceptionExtensions.cs
│   │   │   │   └── EnumExtensions.cs
│   │   │   ├── ProcessExtensions.cs
│   │   │   ├── ReflectionExtensions.cs
│   │   │   ├── ReportExtensions.cs
│   │   │   ├── RuntimeMonikerExtensions.cs
│   │   │   ├── StatisticsExtensions.cs
│   │   │   ├── StringAndTextExtensions.cs
│   │   │   └── ThreadExtensions.cs
│   │   ├── Filters/
│   │   │   ├── AllCategoriesFilter.cs
│   │   │   ├── AnyCategoriesFilter.cs
│   │   │   ├── AttributesFilter.cs
│   │   │   ├── DisjunctionFilter.cs
│   │   │   ├── GlobFilter.cs
│   │   │   ├── IFilter.cs
│   │   │   ├── NameFilter.cs
│   │   │   ├── SimpleFilter.cs
│   │   │   └── UnionFilter.cs
│   │   ├── Helpers/
│   │   │   ├── ArtifactFileNameHelper.cs
│   │   │   ├── AsciiHelper.cs
│   │   │   ├── Assertion.cs
│   │   │   ├── AwaitHelper.cs
│   │   │   ├── CodeAnnotations.cs
│   │   │   ├── ConsoleExitHandler.cs
│   │   │   ├── DefaultCultureInfo.cs
│   │   │   ├── DirtyAssemblyResolveHelper.cs
│   │   │   ├── DisposeAtProcessTermination.cs
│   │   │   ├── ExternalToolsHelper.cs
│   │   │   ├── FolderNameHelper.cs
│   │   │   ├── FrameworkVersionHelper.cs
│   │   │   ├── GenericBenchmarksBuilder.cs
│   │   │   ├── HashCode.cs
│   │   │   ├── LinuxOsReleaseHelper.cs
│   │   │   ├── PowerManagementHelper.cs
│   │   │   ├── PowerShellLocator.cs
│   │   │   ├── ProcessHelper.cs
│   │   │   ├── Reflection.Emit/
│   │   │   │   ├── EmitParameterInfo.cs
│   │   │   │   ├── IlGeneratorCallExtensions.cs
│   │   │   │   ├── IlGeneratorEmitOpExtensions.cs
│   │   │   │   ├── IlGeneratorStatementExtensions.cs
│   │   │   │   ├── MethodBuilderExtensions.cs
│   │   │   │   └── TypeBuilderExtensions.cs
│   │   │   ├── ResourceHelper.cs
│   │   │   ├── SectionsHelper.cs
│   │   │   ├── SourceCodeHelper.cs
│   │   │   ├── TaskbarProgress.cs
│   │   │   ├── UnitHelper.cs
│   │   │   ├── UserInteractionHelper.cs
│   │   │   └── XUnitHelper.cs
│   │   ├── Jobs/
│   │   │   ├── AccuracyMode.cs
│   │   │   ├── Argument.cs
│   │   │   ├── EnvironmentMode.cs
│   │   │   ├── EnvironmentVariable.cs
│   │   │   ├── GcMode.cs
│   │   │   ├── GcModeExtensions.cs
│   │   │   ├── InfrastructureMode.cs
│   │   │   ├── Job.cs
│   │   │   ├── JobComparer.cs
│   │   │   ├── JobExtensions.cs
│   │   │   ├── JobIdGenerator.cs
│   │   │   ├── JobMode`1.cs
│   │   │   ├── MetaMode.cs
│   │   │   └── RunMode.cs
│   │   ├── Loggers/
│   │   │   ├── AccumulationLogger.cs
│   │   │   ├── AsyncProcessOutputReader.cs
│   │   │   ├── Broker.cs
│   │   │   ├── CompositeLogger.cs
│   │   │   ├── ConsoleLogger.cs
│   │   │   ├── ILogger.cs
│   │   │   ├── LinqPadLogger.cs
│   │   │   ├── LogCapture.cs
│   │   │   ├── LogKind.cs
│   │   │   ├── LoggerExtensions.cs
│   │   │   ├── LoggerWithPrefix.cs
│   │   │   ├── NullLogger.cs
│   │   │   ├── StreamLogger.cs
│   │   │   └── TextLogger.cs
│   │   ├── Mathematics/
│   │   │   ├── LegacyConfidenceInterval.cs
│   │   │   ├── MathHelper.cs
│   │   │   ├── MeasurementsStatistics.cs
│   │   │   ├── NumeralSystem.cs
│   │   │   ├── NumeralSystemExtensions.cs
│   │   │   ├── PercentileValues.cs
│   │   │   ├── RankHelper.cs
│   │   │   ├── RatioStatistics.cs
│   │   │   └── Statistics.cs
│   │   ├── Models/
│   │   │   ├── BdnBenchmark.cs
│   │   │   ├── BdnEnvironment.cs
│   │   │   ├── BdnExecution.cs
│   │   │   ├── BdnHostInfo.cs
│   │   │   ├── BdnLifecycle.cs
│   │   │   └── BdnSchema.cs
│   │   ├── Order/
│   │   │   ├── CategoryComparer.cs
│   │   │   ├── DefaultOrderer.cs
│   │   │   ├── IOrderer.cs
│   │   │   ├── JobOrderPolicy.cs
│   │   │   ├── MethodOrderPolicy.cs
│   │   │   └── SummaryOrderPolicy.cs
│   │   ├── Parameters/
│   │   │   ├── ParameterComparer.cs
│   │   │   ├── ParameterDefinition.cs
│   │   │   ├── ParameterDefinitions.cs
│   │   │   ├── ParameterEqualityComparer.cs
│   │   │   ├── ParameterInstance.cs
│   │   │   ├── ParameterInstances.cs
│   │   │   └── SmartParamBuilder.cs
│   │   ├── Portability/
│   │   │   ├── Antivirus.cs
│   │   │   ├── CodeGen.cs
│   │   │   ├── HyperV.cs
│   │   │   ├── JitInfo.cs
│   │   │   ├── Libc.cs
│   │   │   ├── RuntimeInformation.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── VMware.cs
│   │   │   ├── VirtualBox.cs
│   │   │   └── VirtualMachineHypervisor.cs
│   │   ├── Properties/
│   │   │   ├── AssemblyInfo.cs
│   │   │   └── BenchmarkDotNetInfo.cs
│   │   ├── Reports/
│   │   │   ├── BaseliningStrategy.cs
│   │   │   ├── BenchmarkReport.cs
│   │   │   ├── BenchmarkReportExtensions.cs
│   │   │   ├── DisplayPrecisionManager.cs
│   │   │   ├── Measurement.cs
│   │   │   ├── MeasurementExtensions.cs
│   │   │   ├── Metric.cs
│   │   │   ├── Summary.cs
│   │   │   ├── SummaryExtensions.cs
│   │   │   ├── SummaryStyle.cs
│   │   │   ├── SummaryTable.cs
│   │   │   └── SummaryTableExtensions.cs
│   │   ├── Running/
│   │   │   ├── BenchmarkBuildInfo.cs
│   │   │   ├── BenchmarkCase.cs
│   │   │   ├── BenchmarkConverter.cs
│   │   │   ├── BenchmarkId.cs
│   │   │   ├── BenchmarkPartitioner.cs
│   │   │   ├── BenchmarkRunInfo.cs
│   │   │   ├── BenchmarkRunnerClean.cs
│   │   │   ├── BenchmarkRunnerDirty.cs
│   │   │   ├── BenchmarkSwitcher.cs
│   │   │   ├── BuildPartition.cs
│   │   │   ├── ConsoleTitler.cs
│   │   │   ├── DefaultCategoryDiscoverer.cs
│   │   │   ├── Descriptor.cs
│   │   │   ├── DescriptorComparer.cs
│   │   │   ├── ICategoryDiscoverer.cs
│   │   │   ├── IUserInteraction.cs
│   │   │   ├── InvalidBenchmarkDeclarationException.cs
│   │   │   ├── PowerManagementApplier.cs
│   │   │   ├── TypeFilter.cs
│   │   │   ├── UserInteraction.cs
│   │   │   ├── WakeLock.PInvoke.cs
│   │   │   ├── WakeLock.SafePowerHandle.cs
│   │   │   └── WakeLock.cs
│   │   ├── Serialization/
│   │   │   ├── BdnJsonSerializer.cs
│   │   │   ├── BdnJsonSerializerContext.cs
│   │   │   └── BdnSimpleJsonSerializer.cs
│   │   ├── Templates/
│   │   │   ├── BenchmarkProgram.txt
│   │   │   ├── BenchmarkType.txt
│   │   │   ├── BuildPlots.R
│   │   │   ├── CsProj.txt
│   │   │   ├── MonoAOTLLVMCsProj.txt
│   │   │   ├── R2RCsProj.txt
│   │   │   ├── WasmCsProj.txt
│   │   │   ├── WasmLinkerDescription.xml
│   │   │   ├── benchmark-main.mjs
│   │   │   ├── highlightingLabelsScript.js
│   │   │   └── perfcollect
│   │   ├── Toolchains/
│   │   │   ├── AppConfigGenerator.cs
│   │   │   ├── ArtifactsPaths.cs
│   │   │   ├── CoreRun/
│   │   │   │   ├── CoreRunGenerator.cs
│   │   │   │   ├── CoreRunPublisher.cs
│   │   │   │   └── CoreRunToolchain.cs
│   │   │   ├── CsProj/
│   │   │   │   ├── CsProjClassicNetToolchain.cs
│   │   │   │   ├── CsProjCoreToolchain.cs
│   │   │   │   └── CsProjGenerator.cs
│   │   │   ├── DotNetCli/
│   │   │   │   ├── CustomDotNetCliToolchainBuilder.cs
│   │   │   │   ├── DotNetCliBuilder.cs
│   │   │   │   ├── DotNetCliCommand.cs
│   │   │   │   ├── DotNetCliCommandExecutor.cs
│   │   │   │   ├── DotNetCliCommandResult.cs
│   │   │   │   ├── DotNetCliExecutor.cs
│   │   │   │   ├── DotNetCliGenerator.cs
│   │   │   │   ├── DotNetCliPublisher.cs
│   │   │   │   ├── MsBuildErrorMapper.cs
│   │   │   │   └── NetCoreAppSettings.cs
│   │   │   ├── Executor.cs
│   │   │   ├── GeneratorBase.cs
│   │   │   ├── IBuilder.cs
│   │   │   ├── IExecutor.cs
│   │   │   ├── IGenerator.cs
│   │   │   ├── IToolchain.cs
│   │   │   ├── InProcess/
│   │   │   │   ├── Emit/
│   │   │   │   │   ├── Implementation/
│   │   │   │   │   │   ├── ConsumableTypeInfo.cs
│   │   │   │   │   │   ├── Emitters/
│   │   │   │   │   │   │   ├── EmitExtensions.cs
│   │   │   │   │   │   │   └── RunnableEmitter.cs
│   │   │   │   │   │   └── Runnable/
│   │   │   │   │   │       ├── RunnableConstants.cs
│   │   │   │   │   │       ├── RunnableProgram.cs
│   │   │   │   │   │       ├── RunnableReflectionHelpers.cs
│   │   │   │   │   │       └── RunnableReuse.cs
│   │   │   │   │   ├── InProcessEmitArtifactsPath.cs
│   │   │   │   │   ├── InProcessEmitBuilder.cs
│   │   │   │   │   ├── InProcessEmitExecutor.cs
│   │   │   │   │   ├── InProcessEmitGenerator.cs
│   │   │   │   │   ├── InProcessEmitSettings.cs
│   │   │   │   │   └── InProcessEmitToolchain.cs
│   │   │   │   ├── InProcessHost.cs
│   │   │   │   ├── InProcessSettings.cs
│   │   │   │   ├── InProcessValidator.cs
│   │   │   │   └── NoEmit/
│   │   │   │       ├── BenchmarkAction.cs
│   │   │   │       ├── BenchmarkActionFactory.cs
│   │   │   │       ├── BenchmarkActionFactory_Base.cs
│   │   │   │       ├── BenchmarkActionFactory_Implementations.cs
│   │   │   │       ├── InProcessNoEmitBuilder.cs
│   │   │   │       ├── InProcessNoEmitExecutor.cs
│   │   │   │       ├── InProcessNoEmitGenerator.cs
│   │   │   │       ├── InProcessNoEmitRunner.cs
│   │   │   │       ├── InProcessNoEmitSettings.cs
│   │   │   │       └── InProcessNoEmitToolchain.cs
│   │   │   ├── LargeAddressAware.cs
│   │   │   ├── Mono/
│   │   │   │   ├── MonoAotBuilder.cs
│   │   │   │   ├── MonoAotToolchain.cs
│   │   │   │   ├── MonoGenerator.cs
│   │   │   │   ├── MonoPublisher.cs
│   │   │   │   └── MonoToolchain.cs
│   │   │   ├── MonoAotLLVM/
│   │   │   │   ├── MonoAotCompilerMode.cs
│   │   │   │   ├── MonoAotLLVMGenerator.cs
│   │   │   │   └── MonoAotLLVMToolChain.cs
│   │   │   ├── MonoWasm/
│   │   │   │   ├── WasmExecutor.cs
│   │   │   │   ├── WasmGenerator.cs
│   │   │   │   └── WasmToolchain.cs
│   │   │   ├── NativeAot/
│   │   │   │   ├── Generator.cs
│   │   │   │   ├── NativeAotToolchain.cs
│   │   │   │   └── NativeAotToolchainBuilder.cs
│   │   │   ├── Parameters/
│   │   │   │   └── ExecuteParameters.cs
│   │   │   ├── R2R/
│   │   │   │   ├── R2RGenerator.cs
│   │   │   │   └── R2RToolchain.cs
│   │   │   ├── Results/
│   │   │   │   ├── BuildResult.cs
│   │   │   │   ├── ExecuteResult.cs
│   │   │   │   └── GenerateResult.cs
│   │   │   ├── Roslyn/
│   │   │   │   ├── Builder.cs
│   │   │   │   ├── Generator.cs
│   │   │   │   ├── RoslynToolchain.cs
│   │   │   │   └── RoslynWorkarounds.cs
│   │   │   ├── Toolchain.cs
│   │   │   └── ToolchainExtensions.cs
│   │   └── Validators/
│   │       ├── BaselineValidator.cs
│   │       ├── BenchmarkProcessValidator.cs
│   │       ├── CompilationValidator.cs
│   │       ├── CompositeValidator.cs
│   │       ├── ConfigValidator.cs
│   │       ├── DeferredExecutionValidator.cs
│   │       ├── DiagnosersValidator.cs
│   │       ├── DotNetSdkValidator.cs
│   │       ├── ExecutionValidator.cs
│   │       ├── ExecutionValidatorBase.cs
│   │       ├── GenericBenchmarksValidator.cs
│   │       ├── IValidator.cs
│   │       ├── JitOptimizationsValidator.cs
│   │       ├── ParamsAllValuesValidator.cs
│   │       ├── ParamsValidator.cs
│   │       ├── ReturnValueValidator.cs
│   │       ├── RunModeValidator.cs
│   │       ├── RuntimeValidator.cs
│   │       ├── SetupCleanupValidator.cs
│   │       ├── ShadowCopyValidator.cs
│   │       ├── ValidationError.cs
│   │       ├── ValidationErrorReporter.cs
│   │       └── ValidationParameters.cs
│   ├── BenchmarkDotNet.Analyzers/
│   │   ├── AnalyzerHelper.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── Attributes/
│   │   │   ├── ArgumentsAttributeAnalyzer.cs
│   │   │   ├── GeneralArgumentAttributesAnalyzer.cs
│   │   │   ├── GeneralParameterAttributesAnalyzer.cs
│   │   │   ├── ParamsAllValuesAttributeAnalyzer.cs
│   │   │   └── ParamsAttributeAnalyzer.cs
│   │   ├── BenchmarkDotNet.Analyzers.csproj
│   │   ├── BenchmarkDotNetAnalyzerResources.Designer.cs
│   │   ├── BenchmarkDotNetAnalyzerResources.resx
│   │   ├── BenchmarkRunner/
│   │   │   └── RunAnalyzer.cs
│   │   ├── DiagnosticIds.cs
│   │   └── General/
│   │       └── BenchmarkClassAnalyzer.cs
│   ├── BenchmarkDotNet.Annotations/
│   │   ├── Attributes/
│   │   │   ├── ArgumentsAttribute.cs
│   │   │   ├── ArgumentsSourceAttribute.cs
│   │   │   ├── BenchmarkAttribute.cs
│   │   │   ├── BenchmarkCategoryAttribute.cs
│   │   │   ├── GenericTypeArgumentsAttribute.cs
│   │   │   ├── GlobalCleanupAttribute.cs
│   │   │   ├── GlobalSetupAttribute.cs
│   │   │   ├── IterationCleanupAttribute.cs
│   │   │   ├── IterationSetupAttribute.cs
│   │   │   ├── ParamsAllValuesAttribute.cs
│   │   │   ├── ParamsAttribute.cs
│   │   │   ├── ParamsSourceAttribute.cs
│   │   │   ├── PriorityAttribute.cs
│   │   │   └── TargetedAttribute.cs
│   │   ├── BenchmarkDotNet.Annotations.csproj
│   │   ├── Jobs/
│   │   │   └── RuntimeMoniker.cs
│   │   └── buildTransitive/
│   │       └── netstandard2.0/
│   │           └── BenchmarkDotNet.Annotations.targets
│   ├── BenchmarkDotNet.Diagnostics.Windows/
│   │   ├── BenchmarkDotNet.Diagnostics.Windows.csproj
│   │   ├── ConcurrencyVisualizerProfiler.cs
│   │   ├── Configs/
│   │   │   ├── ConcurrencyVisualizerProfilerAttribute.cs
│   │   │   ├── EtwProfilerAttribute.cs
│   │   │   ├── InliningDiagnoserAttribute.cs
│   │   │   ├── JitStatsDiagnoserAttribute.cs
│   │   │   ├── NativeMemoryProfilerAttribute.cs
│   │   │   └── TailCallDiagnoserAttribute.cs
│   │   ├── EtwDiagnoser.cs
│   │   ├── EtwProfiler.cs
│   │   ├── EtwProfilerConfig.cs
│   │   ├── HardwareCounters.cs
│   │   ├── InliningDiagnoser.cs
│   │   ├── JitDiagnoser.cs
│   │   ├── JitStatsDiagnoser.cs
│   │   ├── NativeMemoryProfiler.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Sessions.cs
│   │   ├── TailCallDiagnoser.cs
│   │   └── Tracing/
│   │       ├── BenchmarkEvent.cs
│   │       ├── EngineEventLogParser.cs
│   │       ├── IterationEvent.cs
│   │       ├── NativeMemoryLogParser.cs
│   │       └── TraceLogParser.cs
│   ├── BenchmarkDotNet.Diagnostics.dotMemory/
│   │   ├── BenchmarkDotNet.Diagnostics.dotMemory.csproj
│   │   ├── DotMemoryDiagnoser.cs
│   │   ├── DotMemoryDiagnoserAttribute.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── BenchmarkDotNet.Diagnostics.dotTrace/
│   │   ├── BenchmarkDotNet.Diagnostics.dotTrace.csproj
│   │   ├── DotTraceDiagnoser.cs
│   │   ├── DotTraceDiagnoserAttribute.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── BenchmarkDotNet.Disassembler/
│   │   ├── BenchmarkDotNet.Disassembler.csproj
│   │   └── Program.cs
│   ├── BenchmarkDotNet.Exporters.Plotting/
│   │   ├── BenchmarkDotNet.Exporters.Plotting.csproj
│   │   └── ScottPlotExporter.cs
│   ├── BenchmarkDotNet.TestAdapter/
│   │   ├── BenchmarkCaseExtensions.cs
│   │   ├── BenchmarkDotNet.TestAdapter.csproj
│   │   ├── BenchmarkEnumerator.cs
│   │   ├── BenchmarkExecutor.cs
│   │   ├── Remoting/
│   │   │   ├── BenchmarkEnumeratorWrapper.cs
│   │   │   ├── BenchmarkExecutorWrapper.cs
│   │   │   ├── MessageLoggerWrapper.cs
│   │   │   ├── SerializationHelpers.cs
│   │   │   └── TestExecutionRecorderWrapper.cs
│   │   ├── Utility/
│   │   │   ├── LoggerHelper.cs
│   │   │   └── TestCaseFilter.cs
│   │   ├── VSTestAdapter.cs
│   │   ├── VSTestEventProcessor.cs
│   │   ├── VSTestLogger.cs
│   │   ├── VSTestProperties.cs
│   │   ├── build/
│   │   │   └── BenchmarkDotNet.TestAdapter.props
│   │   └── entrypoints/
│   │       ├── EntryPoint.cs
│   │       ├── EntryPoint.fs
│   │       └── EntryPoint.vb
│   └── BenchmarkDotNet.Weaver/
│       ├── .gitignore
│       ├── BenchmarkDotNet.Weaver.csproj
│       ├── buildTransitive/
│       │   └── netstandard2.0/
│       │       └── BenchmarkDotNet.Weaver.targets
│       ├── packages/
│       │   └── BenchmarkDotNet.Weaver.0.16.0-develop-3.nupkg
│       └── src/
│           ├── ReferencePathAssemblyResolver.cs
│           └── WeaveAssemblyTask.cs
├── templates/
│   ├── BenchmarkDotNet.Templates.csproj
│   ├── install-from-source.bat
│   ├── install-from-source.sh
│   └── templates/
│       ├── BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/
│       │   ├── .template.config/
│       │   │   ├── dotnetcli.host.json
│       │   │   └── template.json
│       │   ├── BenchmarkConfig.cs
│       │   ├── Program.cs
│       │   ├── _BenchmarkName_.cs
│       │   └── _BenchmarkProjectName_.csproj
│       ├── BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/
│       │   ├── .template.config/
│       │   │   ├── dotnetcli.host.json
│       │   │   └── template.json
│       │   ├── BenchmarkConfig.fs
│       │   ├── Program.fs
│       │   ├── _BenchmarkName_.fs
│       │   └── _BenchmarkProjectName_.fsproj
│       └── BenchmarkDotNet.BenchmarkProjectTemplate.VB/
│           ├── .template.config/
│           │   ├── dotnetcli.host.json
│           │   └── template.json
│           ├── BenchmarkConfig.vb
│           ├── Program.vb
│           ├── _BenchmarkName_.vb
│           └── _BenchmarkProjectName_.vbproj
└── tests/
    ├── BenchmarkDotNet.Analyzers.Tests/
    │   ├── AnalyzerTests/
    │   │   ├── Attributes/
    │   │   │   ├── ArgumentsAttributeAnalyzerTests.cs
    │   │   │   ├── GeneralArgumentAttributesAnalyzerTests.cs
    │   │   │   ├── GeneralParameterAttributesAnalyzerTests.cs
    │   │   │   ├── ParamsAllValuesAttributeAnalyzerTests.cs
    │   │   │   └── ParamsAttributeAnalyzerTests.cs
    │   │   ├── BenchmarkRunner/
    │   │   │   └── RunAnalyzerTests.cs
    │   │   └── General/
    │   │       └── BenchmarkClassAnalyzerTests.cs
    │   ├── BenchmarkDotNet.Analyzers.Tests.csproj
    │   ├── BenchmarkDotNet.Analyzers.Tests.csproj.DotSettings
    │   └── Fixtures/
    │       ├── AnalyzerTestFixture.cs
    │       ├── Extensions/
    │       │   └── TheoryDataExtensions.cs
    │       ├── Generators/
    │       │   └── CombinationsGenerator.cs
    │       ├── Serializable/
    │       │   ├── ValueTupleDouble.cs
    │       │   └── ValueTupleTriple.cs
    │       └── TheoryData/
    │           ├── FieldOrPropertyDeclarationsTheoryData.cs
    │           ├── NonPublicClassAccessModifiersTheoryData.cs
    │           ├── NonPublicClassMemberAccessModifiersTheoryData.cs
    │           └── NonPublicPropertySetterAccessModifiersTheoryData.cs
    ├── BenchmarkDotNet.Exporters.Plotting.Tests/
    │   ├── BenchmarkDotNet.Exporters.Plotting.Tests.csproj
    │   └── ScottPlotExporterTests.cs
    ├── BenchmarkDotNet.IntegrationTests/
    │   ├── AllSetupAndCleanupTest.cs
    │   ├── App.config
    │   ├── AppConfigTests.cs
    │   ├── ArgumentsTests.cs
    │   ├── AssemblyConfigTests.cs
    │   ├── AsyncBenchmarksTests.cs
    │   ├── AttributesTests.cs
    │   ├── BaselineRatioColumnTest.cs
    │   ├── BenchmarkDotNet.IntegrationTests.csproj
    │   ├── BenchmarkSwitcherTest.cs
    │   ├── BenchmarkTestExecutor.cs
    │   ├── BuildTimeoutTests.cs
    │   ├── ConflictingNamesTests.cs
    │   ├── ContinuousIntegration.cs
    │   ├── CopyToOutputTests.cs
    │   ├── CustomBuildConfigurationTests.cs
    │   ├── CustomEngineTests.cs
    │   ├── Diagnosers/
    │   │   ├── MockInProcessDiagnoser.cs
    │   │   └── ProcessMetricsTests.cs
    │   ├── DisassemblyDiagnoserTests.cs
    │   ├── DryRunTests.cs
    │   ├── EngineTests.cs
    │   ├── EnvironmentVariablesTests.cs
    │   ├── EventProcessorTests.cs
    │   ├── ExceptionDiagnoserTests.cs
    │   ├── ExceptionHandlingTests.cs
    │   ├── ExporterIOTests.cs
    │   ├── ExtraAttributesForEntryMethodTests.cs
    │   ├── FSharpTests.cs
    │   ├── FailingProcessSpawnTests.cs
    │   ├── GcModeTests.cs
    │   ├── GlobalSetupAttributeInvalidMethodTest.cs
    │   ├── InProcess.EmitTests/
    │   │   ├── NaiveRunnableEmitDiff.cs
    │   │   ├── RunnableTestCasesHelperTypes.cs
    │   │   ├── Runnable_0.cs
    │   │   └── SampleBenchmark.cs
    │   ├── InProcess.EmitTests.T4/
    │   │   ├── RunnableClassCaseBenchmark.cs
    │   │   ├── RunnableClassCaseBenchmark.tt
    │   │   ├── RunnableManyArgsCaseBenchmark.cs
    │   │   ├── RunnableManyArgsCaseBenchmark.tt
    │   │   ├── RunnableRefStructCaseBenchmark.cs
    │   │   ├── RunnableRefStructCaseBenchmark.tt
    │   │   ├── RunnableStructCaseBenchmark.cs
    │   │   ├── RunnableStructCaseBenchmark.tt
    │   │   ├── RunnableTaskCaseBenchmark.cs
    │   │   ├── RunnableTaskCaseBenchmark.tt
    │   │   ├── RunnableVoidCaseBenchmark.cs
    │   │   └── RunnableVoidCaseBenchmark.tt
    │   ├── InProcessDiagnoserTests.cs
    │   ├── InProcessEmitTest.cs
    │   ├── InProcessTest.cs
    │   ├── IntegrationTestSetupTests.cs
    │   ├── JitOptimizationsTests.cs
    │   ├── JitRuntimeValidationTest.cs
    │   ├── LanguageVersionTests.cs
    │   ├── LargeAddressAwareTest.cs
    │   ├── MemoryDiagnoserTests.cs
    │   ├── MonoTests.cs
    │   ├── MultipleRuntimesTest.cs
    │   ├── NativeAotTests.cs
    │   ├── ParamSourceTests.cs
    │   ├── ParamsTests.cs
    │   ├── PathTooLongTests.cs
    │   ├── PowerManagementApplierTests.cs
    │   ├── PowerRequest.cs
    │   ├── PowerRequestsParser.cs
    │   ├── PriorityTests.cs
    │   ├── ProcessPropertiesTests.cs
    │   ├── ProcessorArchitectureTest.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── R2RTests.cs
    │   ├── ReferencesTests.cs
    │   ├── RoslynToolchainTest.cs
    │   ├── RunStrategyTests.cs
    │   ├── RunningEmptyBenchmarkTests.cs
    │   ├── SetupAndCleanupTests.cs
    │   ├── StandardErrorTests.cs
    │   ├── StatResultExtenderTests.cs
    │   ├── TailCallDiagnoserTests.cs
    │   ├── TestConfigs.cs
    │   ├── TestCultureInfo.cs
    │   ├── ThreadingDiagnoserTests.cs
    │   ├── ToolchainTest.cs
    │   ├── ValidatorsTest.cs
    │   ├── ValuesReturnedByBenchmarkTest.cs
    │   ├── WakeLockTests.cs
    │   ├── WasmTests.cs
    │   ├── Xunit/
    │   │   ├── Constants.cs
    │   │   ├── Extensions.cs
    │   │   └── MisconfiguredEnvironmentException.cs
    │   ├── runtimeconfig.template.json
    │   ├── wwwroot/
    │   │   └── custom-main.mjs
    │   └── xunit.runner.json
    ├── BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/
    │   ├── AssemblyConfigAttribute.cs
    │   ├── AssemblyConfigBenchmarks.cs
    │   ├── BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.CustomPaths/
    │   ├── BenchmarkDotNet.IntegrationTests.CustomPaths.csproj
    │   ├── BenchmarksThatReturnTypeFromCustomPathDll.cs
    │   ├── BenchmarksThatUseTypeFromCustomPathDll.cs
    │   ├── BenchmarksThatUsesFileFromOutput.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── ShouldGetCopied.xml
    ├── BenchmarkDotNet.IntegrationTests.DisabledOptimizations/
    │   ├── BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj
    │   ├── OptimizationsDisabledInCsproj.cs
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.EnabledOptimizations/
    │   ├── BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj
    │   ├── OptimizationsEnabledInCsproj.cs
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.FSharp/
    │   ├── BenchmarkDotNet.IntegrationTests.FSharp.fsproj
    │   └── Program.fs
    ├── BenchmarkDotNet.IntegrationTests.ManualRunning/
    │   ├── BenchmarkDotNet.IntegrationTests.ManualRunning.csproj
    │   ├── DotMemoryTests.cs
    │   ├── DotTraceTests.cs
    │   ├── MsBuildArgumentTests.cs
    │   └── xunit.runner.json
    ├── BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks/
    │   ├── BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks.csproj
    │   └── MultipleFrameworksTest.cs
    ├── BenchmarkDotNet.IntegrationTests.Static/
    │   ├── BenchmarkClassWithStaticMethod.cs
    │   └── BenchmarkDotNet.IntegrationTests.Static.csproj
    ├── BenchmarkDotNet.IntegrationTests.VisualBasic/
    │   ├── BenchmarkDotNet.IntegrationTests.VisualBasic.vbproj
    │   └── Sample.vb
    ├── BenchmarkDotNet.Tests/
    │   ├── Analysers/
    │   │   ├── OutliersAnalyserTests.cs
    │   │   └── ZeroMeasurementHelperTests.cs
    │   ├── AppConfigGeneratorTests.cs
    │   ├── ArtifactFileNameHelperTests.cs
    │   ├── Attributes/
    │   │   ├── MutatorAttributesTests.cs
    │   │   ├── ParamsAllValuesVerifyTests.cs
    │   │   └── VerifiedFiles/
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt
    │   │       └── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt
    │   ├── BenchmarkDotNet.Tests.csproj
    │   ├── BenchmarkDotNetInfoTests.cs
    │   ├── BuildResultTests.cs
    │   ├── Builders/
    │   │   └── HostEnvironmentInfoBuilder.cs
    │   ├── CharacteristicPresenterTests.cs
    │   ├── CodeGeneratorTests.cs
    │   ├── Columns/
    │   │   ├── MetricColumnTests.cs
    │   │   ├── RatioColumnTest.cs
    │   │   ├── StatisticalTestColumnTests.cs
    │   │   └── TagColumnTests.cs
    │   ├── Common/
    │   │   └── AbsoluteEqualityComparer.cs
    │   ├── ConfigParserTests.cs
    │   ├── Configs/
    │   │   ├── CategoriesTests.cs
    │   │   ├── ConfigOptionsTests.cs
    │   │   ├── ConfigPerMethodTests.cs
    │   │   ├── ConfigUnionTests.cs
    │   │   ├── EnvironmentVariableTests.cs
    │   │   ├── ImmutableConfigTests.cs
    │   │   └── JobTests.cs
    │   ├── CorrectionsSuggesterTests.cs
    │   ├── CsProjGeneratorTests.cs
    │   ├── CsvHelperTests.cs
    │   ├── Detectors/
    │   │   └── Cpu/
    │   │       ├── CpuInfoFormatterTests.cs
    │   │       ├── LinuxCpuInfoParserTests.cs
    │   │       ├── PowershellWmiCpuInfoParserTests.cs
    │   │       ├── SysctlCpuInfoParserTests.cs
    │   │       ├── TestFiles/
    │   │       │   ├── ProcCpuInfoProcessorWithDifferentCoresCount.txt
    │   │       │   ├── ProcCpuInfoRealOneProcessorFourCores.txt
    │   │       │   ├── ProcCpuInfoRealOneProcessorTwoCores.txt
    │   │       │   ├── SysctlRealOneProcessorFourCores.txt
    │   │       │   └── ryzen9-cpuinfo.txt
    │   │       ├── TestHelper.cs
    │   │       ├── VerifiedFiles/
    │   │       │   └── CpuInfoFormatterTests.FormatTest.verified.txt
    │   │       └── WmicCpuInfoParserTests.cs
    │   ├── Disassemblers/
    │   │   └── GithubMarkdownDisassemblyExporterMultiCorerunTest.cs
    │   ├── Engine/
    │   │   ├── EngineActualStageTests.cs
    │   │   ├── EnginePilotStageTests.cs
    │   │   ├── EngineResultStageTests.cs
    │   │   ├── EngineWarmupStageTests.cs
    │   │   └── EnumerateStagesTests.cs
    │   ├── Environments/
    │   │   └── HostEnvironmentInfoTests.cs
    │   ├── EventPipeProfilerTests.cs
    │   ├── Exporters/
    │   │   ├── CommonExporterVerifyTests.cs
    │   │   ├── MarkdownExporterVerifyTests.cs
    │   │   ├── OpenMetricsExporterTests.cs
    │   │   ├── VerifiedFiles/
    │   │   │   ├── CommonExporterVerifyTests.Exporters_Invariant.verified.txt
    │   │   │   ├── CommonExporterVerifyTests.Exporters_en-US.verified.txt
    │   │   │   ├── CommonExporterVerifyTests.Exporters_ru-RU.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_HideColumns_TableMarkDown.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt
    │   │   │   ├── OpenMetricsExporterTests.LabelsAreEscapedCorrectly.verified.txt
    │   │   │   ├── OpenMetricsExporterTests.ParametrizedBenchmarks_LabelExpansion.verified.txt
    │   │   │   └── OpenMetricsExporterTests.SingleBenchmark_ProducesHelpAndTypeOnce.verified.txt
    │   │   └── XmlSerializerTests.cs
    │   ├── FolderNameTests.cs
    │   ├── FrameworkVersionHelperTests.cs
    │   ├── FullNameProviderTests.cs
    │   ├── GenericBuilderTests.cs
    │   ├── GlobFilterTests.cs
    │   ├── Helpers/
    │   │   └── LinuxOsReleaseHelperTests.cs
    │   ├── Infra/
    │   │   └── VerifyHelper.cs
    │   ├── Jobs/
    │   │   ├── JobIdGeneratorTests.cs
    │   │   └── JobIdTests.cs
    │   ├── KnownIssue.cs
    │   ├── LevenshteinDistanceCalculatorTests.cs
    │   ├── Loggers/
    │   │   ├── LoggerWithPrefixTests.cs
    │   │   └── OutputLogger.cs
    │   ├── Mathematics/
    │   │   ├── NumeralSystemTests.cs
    │   │   ├── RankTests.cs
    │   │   ├── RatioStatisticsTests.cs
    │   │   └── StatisticsTests.cs
    │   ├── Mocks/
    │   │   ├── MockClock.cs
    │   │   ├── MockEngine.cs
    │   │   ├── MockFactory.cs
    │   │   ├── MockRunner.cs
    │   │   └── Toolchain/
    │   │       └── MockToolchain.cs
    │   ├── MonoDisassemblyOutputParserTests.cs
    │   ├── Order/
    │   │   ├── DefaultOrdererTests.cs
    │   │   └── JobOrderTests.cs
    │   ├── ParameterComparerTests.cs
    │   ├── ParameterInstanceTests.cs
    │   ├── ParamsSourceTests.cs
    │   ├── Perfonar/
    │   │   ├── Infra/
    │   │   │   ├── PerfonarMock.cs
    │   │   │   └── PerfonarTestExtensions.cs
    │   │   ├── PerfonarTests.cs
    │   │   └── VerifiedFiles/
    │   │       ├── Perfonar.PerfonarIndexTest_key=default01.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default02.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default03.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default04.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default05.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=params01.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=sort01.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default01.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default02.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default03.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default04.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default05.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=params01.verified.txt
    │   │       └── Perfonar.PerfonarTableTest_key=sort01.verified.txt
    │   ├── Portability/
    │   │   ├── HyperVTests.cs
    │   │   ├── VMWareTests.cs
    │   │   └── VirtualBoxTests.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── BenchmarkDotNetInfoTests.cs
    │   ├── ReflectionTests.cs
    │   ├── Reports/
    │   │   ├── ColumnTests.cs
    │   │   ├── DefaultColumnProvidersTests.cs
    │   │   ├── DisplayPrecisionManagerTests.cs
    │   │   ├── FakeMetricDescriptor.cs
    │   │   ├── RatioPrecisionTests.cs
    │   │   ├── RatioStyleTests.cs
    │   │   ├── SummaryTableTests.cs
    │   │   └── SummaryTests.cs
    │   ├── Running/
    │   │   ├── BenchmarkConverterTests.BAC_Partial_DifferentFiles.cs
    │   │   ├── BenchmarkConverterTests.cs
    │   │   └── JobRuntimePropertiesComparerTests.cs
    │   ├── RuntimeVersionDetectionTests.cs
    │   ├── Serialization/
    │   │   ├── DisassemblerModelSerializationTests.cs
    │   │   └── SummaryJsonSerializationTests.cs
    │   ├── SourceCodeHelperTests.cs
    │   ├── StringExtensionsTests.cs
    │   ├── SummaryStyleTests.cs
    │   ├── TargetFrameworkVersionParsingTestscs.cs
    │   ├── TestCultureInfo.cs
    │   ├── TheoryDataHelper.cs
    │   ├── TypeFilterTests.cs
    │   ├── Validators/
    │   │   ├── CompilationValidatorTests.cs
    │   │   ├── DeferredExecutionValidatorTests.cs
    │   │   ├── ExecutionValidatorTests.cs
    │   │   ├── ParamsValidatorTests.cs
    │   │   ├── ReturnValueValidatorTests.cs
    │   │   ├── RuntimeValidatorTests.cs
    │   │   └── SetupCleanupValidatorTests.cs
    │   ├── XUnit/
    │   │   ├── EnvRequirement.cs
    │   │   ├── EnvRequirementChecker.cs
    │   │   ├── EnvRequirementCheckerTests.cs
    │   │   ├── FactEnvSpecific.cs
    │   │   ├── SmartAssert.cs
    │   │   └── TheoryEnvSpecific.cs
    │   ├── dotMemory/
    │   │   └── DotMemoryTests.cs
    │   ├── dotTrace/
    │   │   └── DotTraceTests.cs
    │   └── xunit.runner.json
    ├── CodeCoverage.config
    ├── Directory.Build.props
    ├── runClassicTests.cmd
    ├── runCoreTests.cmd
    └── runCoreTests.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Code of Conduct

This project has adopted the code of conduct defined by the [Contributor Covenant](http://contributor-covenant.org/)
to clarify expected behavior in our community.
For more information see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).

================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributions are welcome!

BenchmarkDotNet is already a stable full-featured library which allows performing performance investigation on a professional level.
And it continues to evolve!
We add new features all the time, but we have too many new cool ideas.
Any help will be appreciated.
You can develop new features, fix bugs, improve the documentation, or do some other cool stuff.

If you want to contribute, check out the
  [Contributing guide](http://benchmarkdotnet.org/Contributing.htm) and
  [up-for-grabs](https://github.com/dotnet/BenchmarkDotNet/issues?q=is:open+is:issue+label:up-for-grabs) issues.
If you have new ideas or want to complain about bugs, feel free to [create a new issue](https://github.com/dotnet/BenchmarkDotNet/issues/new).
Let's build the best tool for benchmarking together!

================================================
FILE: .github/FUNDING.yml
================================================
github: AndreyAkinshin


================================================
FILE: .github/workflows/generate-changelog.yaml
================================================
name: generate-changelog
run-name: Generate changelog / ${{ github.event.head_commit.message }}

on:
  push:
    branches:
      - master
  workflow_dispatch:

permissions: write-all

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:

    - name: Checkout
      uses: actions/checkout@v6
      with:
        ref: master

    - name: Checkout changelog
      uses: actions/checkout@v6
      with:
        ref: docs-changelog
        path: docs/_changelog

    - name: Fetch changelog
      run: ./build.cmd docs-fetch --depth 1 --preview
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Push changelog
      uses: JamesIves/github-pages-deploy-action@9d877eea73427180ae43cf98e8914934fe157a1a # v4.7.6
      with:
        branch: docs-changelog
        folder: docs/_changelog
        git-config-name: Andrey Akinshin
        git-config-email: andrey.akinshin@gmail.com
        clean: true


================================================
FILE: .github/workflows/generate-coverage-report.yaml
================================================
name: generate-coverage-report
run-name: Generate coverage coverage report  ${{ github.event.head_commit.message }}

on:
  workflow_dispatch:
    inputs:
      skip_integration_tests:
        type: boolean
        description: Set `true` to skip integration tests.
        default: true
        
concurrency:
  group: ${{ github.workflow }}-${{ github.event.inputs.skip_integration_tests }}-${{ github.head_ref || github.ref || github.run_id }}
  cancel-in-progress: true

jobs:
  collect-coverage:
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: pwsh
    strategy:
      matrix:
        # Note: ARM64 on linux/macos are not supported.
        # https://github.com/microsoft/codecoverage/blob/main/docs/supported-os.md
        os: [windows-latest, ubuntu-latest, macos-15-intel, windows-11-arm]
    steps:
      - uses: actions/checkout@v6

      # Ensure DOTNET_ROOT environment variable set on macos-15-intel 
      - uses: actions/setup-dotnet@v5
        with:
          dotnet-version: |
            8.x  

      - name: Install dotnet-coverage
        run: dotnet tool install --global dotnet-coverage

      - name: Run task 'build'
        run: dotnet build BenchmarkDotNet.slnx -c Release

      - name: Start dotnet-coverage with background server mode
        run: dotnet coverage collect --session-id bdn_coverage --settings tests/CodeCoverage.config --server-mode --background

      - name: Collect Code Coverage
        run: |
          dotnet coverage connect bdn_coverage "dotnet test tests/BenchmarkDotNet.Tests -c Release --no-build --framework net8.0"
          dotnet coverage connect bdn_coverage "dotnet test tests/BenchmarkDotNet.Analyzers.Tests  -c Release --no-build --framework net8.0"

      - name: Collect Code Coverage for BenchmarkDotNet.IntegrationTests 
        if: ${{ github.event.inputs.skip_integration_tests == 'false'}} 
        run: |
          dotnet coverage connect bdn_coverage 'dotnet test tests/BenchmarkDotNet.IntegrationTests -c Release --no-build --framework net8.0 --filter "(FullyQualifiedName!~DotMemoryTests) & (FullyQualifiedName!~DotTraceTests) & (FullyQualifiedName!~WasmIsSupported) & (FullyQualifiedName!~WasmSupportsInProcessDiagnosers)"'

      - name: Shutdown dotnet-coverage server.
        run: dotnet coverage shutdown bdn_coverage --timeout 60000

      - name: Upload coverage artifact
        uses: actions/upload-artifact@v6
        with:
          name: coverage-${{ matrix.os }}
          path: "**/*.cobertura.xml"

  collect-coverage-netfx:
    runs-on: windows-latest
    defaults:
      run:
        shell: pwsh
    steps:
      - uses: actions/checkout@v6

      - name: Install dotnet-coverage
        run: dotnet tool install --global dotnet-coverage

      - name: Run task 'build'
        run: dotnet build BenchmarkDotNet.slnx -c Release

      - name: Start dotnet-coverage with background server mode
        run: dotnet coverage collect --session-id bdn_coverage --settings tests/CodeCoverage.config --server-mode --background

      - name: Collect Code Coverage
        run: |
          dotnet coverage connect bdn_coverage "dotnet test tests/BenchmarkDotNet.Tests -c Release --no-build --framework net462"
          dotnet coverage connect bdn_coverage "dotnet test tests/BenchmarkDotNet.Analyzers.Tests  -c Release --no-build --framework net462"

      - name: Collect Code Coverage for BenchmarkDotNet.IntegrationTests 
        if: ${{ github.event.inputs.skip_integration_tests == 'false'}} 
        run: |
          dotnet coverage connect bdn_coverage 'dotnet test tests/BenchmarkDotNet.IntegrationTests -c Release --no-build --framework net462 --filter "(FullyQualifiedName!~DotMemoryTests) & (FullyQualifiedName!~DotTraceTests) & (FullyQualifiedName!~WasmIsSupported) & (FullyQualifiedName!~WasmSupportsInProcessDiagnosers)"'

      - name: Shutdown dotnet-coverage server.
        run: dotnet coverage shutdown bdn_coverage --timeout 60000

      - name: Upload coverage artifact
        uses: actions/upload-artifact@v6
        with:
          name: coverage-windows-netfx
          path: "**/*.cobertura.xml"

  generate-coverage-report:
    needs: [collect-coverage, collect-coverage-netfx]
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: pwsh
    steps:
      - uses: actions/checkout@v6

      - uses: actions/download-artifact@v6
        with:
          path: coverage

      - name: Upload raw coverage data
        uses: actions/upload-artifact@v6
        with:
          name: coverage
          path: coverage

      - name: Rewrite file path map to absolute path
        run: |
          $baseSourcePath = Get-Location
          $files =  [IO.Directory]::GetFiles("coverage", "coverage.cobertura.xml", [IO.SearchOption]::AllDirectories)
          foreach($file in $files)
          {
            $content = [IO.File]::ReadAllText($file).Replace("/_/", [Environment]::CurrentDirectory + '/')
            [IO.File]::WriteAllText($file, $content)
          }

      - name: Install ReportGenerator as global tool
        run: dotnet tool install --global dotnet-reportgenerator-globaltool

      - name: Geterate reports
        run: |
          reportgenerator `
            -reports:"coverage/**/coverage.cobertura.xml" `
            -targetdir:"coverage_report/reports" `
            -reporttypes:"Html;MarkdownSummaryGithub"

      - name: Create index.html
        run: |
          $html = @"
          <!DOCTYPE html>
          <html>
          <head>
            <meta http-equiv="refresh" content="0; url=reports/index.html">
            <title>Redirect</title>
          </head>
          <body>
            <p>If you are not redirected automatically, <a href="reports/index.html">click here</a>.</p>
          </body>
          </html>
          "@
          [IO.File]::WriteAllText("coverage_report/index.html", $html)

      - name: Write coverage summary
        run: |
          $markdown = Get-Content coverage_report/reports/SummaryGithub.md -Raw
          Write-Output $markdown >> $env:GITHUB_STEP_SUMMARY

      - name: Upload HTML report files
        uses: actions/upload-artifact@v6
        with:
          name: coverage_report
          path: coverage_report


================================================
FILE: .github/workflows/generate-gh-pages.yaml
================================================
name: generate-gh-pages
run-name: Generate gh-pages / ${{ github.event.head_commit.message }}

on:
  push:
    branches:
      - docs-stable
  workflow_dispatch:

permissions: write-all

jobs:
  generate:
    runs-on: windows-latest
    steps:

    - name: Checkout
      uses: actions/checkout@v6
      with:
        ref: docs-stable

    - name: Checkout changelog
      uses: actions/checkout@v6
      with:
        ref: docs-changelog
        path: docs/_changelog

    - name: Build BenchmarkDotNet
      run: ./build.cmd build

    - name: Fetch changelog
      run: ./build.cmd docs-fetch --depth 2 --preview
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Build documentation
      run: ./build.cmd docs-build

    - name: Upload Artifacts
      uses: actions/upload-artifact@v6
      with:
        name: site
        path: docs/_site

  deploy:
    concurrency: ci-${{ github.ref }}
    needs: [generate]
    runs-on: ubuntu-latest
    steps:

    - name: Checkout
      uses: actions/checkout@v6
      with:
        ref: docs-stable

    - name: Download Artifacts
      uses: actions/download-artifact@v7
      with:
        name: site
        path: site

    - name: Print file tree
      run: tree $GITHUB_WORKSPACE

    - name: Deploy documentation
      uses: JamesIves/github-pages-deploy-action@9d877eea73427180ae43cf98e8914934fe157a1a # v4.7.6
      with:
        branch: gh-pages
        folder: site
        git-config-name: GitHub Actions
        git-config-email: actions@github.com
        clean: true


================================================
FILE: .github/workflows/publish-nightly.yaml
================================================
name: publish-nightly
run-name: Publish nightly nupkg / ${{ github.event.head_commit.message }}

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  publish:
    runs-on: ubuntu-latest
    if: ${{ github.repository == 'dotnet/BenchmarkDotNet' }}
    steps:
      - uses: actions/checkout@v6
      - name: Set date
        run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
      - name: Pack
        run: ./build.cmd pack /p:VersionSuffix=nightly.$DATE.$GITHUB_RUN_NUMBER
      - name: Upload nupkg to artifacts
        uses: actions/upload-artifact@v6
        with:
          name: nupkgs
          path: "**/*.*nupkg"
      - name: Publish nupkg
        env:
          MYGET_API_KEY: ${{ secrets.MYGET_API_KEY }}
        run: ./.dotnet/dotnet nuget push **/*.nupkg --source https://www.myget.org/F/benchmarkdotnet/api/v3/index.json --api-key $MYGET_API_KEY --timeout 600


================================================
FILE: .github/workflows/release.yaml
================================================
name: release
run-name: Release new version

on:
  workflow_dispatch:

env:
  DOTNET_VERSION: "8.0.410"

jobs:
  release:
    runs-on: ubuntu-latest
    environment: deploy # Only maintainers can execute this workflow
    permissions:
      contents: write
      discussions: write
      issues: write
    steps:

    # --- Init ---

    - name: Checkout sources
      uses: actions/checkout@v6

    - name: Checkout changelog
      uses: actions/checkout@v6
      with:
        ref: docs-changelog
        path: docs/_changelog

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v5
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Read current version
      id: version
      run: echo "VERSION=$(grep -v '^$' build/versions.txt | tail -n 1)" >> $GITHUB_OUTPUT

    # --- Main ---

    - name: Tag release
      run: git tag v${{ steps.version.outputs.VERSION }}

    - name: Build
      run: ./build.cmd build --stable

    - name: Pack
      run: ./build.cmd pack --stable

    - name: Upload artifacts
      uses: actions/upload-artifact@v4
      with:
        name: nupkgs
        path: artifacts/*.nupkg

    # --- Analyzer Rules and Next Version ---

    - name: Move analyzer rules
      run: ./build.cmd move-analyzer-rules

    - name: Generate changelog
      run: ./build.cmd docs-generate --stable
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Version increment
      run: ./build.cmd version-increment

    - name: Commit changes
      uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
      with:
        message: "Set next BenchmarkDotNet version: ${{ steps.version.outputs.VERSION }} and update released analyzer rules"
        author_name: GitHub Actions
        author_email: actions@github.com
        committer_name: GitHub Actions
        committer_email: actions@github.com

    - name: Read next version
      id: next_version
      run: echo "NEXT_VERSION=$(grep -v '^$' build/versions.txt | tail -n 1)" >> $GITHUB_OUTPUT

    # --- Release ---

    - name: Push git changes
      uses: ad-m/github-push-action@77c5b412c50b723d2a4fbc6d71fb5723bcd439aa # v1.0.0
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        branch: master
        tags: true

    - name: Release
      uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
      with:
        name: BenchmarkDotNet v${{ steps.version.outputs.VERSION }}
        tag_name: v${{ steps.version.outputs.VERSION }}
        body: |
          Full changelog: https://benchmarkdotnet.org/changelog/v${{ steps.version.outputs.VERSION }}.html
        discussion_category_name: Announcements

    - name: Close old milestone
      uses: Akkjon/close-milestone@v2.2.0
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        milestone_name: v${{ steps.version.outputs.VERSION }}

    - name: Create new milestone
      uses: WyriHaximus/github-action-create-milestone@bcd9e15439836d6098d353a5bcf82de46591a35d # v1.1.2
      env:
        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
      with:
        title: v${{ steps.next_version.outputs.NEXT_VERSION }}

    - name: Publish to NuGet
      run: dotnet nuget push ./artifacts/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate

    # --- Documentation ---

    - name: Fetch changelog
      run: ./build.cmd docs-fetch --depth 2 --preview
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Generate changelog
      run: ./build.cmd docs-generate --preview
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

    - name: Push changelog
      uses: JamesIves/github-pages-deploy-action@v4
      with:
        branch: docs-changelog
        folder: docs/_changelog
        git-config-name: GitHub Actions
        git-config-email: actions@github.com
        clean: true

    - name: Build documentation
      run: ./build.cmd docs-build

    - name: Deploy documentation
      uses: JamesIves/github-pages-deploy-action@9d877eea73427180ae43cf98e8914934fe157a1a # v4.7.6
      with:
        branch: gh-pages
        folder: docs/_site
        git-config-name: GitHub Actions
        git-config-email: actions@github.com
        clean: true


================================================
FILE: .github/workflows/run-tests-selected.yaml
================================================
name: run-tests-selected
run-name: Run selected tests (${{ inputs.runs_on }} --framework ${{ inputs.framework}} --filter ${{ inputs.filter }})

on:
  workflow_dispatch:
    inputs:
      runs_on:
        type: choice
        description: GitHub Actions runner image name
        required: true
        default: ubuntu-latest
        options:
          - windows-latest
          - ubuntu-latest
          - macos-latest
          - windows-11-arm
          - ubuntu-24.04-arm
          - macos-15-intel
      project:
        type: string
        description: Specify test project path
        required: true
        default: tests/BenchmarkDotNet.IntegrationTests
        options:
          - tests/BenchmarkDotNet.Tests
          - tests/BenchmarkDotNet.IntegrationTests
          - tests/BenchmarkDotNet.IntegrationTests.ManualRunning
      framework:
        type: choice
        description: Specify target framework
        required: true
        options:
          - net8.0
          - net462
      filter:
        type: string
        description: Test filter text (It's used for `dotnet test --filter`) Use default value when running all tests
        required: true
        default: "BenchmarkDotNet"
      iteration_count:
        type: number
        description: Count of test loop (It's expected to be used for flaky tests)
        required: true
        default: 1

jobs:
  test:
    name: test (${{ inputs.runs_on }} --framework ${{ inputs.framework}} --filter ${{ inputs.filter }})
    runs-on: ${{ inputs.runs_on }}
    timeout-minutes: 60 # Explicitly set timeout. When wrong input parameter is passed. It may continue to run until it times out (Default:360 minutes))
    steps:
      - uses: actions/checkout@v4

      # Setup
      - name: Setup
        run: |
          mkdir artifacts

      - name: Install workloads
        run: |
          dotnet workload install wasm-tools
          dotnet workload install wasm-tools-net8

      - name: Set up node
        uses: actions/setup-node@v6
        with:
          node-version: "24"
      - name: Set up v8
        shell: pwsh
        run: |
          npm install jsvu -g
          jsvu --os=default --engines=v8

          $homeDir = $env:HOME
          if (-not $homeDir) {
              $homeDir = $env:USERPROFILE
          }

          Add-Content -Path $env:GITHUB_PATH -Value (Join-Path $homeDir ".jsvu/bin")

      # Build
      - name: Run build
        working-directory: ${{ github.event.inputs.project }}
        run: |
          dotnet build -c Release --framework ${{ inputs.framework }} -tl:off

      # Test
      - name: Run tests
        shell: pwsh
        working-directory: ${{ github.event.inputs.project }}
        run: |
          $PSNativeCommandUseErrorActionPreference = $true
          $iterationCount = ${{ inputs.iteration_count }}

          foreach($i in 1..$iterationCount) {
            Write-Output ('##[group]Executing Iteration: {0}/${{ inputs.iteration_count }}' -f $i)

            dotnet test -c Release --framework ${{ inputs.framework }} --filter ${{ inputs.filter }} -tl:off --no-build --logger "console;verbosity=normal"

            Write-Output '##[endgroup]'
          }

      # Upload artifact files that are located at `$(GITHUB_WORKSPACE)/artifacts` directory
      - name: Upload test results
        uses: actions/upload-artifact@v6
        if: always()
        with:
          name: results
          if-no-files-found: ignore
          path: |
            artifacts/**/*


================================================
FILE: .github/workflows/run-tests.yaml
================================================
name: run-tests
run-name: Run tests / ${{ github.event.head_commit.message }}

on:
  pull_request:
  push:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.ref || github.run_id }}
  cancel-in-progress: true

jobs:

  test-windows-core:
    strategy:
      matrix:
        os: [windows-latest, windows-11-arm]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Add Windows Defender Exclusions
        shell: powershell
        run: |
          Add-MpPreference -ExclusionPath $env:GITHUB_WORKSPACE
          Add-MpPreference -ExclusionPath $env:TEMP
      - uses: actions/checkout@v6
      # Setup wasm
      - name: Set up node
        uses: actions/setup-node@v6
        with:
          node-version: "24"
      - name: Set up v8
        run: |
          npm install jsvu -g
          jsvu --os=win64 --engines=v8
          Add-Content -Path $env:GITHUB_PATH -Value "$env:USERPROFILE\.jsvu\bin"
      - name: Install wasm-tools workload
        run: ./build.cmd install-wasm-tools
      # Build and Test
      - name: Run task 'build'
        shell: cmd
        run: ./build.cmd build
      - name: Run task 'unit-tests'
        shell: cmd
        run: ./build.cmd unit-tests -e
      - name: Run task 'analyzer-tests'
        shell: cmd
        run: ./build.cmd analyzer-tests -e
      - name: Run task 'in-tests-core'
        shell: cmd
        run: ./build.cmd in-tests-core -e
      # Report test results with unique name
      - name: Report tests results
        uses: dorny/test-reporter@fe45e9537387dac839af0d33ba56eed8e24189e8 # v2.3.0
        if: always()
        with:
          name: test-windows-core-${{ matrix.os }}
          path: "**/*.trx"
          reporter: dotnet-trx
      # Upload Artifacts with Unique Name
      - name: Upload test results
        uses: actions/upload-artifact@v6
        if: always()
        with:
          name: test-windows-core-trx-${{ github.run_id }}-${{ matrix.os }}
          path: "**/*.trx"

  test-windows-full:
    strategy:
      matrix:
        os: [windows-latest, windows-11-arm]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Add Windows Defender Exclusions
        shell: powershell
        run: |
          Add-MpPreference -ExclusionPath $env:GITHUB_WORKSPACE
          Add-MpPreference -ExclusionPath $env:TEMP
      - uses: actions/checkout@v6
      # Setup wasm
      - name: Set up node
        uses: actions/setup-node@v6
        with:
          node-version: "24"
      - name: Set up v8
        run: |
          npm install jsvu -g
          jsvu --os=win64 --engines=v8
          Add-Content -Path $env:GITHUB_PATH -Value "$env:USERPROFILE\.jsvu\bin"
      - name: Install wasm-tools workload
        run: ./build.cmd install-wasm-tools
      # Build and Test
      - name: Run task 'build'
        shell: cmd
        run: ./build.cmd build
      - name: Run task 'unit-tests'
        shell: cmd
        run: ./build.cmd unit-tests -e
      - name: Run task 'analyzer-tests'
        shell: cmd
        run: ./build.cmd analyzer-tests -e
      - name: Run task 'in-tests-full'
        shell: cmd
        run: ./build.cmd in-tests-full -e
      # Report test results with unique name
      - name: Report tests results
        uses: dorny/test-reporter@fe45e9537387dac839af0d33ba56eed8e24189e8 # v2.3.0
        if: always()
        with:
          name: test-windows-full-${{ matrix.os }}
          path: "**/*.trx"
          reporter: dotnet-trx
      # Upload Artifacts with Unique Name
      - name: Upload test results
        uses: actions/upload-artifact@v6
        if: always()
        with:
          name: test-windows-full-trx-${{ github.run_id }}-${{ matrix.os }}
          path: "**/*.trx"

  test-linux:
    strategy:
      matrix:
        os: [ubuntu-latest, ubuntu-24.04-arm]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v6
      # Set up the environment
      - name: Set up Clang
        uses: egor-tensin/setup-clang@ef434b41eb33a70396fb336b1bae39c76d740c3d # v1.4
        with:
          version: latest
          platform: x64
      - name: Set up zlib-static
        run: sudo apt-get install -y libkrb5-dev
      - name: Set up node
        uses: actions/setup-node@v6
        with:
          node-version: "24"
      - name: Set up v8
        run: npm install jsvu -g && jsvu --os=linux64 --engines=v8 && echo "$HOME/.jsvu/bin" >> $GITHUB_PATH
      - name: Install wasm-tools workload
        run: ./build.cmd install-wasm-tools
      # Build and Test
      - name: Run task 'build'
        run: ./build.cmd build
      - name: Run task 'analyzer-tests'
        run: ./build.cmd analyzer-tests -e
      - name: Run task 'unit-tests'
        run: ./build.cmd unit-tests -e
      - name: Run task 'in-tests-core'
        run: ./build.cmd in-tests-core -e
      # Report test results with unique name
      - name: Report tests results
        uses: dorny/test-reporter@fe45e9537387dac839af0d33ba56eed8e24189e8 # v2.3.0
        if: always()
        with:
          name: test-linux-${{ matrix.os }}
          path: "**/*.trx"
          reporter: dotnet-trx
      # Upload Artifacts with Unique Name
      - name: Upload test results
        uses: actions/upload-artifact@v6
        if: always()
        with:
          name: test-linux-trx-${{ github.run_id }}-${{ matrix.os }}
          path: "**/*.trx"

  test-macos:
    name: test-macos (${{ matrix.os.arch }})
    runs-on: ${{ matrix.os.runs-on }}
    strategy:
      matrix:
        os:
          - runs-on: 'macos-latest'
            jsvu-os: 'mac64arm'
            arch: 'arm64'
          - runs-on: 'macos-15-intel'
            jsvu-os: 'mac64'
            arch: 'x64'
    steps:
      - uses: actions/checkout@v6
      - name: Set up node
        uses: actions/setup-node@v6
        with:
          node-version: "24"
      - name: Set up v8
        run: npm install jsvu -g && jsvu --os=${{ matrix.os.jsvu-os }} --engines=v8 && echo "$HOME/.jsvu/bin" >> $GITHUB_PATH
      - name: Install wasm-tools workload
        run: ./build.cmd install-wasm-tools
      # Build and Test
      - name: Run task 'build'
        run: ./build.cmd build
      - name: Run task 'analyzer-tests'
        run: ./build.cmd analyzer-tests -e
      - name: Run task 'unit-tests'
        run: ./build.cmd unit-tests -e
      - name: Run task 'in-tests-core'
        run: ./build.cmd in-tests-core -e
      # Report test results with unique name
      - name: Report tests results
        uses: dorny/test-reporter@fe45e9537387dac839af0d33ba56eed8e24189e8 # v2.3.0
        if: always()
        with:
          name: test-macos(${{ matrix.os.arch }})
          path: "**/*.trx"
          reporter: dotnet-trx
      # Upload Artifacts with Unique Name
      - name: Upload test results
        uses: actions/upload-artifact@v6
        if: always()
        with:
          name: test-macos(${{ matrix.os.arch }})-trx-${{ github.run_id }}
          path: "**/*.trx"

  test-pack:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Set up Clang
        uses: egor-tensin/setup-clang@v1
        with:
          version: latest
          platform: x64
      - name: Set up zlib-static
        run: sudo apt-get install -y libkrb5-dev
      - name: Run task 'pack'
        run: ./build.cmd pack

  spellcheck-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        name: Setup node
        with:
          node-version: "24"
      - name: Install cSpell
        run: npm install -g cspell@9.0.2
      - name: Copy cSpell config
        run: cp ./build/cSpell.json ./cSpell.json
      - name: Run cSpell
        run: cspell --config ./cSpell.json "docs/**/*.md" --no-progress


================================================
FILE: .gitignore
================================================
# use glob syntax
syntax: glob

*.obj
*.pdb
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.lib
*.sbr
*.scc
[Bb]in
[Dd]ebug*/
obj/
[Rr]elease*/
_ReSharper*/
[Tt]humbs.db
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
*.resharper
*.received.txt
*.orig
packages/
nuget.exe
docs/guidehtml
docs/apihtml

.idea/
*.iml

**/BenchmarkDotNet.Artifacts/*
**/project.lock.json
tests/output/*
.vs/restore.dg
artifacts/*
BDN.Generated
BenchmarkDotNet.Samples/Properties/launchSettings.json
src/BenchmarkDotNet/Disassemblers/net462/*
src/BenchmarkDotNet/Disassemblers/BenchmarkDotNet.Disassembler.*.nupkg

# Visual Studio 2015 cache/options directory
.vs/

# VSCode directory
.vscode/

# Cake
tools/**
.dotnet

# Xamarin
Resource.designer.cs

# Tests
TestResults

## Mac OS

# General
.DS_Store
.AppleDouble
.LSOverride

# Thumbnails
._*


================================================
FILE: BenchmarkDotNet.slnx
================================================
<Solution>
  <Folder Name="/build/">
    <File Path="build/common.props" />
    <File Path="build/common.targets" />
  </Folder>
  <Folder Name="/samples/">
    <File Path="samples/Directory.Build.props" />
    <Project Path="samples/BenchmarkDotNet.Samples.FSharp/BenchmarkDotNet.Samples.FSharp.fsproj" />
    <Project Path="samples/BenchmarkDotNet.Samples/BenchmarkDotNet.Samples.csproj" DefaultStartup="true" />
  </Folder>
  <Folder Name="/src/">
    <Project Path="src/BenchmarkDotNet.Analyzers/BenchmarkDotNet.Analyzers.csproj" />
    <Project Path="src/BenchmarkDotNet.Annotations/BenchmarkDotNet.Annotations.csproj" />
    <Project Path="src/BenchmarkDotNet.Diagnostics.dotMemory/BenchmarkDotNet.Diagnostics.dotMemory.csproj" />
    <Project Path="src/BenchmarkDotNet.Diagnostics.dotTrace/BenchmarkDotNet.Diagnostics.dotTrace.csproj" />
    <Project Path="src/BenchmarkDotNet.Diagnostics.Windows/BenchmarkDotNet.Diagnostics.Windows.csproj" />
    <Project Path="src/BenchmarkDotNet.Disassembler/BenchmarkDotNet.Disassembler.csproj" />
    <Project Path="src/BenchmarkDotNet.Exporters.Plotting/BenchmarkDotNet.Exporters.Plotting.csproj" />
    <Project Path="src/BenchmarkDotNet.TestAdapter/BenchmarkDotNet.TestAdapter.csproj" />
    <Project Path="src/BenchmarkDotNet.Weaver/BenchmarkDotNet.Weaver.csproj" />
    <Project Path="src/BenchmarkDotNet/BenchmarkDotNet.csproj" />
  </Folder>
  <Folder Name="/templates/">
    <Project Path="templates/BenchmarkDotNet.Templates.csproj" />
  </Folder>
  <Folder Name="/tests/">
    <File Path="tests/Directory.Build.props" />
    <Project Path="tests/BenchmarkDotNet.Analyzers.Tests/BenchmarkDotNet.Analyzers.Tests.csproj" />
    <Project Path="tests/BenchmarkDotNet.Exporters.Plotting.Tests/BenchmarkDotNet.Exporters.Plotting.Tests.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.CustomPaths/BenchmarkDotNet.IntegrationTests.CustomPaths.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.DisabledOptimizations/BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.EnabledOptimizations/BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.FSharp/BenchmarkDotNet.IntegrationTests.FSharp.fsproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks/BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.ManualRunning/BenchmarkDotNet.IntegrationTests.ManualRunning.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.Static/BenchmarkDotNet.IntegrationTests.Static.csproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests.VisualBasic/BenchmarkDotNet.IntegrationTests.VisualBasic.vbproj" />
    <Project Path="tests/BenchmarkDotNet.IntegrationTests/BenchmarkDotNet.IntegrationTests.csproj" />
    <Project Path="tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj" />
  </Folder>
</Solution>



================================================
FILE: BenchmarkDotNet.slnx.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=highlightingLabelsScript_002Ejs/@EntryIndexedValue">True</s:Boolean>
	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=95F5D645_002D19E3_002D432F_002D95D4_002DC5EA374DD15B_002Fd_003AExporters_002Fd_003AJson_002Ff_003ASimpleJson_002Ecs/@EntryIndexedValue">ExplicitlyExcluded</s:String>
	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=95F5D645_002D19E3_002D432F_002D95D4_002DC5EA374DD15B_002Fd_003ATemplates/@EntryIndexedValue">ExplicitlyExcluded</s:String>
	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=95F5D645_002D19E3_002D432F_002D95D4_002DC5EA374DD15B_002Fd_003ATemplates_002Ff_003ABenchmarkProject_002Ejson/@EntryIndexedValue">ExplicitlyExcluded</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=AccessToStaticMemberViaDerivedType/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArgumentsStyleAnonymousFunction/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArgumentsStyleLiteral/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArgumentsStyleNamedExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArgumentsStyleOther/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArgumentsStyleStringLiteral/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeAccessorOwnerBody/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeConstructorOrDestructorBody/@EntryIndexedValue"></s:String>
	<s:Boolean x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeConstructorOrDestructorBody/@EntryIndexRemoved">True</s:Boolean>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeLocalFunctionBody/@EntryIndexedValue"></s:String>
	<s:Boolean x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeLocalFunctionBody/@EntryIndexRemoved">True</s:Boolean>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMethodOrOperatorBody/@EntryIndexedValue"></s:String>
	<s:Boolean x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMethodOrOperatorBody/@EntryIndexRemoved">True</s:Boolean>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToReturnStatement/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=InvertIf/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantArgumentDefaultValue/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantAttributeUsageProperty/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantExplicitTupleComponentName/@EntryIndexedValue">DO_NOT_SHOW</s:String>	
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RemoveRedundantBraces/@EntryIndexedValue"></s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SuggestBaseTypeForParameter/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ParameterTypeCanBeEnumerable_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ParameterTypeCanBeEnumerable_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ReturnTypeCanBeEnumerable_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ReturnTypeCanBeEnumerable_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
	<s:Boolean x:Key="/Default/CodeInspection/Highlighting/ReadSettingsFromFileLevel/@EntryValue">True</s:Boolean>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">NotRequired</s:String>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/CONSTRUCTOR_OR_DESTRUCTOR_BODY/@EntryValue">ExpressionBody</s:String>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/LOCAL_FUNCTION_BODY/@EntryValue">ExpressionBody</s:String>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/METHOD_OR_OPERATOR_BODY/@EntryValue">ExpressionBody</s:String>
	<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BLANK_LINES_AFTER_BLOCK_STATEMENTS/@EntryValue">0</s:Int64>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/EMPTY_BLOCK_STYLE/@EntryValue">TOGETHER_SAME_LINE</s:String>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_ATTRIBUTE_ARRANGEMENT/@EntryValue">True</s:Boolean>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_METHOD_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean>
	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_EMBEDDED_STATEMENT_ON_SAME_LINE/@EntryValue">NEVER</s:String>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_BEFORE_NEW_PARENTHESES/@EntryValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_WITHIN_SINGLE_LINE_ARRAY_INITIALIZER_BRACES/@EntryValue">True</s:Boolean>
	<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIMIT/@EntryValue">160</s:Int64>
	<s:String x:Key="/Default/CodeStyle/CSharpVarKeywordUsage/ForBuiltInTypes/@EntryValue">UseExplicitType</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ASCII/@EntryIndexedValue">ASCII</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GC/@EntryIndexedValue">GC</s:String>
	<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=BenchmarkDotNet/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="BenchmarkDotNet"&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" /&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;/Profile&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IL/@EntryIndexedValue">IL</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IO/@EntryIndexedValue">IO</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OSX/@EntryIndexedValue">OSX</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RT/@EntryIndexedValue">RT</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
	<s:Boolean x:Key="/Default/Environment/Filtering/ExcludeCoverageFilters/=_002A_003B_002A_003BJetBrains_002EAnnotations_002E_002A_003B_002A/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/Filtering/ExcludeCoverageFilters/=_002A_003B_002A_003BSimpleJson_002E_002A_003B_002A/@EntryIndexedValue">True</s:Boolean>
	<s:Int64 x:Key="/Default/Environment/Hierarchy/Build/BuildTool/MsbuildVersion/@EntryValue">983040</s:Int64>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EdotCover_002EIde_002ECore_002EFilterManagement_002EModel_002ESolutionFilterSettingsManagerMigrateSettings/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
    <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
    <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
	<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters&gt;&lt;Filter ModuleMask="*" ModuleVersionMask="*" ClassMask="JetBrains.Annotations.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="*" ModuleVersionMask="*" ClassMask="SimpleJson.*" FunctionMask="*" IsEnabled="True" /&gt;&lt;/ExcludeFilters&gt;&lt;/data&gt;</s:String>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Acpi/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Affinitize/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=affinitized/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Algo/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=appconfig/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=asciidoc/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Atlassian/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Autocorrect/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=barplot/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Baselining/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Benchmarked/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=boxplot/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Branchless/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=BYREF/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=canbenull/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Capitan/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=CODEFILENAME/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=codegen/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=comparers/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=COMPLUS/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=coreclr/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=corefx/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=corert/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=cpuinfo/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=csprojs/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ctors/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Diaconis/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Diagnoser/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Diagnoser_0027s/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Diagnosers/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=disasm/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Disassemblers/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Disassembly/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=dlls/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=DOCTYPE/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Dont/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=DONTTOUCH/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Epilog/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=excel_0027s/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ffbfd/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=fffffff/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=formattable/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=frac/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=fsproj/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=hacktastic/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=hardcode/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Hmmss/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Hpet/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Hypervisor/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=hypervisors/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ilcompiler/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=informations/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Infos/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=infty/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Inlining/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=intellisense/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Interquartile/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Invocator/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=iparam/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Jits/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=jitting/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Kurtosis/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ldarg/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ldloc/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=libc/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=LINQPAD/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=lscpu/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=macos/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=macrobenchmarks/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Maoni/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=microarchitecture/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=microarchitectures/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=microbenchmarking/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=mscorlib/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=mspperror/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Multimodal/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Multimodal/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=mutators/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=mvalue/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Mware/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=nano/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=netstandard/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=newguid/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=noconfig/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=noformat/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=nollvm/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=NONINFRINGEMENT/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=notcs/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=nuget/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=openmetrics/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=outofproc/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=parameterless/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Partitioner/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=pdbonly/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Perfolizer/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=perfonar/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=poco/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Prerelease/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Prettifier/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=profilesources/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Proj/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Prolog/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=pvalue/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Quadrimodal/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Redstone/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=reimplement/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=runtimes/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=ryzen/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=sgen/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=SHADOWCOPY/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Shortified/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=sitnik/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=sproj/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=stackoverflow/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=stddev/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=stloc/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Sturges/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=subfolder/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=subq/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Sysctl/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Sysname/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Tailcall/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=tailedness/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Tost/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=tracelog/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=transpiler/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=tukey/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=uname/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Unimodal/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=versioning/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=verylong/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=virtualbox/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Virtualization/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=vmware/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Warmup/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Wasm/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Welch/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Welch_0027s/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Wmic/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Workgroups/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=xproj/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=xprojs/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=xunit/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary>

================================================
FILE: LICENSE.md
================================================
### The MIT License

Copyright (c) 2013–2025 .NET Foundation and contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: NuGet.Config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageSources>
    <!--To inherit the global NuGet package sources remove the <clear/> line below -->
    <clear />

    <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
    <!-- required to run Mono AOT benchmarks -->
    <add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
    <add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
    <add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" />
    <add key="dotnet9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json" />
    <add key="dotnet10" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" />
    <add key="dotnet11" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11/nuget/v3/index.json" />

    <!-- required for Roslyn analyzers -->
	<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />

    <add key="benchmarkdotnet.weaver" value="src/BenchmarkDotNet.Weaver/packages" />
  </packageSources>
</configuration>


================================================
FILE: README.md
================================================
<div align="center">

  ![](https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/ec962b0bd6854c991d7a3ebd77037579165acb36/docs/logo/logo-wide.png)

</div>

<div align="center">

  [![NuGet](https://img.shields.io/nuget/v/BenchmarkDotNet.svg)](https://www.nuget.org/packages/BenchmarkDotNet/)
  [![MyGet](https://img.shields.io/myget/benchmarkdotnet/vpre/benchmarkdotnet?label=myget)](https://www.myget.org/feed/benchmarkdotnet/package/nuget/BenchmarkDotNet)
  [![Downloads](https://img.shields.io/nuget/dt/benchmarkdotnet.svg)](https://www.nuget.org/packages/BenchmarkDotNet/)
  [![Stars](https://img.shields.io/github/stars/dotnet/BenchmarkDotNet?color=brightgreen)](https://github.com/dotnet/BenchmarkDotNet/stargazers)
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/dotnet/BenchmarkDotNet/blob/master/LICENSE.md)
  [![Twitter](https://img.shields.io/twitter/follow/BenchmarkDotNet?style=social&label=Twitter)](https://twitter.com/BenchmarkDotNet)

</div>

<div align="center" style="font-size: 130%; margin-bottom: 20px">
  <a href="#features">Features</a>
  <span> · </span>
  <a href="https://benchmarkdotnet.org/articles/guides/getting-started.html">Getting started</a>
  <span> · </span>
  <a href="https://benchmarkdotnet.org/articles/overview.html">Documentation</a>
  <span> · </span>
  <a href="#learn-more-about-benchmarking">Learn more about benchmarking</a>
</div>

**BenchmarkDotNet** helps you to transform methods into benchmarks, track their performance, and share reproducible measurement experiments.
It's no harder than writing unit tests!
Under the hood, it performs a lot of [magic](#automation) that guarantees [reliable and precise](#reliability) results thanks to the [perfolizer](https://github.com/AndreyAkinshin/perfolizer) and [pragmastat](https://github.com/AndreyAkinshin/pragmastat) statistical engine.
BenchmarkDotNet protects you from popular benchmarking mistakes and warns you if something is wrong with your benchmark design or obtained measurements.
The results are presented in a [user-friendly](#friendliness) form that highlights all the important facts about your experiment.
BenchmarkDotNet is already adopted by [27400+ GitHub projects](https://github.com/dotnet/BenchmarkDotNet/network/dependents) including
  [.NET Runtime](https://github.com/dotnet/runtime),
  [.NET Compiler](https://github.com/dotnet/roslyn),
  [.NET Performance](https://github.com/dotnet/performance),
  and many others.

It's [easy](#simplicity) to start writing benchmarks, check out the following example
  (copy-pastable version is [here](https://benchmarkdotnet.org/articles/guides/getting-started.html)):

```cs
[SimpleJob(RuntimeMoniker.Net472, baseline: true)]
[SimpleJob(RuntimeMoniker.NetCoreApp30)]
[SimpleJob(RuntimeMoniker.NativeAot70)]
[SimpleJob(RuntimeMoniker.Mono)]
[RPlotExporter]
public class Md5VsSha256
{
    private SHA256 sha256 = SHA256.Create();
    private MD5 md5 = MD5.Create();
    private byte[] data;

    [Params(1000, 10000)]
    public int N;

    [GlobalSetup]
    public void Setup()
    {
        data = new byte[N];
        new Random(42).NextBytes(data);
    }

    [Benchmark]
    public byte[] Sha256() => sha256.ComputeHash(data);

    [Benchmark]
    public byte[] Md5() => md5.ComputeHash(data);
}
```

BenchmarkDotNet automatically
  runs the benchmarks on all the runtimes,
  aggregates the measurements,
  and prints a summary table with the most important information:

```md
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.17763.805 (1809/October2018Update/Redstone5)
Intel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
  [Host]       : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT
  Net472       : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT
  NetCoreApp30 : .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT
  NativeAot70  : .NET 7.0.0-preview.4.22172.7, X64 NativeAOT
  Mono         : Mono 6.4.0 (Visual Studio), X64


| Method |       Runtime |     N |       Mean |     Error |    StdDev | Ratio |
|------- |-------------- |------ |-----------:|----------:|----------:|------:|
| Sha256 |    .NET 4.7.2 |  1000 |   7.735 us | 0.1913 us | 0.4034 us |  1.00 |
| Sha256 | .NET Core 3.0 |  1000 |   3.989 us | 0.0796 us | 0.0745 us |  0.50 |
| Sha256 | NativeAOT 7.0 |  1000 |   4.091 us | 0.0811 us | 0.1562 us |  0.53 |
| Sha256 |          Mono |  1000 |  13.117 us | 0.2485 us | 0.5019 us |  1.70 |
|        |               |       |            |           |           |       |
|    Md5 |    .NET 4.7.2 |  1000 |   2.872 us | 0.0552 us | 0.0737 us |  1.00 |
|    Md5 | .NET Core 3.0 |  1000 |   1.848 us | 0.0348 us | 0.0326 us |  0.64 |
|    Md5 | NativeAOT 7.0 |  1000 |   1.817 us | 0.0359 us | 0.0427 us |  0.63 |
|    Md5 |          Mono |  1000 |   3.574 us | 0.0678 us | 0.0753 us |  1.24 |
|        |               |       |            |           |           |       |
| Sha256 |    .NET 4.7.2 | 10000 |  74.509 us | 1.5787 us | 4.6052 us |  1.00 |
| Sha256 | .NET Core 3.0 | 10000 |  36.049 us | 0.7151 us | 1.0025 us |  0.49 |
| Sha256 | NativeAOT 7.0 | 10000 |  36.253 us | 0.7076 us | 0.7571 us |  0.49 |
| Sha256 |          Mono | 10000 | 116.350 us | 2.2555 us | 3.0110 us |  1.58 |
|        |               |       |            |           |           |       |
|    Md5 |    .NET 4.7.2 | 10000 |  17.308 us | 0.3361 us | 0.4250 us |  1.00 |
|    Md5 | .NET Core 3.0 | 10000 |  15.726 us | 0.2064 us | 0.1930 us |  0.90 |
|    Md5 | NativeAOT 7.0 | 10000 |  15.627 us | 0.2631 us | 0.2461 us |  0.89 |
|    Md5 |          Mono | 10000 |  30.205 us | 0.5868 us | 0.6522 us |  1.74 |

```

The measured data can be exported to different formats (md, html, csv, xml, json, etc.) including plots:

![](https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/ec962b0bd6854c991d7a3ebd77037579165acb36/docs/images/v0.12.0/rplot.png)

*Supported runtimes:* .NET 5+, .NET Framework 4.6.1+, .NET Core 2.0+, Mono, NativeAOT  
*Supported languages:* C#, F#, Visual Basic  
*Supported OS:* Windows, Linux, macOS  
*Supported architectures:* x86, x64, ARM, ARM64, Wasm and LoongArch64

## Features

BenchmarkDotNet has tons of features that are essential in comprehensive performance investigations.
Four aspects define the design of these features:
  *simplicity*, *automation*, *reliability*, and *friendliness*.

### Simplicity

You shouldn't have to be an experienced performance engineer if you want to write benchmarks.
You can design very complicated performance experiments in the declarative style using simple APIs.

For example, if you want to [parameterize](https://benchmarkdotnet.org/articles/features/parameterization.html) your benchmark,
  mark a field or a property with `[Params(1, 2, 3)]`: BenchmarkDotNet will enumerate all of the specified values
  and run benchmarks for each case.
If you want to compare benchmarks with each other,
  mark one of the benchmarks as the [baseline](https://benchmarkdotnet.org/articles/features/baselines.html)
  via `[Benchmark(Baseline = true)]`: BenchmarkDotNet will compare it with all of the other benchmarks.
If you want to compare performance in different environments, use [jobs](https://benchmarkdotnet.org/articles/configs/jobs.html).
For example, you can run all the benchmarks on .NET 8.0 and Mono via
  `[SimpleJob(RuntimeMoniker.Net80)]` and `[SimpleJob(RuntimeMoniker.Mono)]`.

If you don't like attributes, you can call most of the APIs via the fluent style and write code like this:

```cs
ManualConfig.CreateEmpty() // A configuration for our benchmarks
    .AddJob(Job.Default // Adding first job
        .WithRuntime(ClrRuntime.Net472) // .NET Framework 4.7.2
        .WithPlatform(Platform.X64) // Run as x64 application
        .WithJit(Jit.LegacyJit) // Use LegacyJIT instead of the default RyuJIT
        .WithGcServer(true) // Use Server GC
    ).AddJob(Job.Default // Adding second job
        .AsBaseline() // It will be marked as baseline
        .WithEnvironmentVariable("Key", "Value") // Setting an environment variable
        .WithWarmupCount(0) // Disable warm-up stage
    );
```

If you prefer command-line experience, you can configure your benchmarks via
  the [console arguments](https://benchmarkdotnet.org/articles/guides/console-args.html)
  in any console application (other types of applications are not supported).

### Automation

Reliable benchmarks always include a lot of boilerplate code.

Let's think about what you should do in a typical case.
First, you should perform a pilot experiment and determine the best number of method invocations.
Next, you should execute several warm-up iterations and ensure that your benchmark achieved a steady state.
After that, you should execute the main iterations and calculate some basic statistics.
If you calculate some values in your benchmark, you should use it somehow to prevent dead code elimination.
If you use loops, you should care about the effect of the loop unrolling on your results
  (which may depend on the processor architecture).
Once you get results, you should check for some special properties of the obtained performance distribution
  like multimodality or extremely high outliers.
You should also evaluate the overhead of your infrastructure and deduct it from your results.
If you want to test several environments, you should perform the measurements in each of them and manually aggregate the results.

If you write this code from scratch, it's easy to make a mistake and spoil your measurements.
Note that it's a shortened version of the full checklist that you should follow during benchmarking:
  there are a lot of additional hidden pitfalls that should be handled appropriately.
Fortunately, you shouldn't worry about it because
  BenchmarkDotNet [will perform](https://benchmarkdotnet.org/articles/guides/how-it-works.html) this boring and time-consuming stuff for you.

Moreover, the library can help you with some advanced tasks that you may want to perform during the investigation.
For example,
  BenchmarkDotNet can measure the [managed](https://benchmarkdotnet.org/articles/configs/diagnosers.html#usage) and
  [native](https://benchmarkdotnet.org/articles/samples/IntroNativeMemory.html) memory traffic
  and print [disassembly listings](https://benchmarkdotnet.org/articles/configs/diagnosers.html#sample-introdisassembly) for your benchmarks.

### Reliability

A lot of hand-written benchmarks produce wrong numbers that lead to incorrect business decisions.
BenchmarkDotNet protects you from most of the benchmarking pitfalls and allows achieving high measurement precision.

You shouldn't worry about the perfect number of method invocation, the number of warm-up and actual iterations:
  BenchmarkDotNet tries to choose the best benchmarking parameters and
  achieve a good trade-off between the measurement prevision and the total duration of all benchmark runs.
So, you shouldn't use any magic numbers (like "We should perform 100 iterations here"),
  the library will do it for you based on the values of statistical metrics.

BenchmarkDotNet also prevents benchmarking of non-optimized assemblies that were built using DEBUG mode because
  the corresponding results will be unreliable.
The library will print a warning if you have an attached debugger,
  if you use a hypervisor (HyperV, VMware, VirtualBox),
  or if you have any other problems with the current environment.

During 6+ years of development, we faced dozens of different problems that may spoil your measurements.
Inside BenchmarkDotNet, there are a lot of heuristics, checks, hacks, and tricks that help you to
  increase the reliability of the results.

### Friendliness

Analysis of performance data is a time-consuming activity that requires attentiveness, knowledge, and experience.
BenchmarkDotNet performs the main part of this analysis for you and presents results in a user-friendly form.

After the experiments, you get a summary table that contains a lot of useful data about the executed benchmarks.
By default, it includes only the most important columns,
  but they can be [easily customized](https://benchmarkdotnet.org/articles/configs/columns.html).
The column set is adaptive and depends on the benchmark definition and measured values.
For example, if you mark one of the benchmarks as a [baseline](https://benchmarkdotnet.org/articles/features/baselines.html),
  you will get additional columns that will help you to compare all the benchmarks with the baseline.
By default, it always shows the Mean column,
  but if we detected a vast difference between the Mean and the Median values,
  both columns will be presented.

BenchmarkDotNet tries to find some unusual properties of your performance distributions and prints nice messages about it.
For example, it will warn you in case of multimodal distribution or high outliers.
In this case, you can scroll the results up and check out ASCII-style histograms for each distribution
  or generate beautiful png plots using `[RPlotExporter]`.

BenchmarkDotNet doesn't overload you with data; it shows only the essential information depending on your results:
  it allows you to keep the summary small for primitive cases and extend it only for complicated cases.
Of course, you can request any additional statistics and visualizations manually.
If you don't customize the summary view,
  the default presentation will be as much user-friendly as possible. :)

## Learn more about benchmarking

BenchmarkDotNet is not a silver bullet that magically makes all of your benchmarks correct and analyzes the measurements for you.
Even if you use this library, you still should know how to design benchmark experiments and how to make correct conclusions based on the raw data.
If you want to know more about benchmarking methodology and good practices,
  it's recommended to read a book by Andrey Akinshin (the BenchmarkDotNet project lead): ["Pro .NET Benchmarking"](https://aakinshin.net/prodotnetbenchmarking/).
Use this in-depth guide to correctly design benchmarks, measure key performance metrics of .NET applications, and analyze results.
This book presents dozens of case studies to help you understand complicated benchmarking topics.
You will avoid common pitfalls, control the accuracy of your measurements, and improve the performance of your software.

<div align="center">
  <a href="https://aakinshin.net/prodotnetbenchmarking/">
    <img src="https://aakinshin.net/img/misc/prodotnetbenchmarking-cover.png" width="400" />
  </a>
</div>

## Contributions are welcome!

BenchmarkDotNet is already a stable full-featured library that allows performing performance investigation on a professional level.
And it continues to evolve!
We add new features all the time, but we have too many new cool ideas.
Any help will be appreciated.
You can develop new features, fix bugs, improve the documentation, or do some other cool stuff.

If you want to contribute, check out the
  [Contributing guide](https://benchmarkdotnet.org/articles/contributing/building.html) and
  [up-for-grabs](https://github.com/dotnet/BenchmarkDotNet/issues?q=is:open+is:issue+label:up-for-grabs) issues.
If you have new ideas or want to complain about bugs, feel free to [create a new issue](https://github.com/dotnet/BenchmarkDotNet/issues/new).
Let's build the best tool for benchmarking together!

## Code of Conduct

This project has adopted the code of conduct defined by the [Contributor Covenant](https://www.contributor-covenant.org/)
to clarify expected behavior in our community.
For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).


================================================
FILE: build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Cake.Frosting" Version="6.0.0" />
    <PackageReference Include="Cake.FileHelpers" Version="7.0.0" />
    <PackageReference Include="Cake.Git" Version="5.0.1" />
    <PackageReference Include="Docfx.App" Version="2.78.5" />
    <PackageReference Include="Octokit" Version="14.0.0" />
  </ItemGroup>
</Project>


================================================
FILE: build/BenchmarkDotNet.Build/BuildContext.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using BenchmarkDotNet.Build.Helpers;
using BenchmarkDotNet.Build.Meta;
using BenchmarkDotNet.Build.Options;
using BenchmarkDotNet.Build.Runners;
using Cake.Common;
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.MSBuild;
using Cake.Core;
using Cake.Core.IO;
using Cake.FileHelpers;
using Cake.Frosting;

namespace BenchmarkDotNet.Build;

public class BuildContext : FrostingContext
{
    public string BuildConfiguration { get; set; } = "Release";
    public DotNetVerbosity BuildVerbosity { get; set; } = DotNetVerbosity.Minimal;

    public DirectoryPath RootDirectory { get; }
    public DirectoryPath BuildDirectory { get; }
    public DirectoryPath ArtifactsDirectory { get; }

    public FilePath SolutionFile { get; }
    public FilePath AnalyzersProjectFile { get; }
    public FilePath TemplatesTestsProjectFile { get; }
    public FilePathCollection AllPackableSrcProjects { get; }
    public FilePath VersionsFile { get; }
    public FilePath CommonPropsFile { get; }
    public FilePath ReadmeFile { get; }

    public DotNetMSBuildSettings MsBuildSettingsRestore { get; }
    public DotNetMSBuildSettings MsBuildSettingsBuild { get; }
    public DotNetMSBuildSettings MsBuildSettingsPack { get; }

    private bool IsCiBuild => !this.BuildSystem().IsLocalBuild;

    public IReadOnlyCollection<string> NuGetPackageNames { get; }

    public VersionHistory VersionHistory { get; }

    public GitRunner GitRunner { get; }
    public UnitTestRunner UnitTestRunner { get; }
    public DocumentationRunner DocumentationRunner { get; }
    public BuildRunner BuildRunner { get; }
    public ReleaseRunner ReleaseRunner { get; }

    public BuildContext(ICakeContext context)
        : base(context)
    {
        RootDirectory = new DirectoryPath(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent?.Parent?.FullName);
        BuildDirectory = RootDirectory.Combine("build");
        ArtifactsDirectory = RootDirectory.Combine("artifacts");

        var toolFileName = context.IsRunningOnWindows() ? "dotnet.exe" : "dotnet";
        var toolFilePath = RootDirectory.Combine(".dotnet").CombineWithFilePath(toolFileName);
        context.Tools.RegisterFile(toolFilePath);

        SolutionFile = RootDirectory.CombineWithFilePath("BenchmarkDotNet.slnx");
        AnalyzersProjectFile = RootDirectory.Combine("src").Combine("BenchmarkDotNet.Analyzers").CombineWithFilePath("BenchmarkDotNet.Analyzers.csproj");

        TemplatesTestsProjectFile = RootDirectory.Combine("templates")
            .CombineWithFilePath("BenchmarkDotNet.Templates.csproj");
        AllPackableSrcProjects = new FilePathCollection(context.GetFiles(RootDirectory.FullPath + "/src/**/*.csproj")
            .Where(p => !p.FullPath.Contains("Disassembler")));

        VersionsFile = BuildDirectory.CombineWithFilePath("versions.txt");
        CommonPropsFile = BuildDirectory.CombineWithFilePath("common.props");
        ReadmeFile = RootDirectory.CombineWithFilePath("README.md");

        MsBuildSettingsRestore = new DotNetMSBuildSettings();
        MsBuildSettingsBuild = new DotNetMSBuildSettings();
        MsBuildSettingsPack = new DotNetMSBuildSettings();

        if (IsCiBuild)
        {
            System.Environment.SetEnvironmentVariable("BDN_CI_BUILD", "true");

            MsBuildSettingsBuild.MaxCpuCount = 1;
            MsBuildSettingsBuild.WithProperty("UseSharedCompilation", "false");
        }


        if (context.Arguments.HasArgument("msbuild"))
        {
            var msBuildParameters = context.Arguments.GetArguments().First(it => it.Key == "msbuild").Value;
            foreach (var msBuildParameter in msBuildParameters)
            {
                var split = msBuildParameter.Split(new[] { '=' }, 2);
                if (split.Length == 2)
                {
                    var name = split[0];
                    var value = split[1];

                    MsBuildSettingsRestore.WithProperty(name, value);
                    MsBuildSettingsBuild.WithProperty(name, value);
                    MsBuildSettingsPack.WithProperty(name, value);

                    if (name.Equals("configuration", StringComparison.OrdinalIgnoreCase)) BuildConfiguration = value;

                    if (name.Equals("verbosity", StringComparison.OrdinalIgnoreCase))
                    {
                        var parsedVerbosity = Utils.ParseVerbosity(value);
                        if (parsedVerbosity != null)
                            BuildVerbosity = parsedVerbosity.Value;
                    }
                }
            }
        }

        if (KnownOptions.Stable.Resolve(this))
        {
            const string name = "NoVersionSuffix";
            const string value = "true";
            MsBuildSettingsRestore.WithProperty(name, value);
            MsBuildSettingsBuild.WithProperty(name, value);
            MsBuildSettingsPack.WithProperty(name, value);
        }

        // NativeAOT build requires VS C++ tools to be added to $path via vcvars64.bat
        // but once we do that, dotnet restore fails with:
        // "Please specify a valid solution configuration using the Configuration and Platform properties"
        if (context.IsRunningOnWindows())
        {
            MsBuildSettingsRestore.WithProperty("Platform", "Any CPU");
            MsBuildSettingsBuild.WithProperty("Platform", "Any CPU");
        }

        var nuGetPackageNames = new List<string>();
        nuGetPackageNames.AddRange(this
            .GetSubDirectories(RootDirectory.Combine("src"))
            .Select(directoryPath => directoryPath.GetDirectoryName())
            .Where(name => !name.Contains("Disassembler", StringComparison.OrdinalIgnoreCase)));
        nuGetPackageNames.Add("BenchmarkDotNet.Templates");
        nuGetPackageNames.Sort();
        NuGetPackageNames = nuGetPackageNames;

        VersionHistory = new VersionHistory(this, VersionsFile);

        GitRunner = new GitRunner(this);
        UnitTestRunner = new UnitTestRunner(this);
        DocumentationRunner = new DocumentationRunner(this);
        BuildRunner = new BuildRunner(this);
        ReleaseRunner = new ReleaseRunner(this);
    }

    public void GenerateFile(FilePath filePath, StringBuilder content)
    {
        GenerateFile(filePath, content.ToString());
    }

    public void GenerateFile(FilePath filePath, string content, bool reportNoChanges = false)
    {
        this.EnsureDirectoryExists(filePath.GetDirectory());
        var relativePath = RootDirectory.GetRelativePath(filePath);
        if (this.FileExists(filePath))
        {
            var oldContent = this.FileReadText(filePath);
            if (content == oldContent)
            {
                if (reportNoChanges)
                    this.Information("[NoChanges] " + relativePath);
                return;
            }

            this.FileWriteText(filePath, content);
            this.Information("[Updated] " + relativePath);
        }
        else
        {
            this.FileWriteText(filePath, content);
            this.Information("[Generated] " + relativePath);
        }
    }

    public void RunOnlyInPushMode(Action action)
    {
        if (KnownOptions.Push.Resolve(this))
        {
            action();
        }
        else
            this.Information("  Skip because PushMode is disabled");
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/CommandLineParser.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using BenchmarkDotNet.Build.Options;
using Cake.Frosting;

namespace BenchmarkDotNet.Build;

public class CommandLineParser
{
    private const string ScriptName = "build.cmd";

    private static readonly string CallScriptName =
        (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) ? ScriptName : "./" + ScriptName;

    public static readonly CommandLineParser Instance = new();

    public string[]? Parse(string[]? args)
    {
        if (args == null || args.Length == 0 || (args.Length == 1 && Is(args[0], "help", "--help", "-h")))
        {
            PrintHelp();
            return null;
        }

        if (Is(args[0], "cake"))
            return args.Skip(1).ToArray();

        var argsToProcess = new Queue<string>(args);

        var taskName = argsToProcess.Dequeue();
        if (Is(taskName, "-t", "--target") && argsToProcess.Any())
            taskName = argsToProcess.Dequeue();

        var taskNames = GetTaskNames();
        var matchedTaskName = taskNames
            .FirstOrDefault(name => string.Equals(name.Replace("-", ""), taskName.Replace("-", ""),
                StringComparison.OrdinalIgnoreCase));
        if (matchedTaskName == null)
        {
            PrintError($"'{taskName}' is not a task");
            return null;
        }

        taskName = matchedTaskName;

        if (argsToProcess.Count == 1 && Is(argsToProcess.Peek(), "-h", "--help"))
        {
            PrintTaskHelp(taskName);
            return null;
        }

        var cakeArgs = new List<string>
        {
            "--target",
            taskName
        };
        while (argsToProcess.Any())
        {
            var arg = argsToProcess.Dequeue();

            if (arg.StartsWith("/p:"))
            {
                cakeArgs.Add("--msbuild");
                cakeArgs.Add(arg[3..]);
                continue;
            }

            if (arg.StartsWith('-'))
            {
                cakeArgs.Add(arg);
                if (argsToProcess.Any() && !argsToProcess.Peek().StartsWith('-'))
                    cakeArgs.Add(argsToProcess.Dequeue());
                continue;
            }

            PrintError("Unknown option: " + arg);
            return null;
        }

        return cakeArgs.ToArray();
    }


    private readonly IOption[] baseOptions =
    {
        KnownOptions.Verbosity, KnownOptions.Exclusive, KnownOptions.Help, KnownOptions.Stable
    };

    private void PrintHelp()
    {
        WriteHeader("Description:");

        WritePrefix();
        WriteLine("BenchmarkDotNet build script");

        WriteLine();

        WriteHeader("Usage:");

        WritePrefix();
        Write(CallScriptName + " ");
        WriteTask("<TASK> ");
        WriteOption("[OPTIONS]");
        WriteLine();

        WriteLine();

        PrintExamples(GetTasks().SelectMany(task => task.HelpInfo.Examples).ToList());

        PrintOptions(baseOptions);

        WriteHeader("Tasks:");
        var taskWidth = GetTaskNames().Max(name => name.Length) + 3;
        foreach (var (taskName, taskDescription, _) in GetTasks())
        {
            if (taskName.Equals("Default", StringComparison.OrdinalIgnoreCase))
                continue;

            WriteTask("    " + taskName.PadRight(taskWidth));
            Write(taskDescription);

            WriteLine();
        }
    }

    private void PrintTaskHelp(string taskName)
    {
        var taskType = typeof(BuildContext).Assembly
            .GetTypes()
            .Where(type => type.IsSubclassOf(typeof(FrostingTask<BuildContext>)) && !type.IsAbstract)
            .First(type => Is(type.GetCustomAttribute<TaskNameAttribute>()?.Name, taskName));
        taskName = taskType.GetCustomAttribute<TaskNameAttribute>()!.Name;
        var taskDescription = taskType.GetCustomAttribute<TaskDescriptionAttribute>()?.Description ?? "";
        var helpInfo = GetHelpInfo(taskType);

        WriteHeader("Description:");

        WritePrefix();
        WriteLine(!string.IsNullOrWhiteSpace(taskDescription)
            ? $"Task '{taskName}': {taskDescription}"
            : $"Task '{taskName}'");

        if (!string.IsNullOrWhiteSpace(helpInfo.Description))
            foreach (var line in helpInfo.Description.Split('\n', StringSplitOptions.RemoveEmptyEntries))
            {
                WritePrefix();
                WriteLine(line.TrimEnd());
            }

        WriteLine();

        WriteHeader("Usage:");

        WritePrefix();
        Write(CallScriptName + " ");
        WriteTask(taskName + " ");
        WriteOption("[OPTIONS]");
        WriteLine();

        WriteLine();

        PrintExamples(helpInfo.Examples);

        PrintOptions(helpInfo.Options.Concat(baseOptions).ToArray());

        if (helpInfo.EnvironmentVariables.Any())
        {
            WriteHeader("Environment variables:");
            foreach (var envVar in helpInfo.EnvironmentVariables)
            {
                WritePrefix();
                WriteOption(envVar.Name);
                WriteLine();
            }
        }
    }

    private void PrintOptions(IOption[] options)
    {
        const string valuePlaceholder = "<VALUE>";

        WriteLine("Options:", ConsoleColor.DarkCyan);

        int GetWidth(IOption option)
        {
            int width = option.CommandLineName.Length;
            foreach (var alias in option.Aliases)
                width += 1 + alias.Length;
            if (option is StringOption)
                width += 1 + valuePlaceholder.Length;
            return width;
        }

        const int descriptionGap = 3;
        var maxWidth = options.Max(GetWidth) + descriptionGap;

        foreach (var option in options)
        {
            var allNames = option.Aliases.Append(option.CommandLineName).OrderBy(name => name.Length);
            var joinName = string.Join(',', allNames);

            WritePrefix();
            WriteOption(joinName);
            if (option is StringOption)
            {
                Write(" ");
                WriteArg(valuePlaceholder);
            }

            Write(new string(' ',
                maxWidth - joinName.Length - (option is StringOption ? valuePlaceholder.Length + 1 : 0)));
            var descriptionLines = option.Description.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
            Write(descriptionLines.FirstOrDefault() ?? "");
            for (int i = 1; i < descriptionLines.Length; i++)
            {
                WriteLine();
                WritePrefix();
                Write(new string(' ', maxWidth));
                Write(descriptionLines[i]);
            }

            WriteLine();
        }

        WritePrefix();
        WriteOption("/p:");
        WriteArg("<KEY>");
        WriteOption("=");
        WriteArg(valuePlaceholder);
        Write(new string(' ', maxWidth - "/p:<KEY>=".Length - valuePlaceholder.Length));
        Write("Passes custom properties to MSBuild");
        WriteLine();

        WriteLine();
    }

    private void PrintExamples(IReadOnlyList<Example> examples)
    {
        if (!examples.Any())
            return;
        WriteHeader("Examples:");

        foreach (var example in examples)
        {
            WritePrefix();
            Write(CallScriptName + " ");
            WriteTask(example.TaskName + " ");
            foreach (var (name, value, isMsBuild) in example.Arguments)
            {
                if (isMsBuild)
                {
                    WriteOption("/p:");
                    WriteArg(name);
                    WriteOption("=");
                    WriteArg(value + " ");
                }
                else
                {
                    WriteOption(name + " ");
                    if (value != null)
                        WriteArg(value + " ");
                }
            }

            WriteLine();
        }

        WriteLine();
    }

    private static HashSet<string> GetTaskNames()
    {
        return GetTasks().Select(task => task.Name).ToHashSet(StringComparer.OrdinalIgnoreCase);
    }

    private static List<(string Name, string Description, HelpInfo HelpInfo)> GetTasks()
    {
        return typeof(BuildContext).Assembly
            .GetTypes()
            .Where(type => type.IsSubclassOf(typeof(FrostingTask<BuildContext>)) && !type.IsAbstract)
            .Select(type => (
                Name: type.GetCustomAttribute<TaskNameAttribute>()?.Name ?? "",
                Description: type.GetCustomAttribute<TaskDescriptionAttribute>()?.Description ?? "",
                HelpInfo: GetHelpInfo(type)
            ))
            .Where(task => task.Name != "")
            .ToList();
    }

    private static HelpInfo GetHelpInfo(Type taskType)
    {
        return Activator.CreateInstance(taskType) is IHelpProvider helpProvider
            ? helpProvider.GetHelp()
            : new HelpInfo();
    }

    private static bool Is(string? arg, params string[] values) =>
        values.Any(value => value.Equals(arg, StringComparison.OrdinalIgnoreCase));

    private void PrintError(string text)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Error.WriteLine("ERROR: " + text);
        Console.WriteLine();
        Console.ResetColor();
        PrintHelp();
    }

    private void WritePrefix() => Write("    ");
    private void WriteTask(string message) => Write(message, ConsoleColor.Green);
    private void WriteOption(string message) => Write(message, ConsoleColor.Blue);
    private void WriteArg(string message) => Write(message, ConsoleColor.DarkYellow);
    private void WriteObsolete(string message) => Write(message, ConsoleColor.Gray);

    private void WriteHeader(string message)
    {
        WriteLine(message, ConsoleColor.DarkCyan);
    }

    private void Write(string message, ConsoleColor? color = null)
    {
        if (color != null)
            Console.ForegroundColor = color.Value;
        Console.Write(message);
        if (color != null)
            Console.ResetColor();
    }

    private void WriteLine(string message = "", ConsoleColor? color = null)
    {
        Write(message, color);
        Console.WriteLine();
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/EnvVar.cs
================================================
using System;

namespace BenchmarkDotNet.Build;

public class EnvVar
{
    public static readonly EnvVar GitHubToken = new("GITHUB_TOKEN");
    public static readonly EnvVar NuGetToken = new("NUGET_TOKEN");

    public string Name { get; }

    private EnvVar(string name) => Name = name;

    public string? GetValue() => Environment.GetEnvironmentVariable(Name);

    public void AssertHasValue()
    {
        if (string.IsNullOrEmpty(GetValue()))
            throw new Exception($"Environment variable '{Name}' is not specified!");
    }

    public void SetEmpty() => Environment.SetEnvironmentVariable(Name, "");
}

================================================
FILE: build/BenchmarkDotNet.Build/Example.cs
================================================
using System.Collections.Generic;
using BenchmarkDotNet.Build.Options;

namespace BenchmarkDotNet.Build;

public class Example
{
    private readonly List<Argument> arguments = new();

    public string TaskName { get; }
    public IReadOnlyCollection<Argument> Arguments => arguments;

    public Example(string taskName)
    {
        TaskName = taskName;
    }

    public Example WithMsBuildArgument(string name, string value)
    {
        arguments.Add(new Argument(name, value, true));
        return this;
    }

    public Example WithArgument(BoolOption option)
    {
        arguments.Add(new Argument(option.CommandLineName, null, false));
        return this;
    }

    public Example WithArgument(StringOption option, string value)
    {
        arguments.Add(new Argument(option.CommandLineName, value, false));
        return this;
    }


    public record Argument(string Name, string? Value, bool IsMsBuild);
}

================================================
FILE: build/BenchmarkDotNet.Build/Folder.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Nupkg/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

================================================
FILE: build/BenchmarkDotNet.Build/HelpInfo.cs
================================================
using System;
using BenchmarkDotNet.Build.Options;

namespace BenchmarkDotNet.Build;

public class HelpInfo
{
    public string Description { get; init; } = "";
    public IOption[] Options { get; init; } = Array.Empty<IOption>();
    public EnvVar[] EnvironmentVariables { get; init; } = Array.Empty<EnvVar>();
    public Example[] Examples { get; init; } = Array.Empty<Example>();
}

================================================
FILE: build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs
================================================
using System;
using System.Linq;
using Octokit;

namespace BenchmarkDotNet.Build.Helpers;

public static class OctokitExtensions
{
    public static string ToStr(this User? user, string prefix) => user != null
        ? $" ({prefix} [@{user.Login}]({user.HtmlUrl}))"
        : "";

    private static string ToStr(this Author? user, string prefix) => user != null
        ? $" ({prefix} {user.ToLink()})"
        : "";

    private static string ToStr(this Committer? user, string prefix) => user != null
        ? $" ({prefix} {user.Name})"
        : "";

    public static string ToLink(this Author user) => $"[@{user.Login}]({user.HtmlUrl})";

    public static string ToLinkWithName(this Author user, string name) => $"[@{user.Login} ({name})]({user.HtmlUrl})";

    public static string ToCommitMessage(this Commit commit)
    {
        var message = commit.Message.Trim().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
            .FirstOrDefault() ?? "";
        return message.Length > 80 ? message.Substring(0, 77) + "..." : message;
    }

    public static string ToLink(this GitHubCommit commit) => $"[{commit.Sha.Substring(0, 6)}]({commit.HtmlUrl})";

    public static string ToByStr(this GitHubCommit commit)
    {
        if (commit.Author != null)
            return commit.Author.ToStr("by");
        return commit.Commit.Author != null ? commit.Commit.Author.ToStr("by") : "";
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Helpers/Utils.cs
================================================
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using Cake.Common.Tools.DotNet;
using Octokit;

namespace BenchmarkDotNet.Build.Helpers;

public static class Utils
{
    public static string GetOs()
    {
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            return "linux";
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            return "windows";
        if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            return "macos";
        return "unknown";
    }

    public static DotNetVerbosity? ParseVerbosity(string verbosity)
    {
        var lookup = new Dictionary<string, DotNetVerbosity>(StringComparer.OrdinalIgnoreCase)
        {
            { "q", DotNetVerbosity.Quiet },
            { "quiet", DotNetVerbosity.Quiet },
            { "m", DotNetVerbosity.Minimal },
            { "minimal", DotNetVerbosity.Minimal },
            { "n", DotNetVerbosity.Normal },
            { "normal", DotNetVerbosity.Normal },
            { "d", DotNetVerbosity.Detailed },
            { "detailed", DotNetVerbosity.Detailed },
            { "diag", DotNetVerbosity.Diagnostic },
            { "diagnostic", DotNetVerbosity.Diagnostic }
        };
        return lookup.TryGetValue(verbosity, out var value) ? value : null;
    }

    public static GitHubClient CreateGitHubClient()
    {
        EnvVar.GitHubToken.AssertHasValue();

        var client = new GitHubClient(new ProductHeaderValue("BenchmarkDotNet"));
        var tokenAuth = new Credentials(EnvVar.GitHubToken.GetValue());
        client.Credentials = tokenAuth;
        return client;
    }

    public static string ApplyRegex(string content, string pattern, string newValue)
    {
        var regex = new Regex(pattern);
        var match = regex.Match(content);
        if (!match.Success)
            throw new Exception("Failed to apply regex");

        var oldValue = match.Groups[1].Value;
        return content.Replace(oldValue, newValue);
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/IHelpProvider.cs
================================================
namespace BenchmarkDotNet.Build;

public interface IHelpProvider
{
    HelpInfo GetHelp();
}

================================================
FILE: build/BenchmarkDotNet.Build/Meta/Repo.cs
================================================
using System;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace BenchmarkDotNet.Build.Meta;

public static class Repo
{
    public const string Owner = "dotnet";
    public const string Name = "BenchmarkDotNet";
    private const string HttpsUrlBase = $"https://github.com/{Owner}/{Name}";
    public const string SshGitUrl = $"git@github.com:{Owner}/{Name}.git";
    
    public const string ChangelogBranch = "docs-changelog";
    public const string DocsStableBranch = "docs-stable";
    public const string MasterBranch = "master";

    public const string MaintainerAuthorName = "GitHub Actions";
    public const string MaintainerAuthorEmail = "actions@github.com";
    
    public static async Task<int> GetDependentProjectsNumber()
    {
        using var httpClient = new HttpClient();
        const string url = $"{HttpsUrlBase}/network/dependents";
        var response = await httpClient.GetAsync(new Uri(url));
        var dependentsPage = await response.Content.ReadAsStringAsync();
        var match = new Regex(@"([0-9\,]+)[\n\r\s]+Repositories").Match(dependentsPage);
        var number = int.Parse(match.Groups[1].Value.Replace(",", ""));
        number = number / 100 * 100;
        return number;
    }

}

================================================
FILE: build/BenchmarkDotNet.Build/Meta/VersionHistory.cs
================================================
using System.Linq;
using Cake.Core.IO;
using Cake.FileHelpers;

namespace BenchmarkDotNet.Build.Meta;

public class VersionHistory
{
    public string FirstCommit { get; }
    public string[] StableVersions { get; }
    public string CurrentVersion { get; }
    
    public VersionHistory(BuildContext context, FilePath versionFilePath)
    {
        var lines = context.FileReadLines(versionFilePath).Where(line => !string.IsNullOrWhiteSpace(line)).ToArray();
        FirstCommit = lines.First();
        CurrentVersion = lines.Last();
        StableVersions = lines.Skip(1).SkipLast(1).ToArray();
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Options/BoolOption.cs
================================================
using System;

namespace BenchmarkDotNet.Build.Options;

public class BoolOption : Option<bool>
{
    public BoolOption(string commandLineName) : base(commandLineName)
    {
    }

    public override bool Resolve(BuildContext context)
    {
        if (!HasArgument(context))
            return false;
        var value = GetArgument(context);
        if (value == null)
            return true;
        return !value.Equals(false.ToString(), StringComparison.OrdinalIgnoreCase);
    }

    public void AssertTrue(BuildContext context)
    {
        var value = Resolve(context);
        if (!value)
            throw new Exception($"{CommandLineName} is not specified");
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Options/IOption.cs
================================================
namespace BenchmarkDotNet.Build.Options;

public interface IOption
{
    string CommandLineName { get; }
    string Description { get; }
    string[] Aliases { get; }
}

================================================
FILE: build/BenchmarkDotNet.Build/Options/KnownOptions.cs
================================================
namespace BenchmarkDotNet.Build.Options;

public static class KnownOptions
{
    public static readonly StringOption Verbosity = new("--verbosity"
    )
    {
        Description = "Specifies the amount of information to be displayed\n" +
                      "(Quiet, Minimal, Normal, Verbose, Diagnostic)",
        Aliases = new[] { "-v" }
    };

    public static readonly BoolOption Exclusive = new("--exclusive")
    {
        Description = "Executes the target task without any dependencies",
        Aliases = new[] { "-e" }
    };

    public static readonly BoolOption DocsPreview = new("--preview")
    {
        Description = "When specified, documentation changelog includes the upcoming version",
        Aliases = new[] { "-p" }
    };

    public static readonly StringOption DocsDepth = new("--depth")
    {
        Description = "The number of last stable versions that requires changelog regenerations\n" +
                      "Use 'all' for all values. The default is zero.",
        Aliases = new[] { "-d" }
    };

    public static readonly BoolOption ForceClone = new("--force-clone")
    {
        Description = "Forces re-cloning of the changelog repository, deleting any existing directory.",
        Aliases = new[] { "-f" }
    };

    public static readonly BoolOption Help = new("--help")
    {
        Description = "Prints help information",
        Aliases = new[] { "-h" }
    };

    public static readonly BoolOption Stable = new("--stable")
    {
        Description = "Removes VersionSuffix in MSBuild settings",
        Aliases = new[] { "-s" }
    };

    public static readonly StringOption NextVersion = new("--next-version")
    {
        Description = "Specifies next version number",
        Aliases = new[] { "-n" }
    };
    
    public static readonly BoolOption Push = new("--push")
    {
        Description = "When specified, the task actually perform push to GitHub and nuget.org"
    };
}

================================================
FILE: build/BenchmarkDotNet.Build/Options/Option.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using Cake.Common;
using Cake.Core;

namespace BenchmarkDotNet.Build.Options;

public abstract class Option<T> : IOption
{
    public string CommandLineName { get; }
    public string Description { get; init; } = "";
    public string[] Aliases { get; init; } = Array.Empty<string>();

    private IEnumerable<string> AllNames
    {
        get
        {
            yield return CommandLineName;
            foreach (var alias in Aliases)
                yield return alias;
        }
    }

    private IEnumerable<string> AllStrippedNames => AllNames.Select(name => name.TrimStart('-'));

    protected Option(string commandLineName)
    {
        CommandLineName = commandLineName;
    }

    public abstract T Resolve(BuildContext context);

    protected bool HasArgument(BuildContext context) => AllStrippedNames.Any(context.HasArgument);

    protected string? GetArgument(BuildContext context) => AllStrippedNames
        .Where(context.HasArgument)
        .Select(name => context.Arguments.GetArgument(name))
        .FirstOrDefault();
}

================================================
FILE: build/BenchmarkDotNet.Build/Options/StringOption.cs
================================================
using System;

namespace BenchmarkDotNet.Build.Options;

public class StringOption : Option<string>
{
    public StringOption(string commandLineName) : base(commandLineName)
    {
    }


    public override string Resolve(BuildContext context)
    {
        if (!HasArgument(context))
            return "";
        var value = GetArgument(context);
        if (value == null || string.IsNullOrWhiteSpace(value))
            return "";
        return value.Trim();
    }

    public string AssertHasValue(BuildContext context)
    {
        var value = Resolve(context);
        if (string.IsNullOrWhiteSpace(value))
            throw new Exception($"{CommandLineName} is not specified");
        return value;
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Program.cs
================================================
using BenchmarkDotNet.Build.Meta;
using BenchmarkDotNet.Build.Options;
using Cake.Common;
using Cake.Frosting;

namespace BenchmarkDotNet.Build;

public static class Program
{
    public static int Main(string[] args)
    {
        var cakeArgs = CommandLineParser.Instance.Parse(args);
        return cakeArgs == null
            ? 0
            : new CakeHost().UseContext<BuildContext>().Run(cakeArgs);
    }
}

[TaskName(Name)]
[TaskDescription("Pack Weaver")]
public class PackWeaverTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "pack-weaver";

    public override void Run(BuildContext context) => context.BuildRunner.PackWeaver();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples = new[]
            {
                new Example(Name)
            }
        };
    }
}

[TaskName(Name)]
[TaskDescription("Restore NuGet packages")]
[IsDependentOn(typeof(PackWeaverTask))]
public class RestoreTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "restore";

    public override void Run(BuildContext context) => context.BuildRunner.Restore();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Build BenchmarkDotNet.slnx solution")]
[IsDependentOn(typeof(RestoreTask))]
public class BuildTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "build";
    public override void Run(BuildContext context) => context.BuildRunner.Build();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name).WithMsBuildArgument("Configuration", "Debug")
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Install wasm-tools workload")]
public class InstallWasmToolsWorkload : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "install-wasm-tools";

    public override void Run(BuildContext context)
    {
        context.BuildRunner.InstallWorkload("wasm-tools-net8");
        context.BuildRunner.InstallWorkload("wasm-tools");
    }

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Run unit tests (fast)")]
[IsDependentOn(typeof(BuildTask))]
public class UnitTestsTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "unit-tests";
    public override void Run(BuildContext context) => context.UnitTestRunner.RunUnitTests();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
                    .WithArgument(KnownOptions.Exclusive)
                    .WithArgument(KnownOptions.Verbosity, "Diagnostic")
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Run analyzer tests")]
[IsDependentOn(typeof(BuildTask))]
public class AnalyzerTestsTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "analyzer-tests";
    public override void Run(BuildContext context) => context.UnitTestRunner.RunAnalyzerTests();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
                    .WithArgument(KnownOptions.Exclusive)
                    .WithArgument(KnownOptions.Verbosity, "Diagnostic")
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Run integration tests using .NET Framework 4.6.2+ (slow)")]
[IsDependentOn(typeof(BuildTask))]
public class InTestsFullTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "in-tests-full";

    public override bool ShouldRun(BuildContext context) => context.IsRunningOnWindows();

    public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net462");

    public HelpInfo GetHelp() => new();
}

[TaskName(Name)]
[TaskDescription("Run integration tests using .NET 8 (slow)")]
[IsDependentOn(typeof(BuildTask))]
public class InTestsCoreTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "in-tests-core";
    public override void Run(BuildContext context) => context.UnitTestRunner.RunInTests("net8.0");
    public HelpInfo GetHelp() => new();
}

[TaskName(Name)]
[TaskDescription("Run all unit, analyzer, and integration tests (slow)")]
[IsDependentOn(typeof(UnitTestsTask))]
[IsDependentOn(typeof(AnalyzerTestsTask))]
[IsDependentOn(typeof(InTestsFullTask))]
[IsDependentOn(typeof(InTestsCoreTask))]
public class AllTestsTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "all-tests";
    public HelpInfo GetHelp() => new();
}

[TaskName(Name)]
[TaskDescription("Build BenchmarkDotNet.Analyzers")]
public class BuildAnalyzersTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "build-analyzers";
    public override void Run(BuildContext context) => context.BuildRunner.BuildAnalyzers();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Move updated analyzer rules from unshipped to shipped file")]
public class MoveAnalyzerRulesTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "move-analyzer-rules";
    public override void Run(BuildContext context) => context.DocumentationRunner.MoveAnalyzerRules();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Pack Nupkg packages")]
[IsDependentOn(typeof(BuildTask))]
[IsDependentOn(typeof(BuildAnalyzersTask))]
public class PackTask : FrostingTask<BuildContext>, IHelpProvider
{
    public const string Name = "pack";
    public override void Run(BuildContext context) => context.BuildRunner.Pack();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Examples =
            [
                new Example(Name)
                    .WithMsBuildArgument("VersionPrefix", "0.1.1729")
                    .WithMsBuildArgument("VersionSuffix", "preview"),
                new Example(Name).WithArgument(KnownOptions.Stable)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Fetch changelog files")]
public class DocsFetchTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "docs-fetch";
    public override void Run(BuildContext context) => context.DocumentationRunner.Fetch();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Description = $"This task updates the following files:\n" +
                          $"* Clones or fetches branch 'docs-changelog' to docs/_changelog\n" +
                          $"* Last changelog footer (if {KnownOptions.Stable.CommandLineName} is specified)\n" +
                          $"* All changelog details in docs/_changelog\n" +
                          $"  (This dir is a cloned version of this repo from branch {Repo.ChangelogBranch})",
            Options = [KnownOptions.DocsPreview, KnownOptions.DocsDepth, KnownOptions.ForceClone],
            EnvironmentVariables = [EnvVar.GitHubToken],
            Examples =
            [
                new Example(Name)
                    .WithArgument(KnownOptions.DocsDepth, "3")
                    .WithArgument(KnownOptions.DocsPreview)
                    .WithArgument(KnownOptions.ForceClone)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Generate auxiliary documentation files")]
public class DocsGenerateTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "docs-generate";
    public override void Run(BuildContext context) => context.DocumentationRunner.Generate();

    public HelpInfo GetHelp()
    {
        return new HelpInfo
        {
            Options = [KnownOptions.DocsPreview, KnownOptions.Stable],
            Examples =
            [
                new Example(Name).WithArgument(KnownOptions.DocsPreview),
                new Example(Name).WithArgument(KnownOptions.Stable)
            ]
        };
    }
}

[TaskName(Name)]
[TaskDescription("Build final documentation")]
[IsDependentOn(typeof(DocsGenerateTask))]
public class DocsBuildTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "docs-build";
    public override void Run(BuildContext context) => context.DocumentationRunner.Build();

    public HelpInfo GetHelp() => new()
    {
        Description = "The 'build' task should be run manually to build api docs",
        Options = [KnownOptions.DocsPreview],
        Examples =
        [
            new Example(Name).WithArgument(KnownOptions.DocsPreview)
        ]
    };
}

[TaskName(Name)]
[TaskDescription("Increments the current version")]
public class VersionIncrementTask : FrostingTask<BuildContext>, IHelpProvider
{
    private const string Name = "version-increment";
    public override void Run(BuildContext context)
    {
        context.ReleaseRunner.VersionIncrement();
        context.BuildRunner.PackWeaver();
    }

    public HelpInfo GetHelp() => new()
    {
        Options = [KnownOptions.NextVersion],
        Examples =
        [
            new Example(Name),
            new Example(Name)
                .WithArgument(KnownOptions.NextVersion, "0.1.1729")
        ]
    };
}

[TaskName(Name)]
[TaskDescription("Release new version")]
[IsDependentOn(typeof(BuildTask))]
[IsDependentOn(typeof(PackTask))]
[IsDependentOn(typeof(DocsFetchTask))]
[IsDependentOn(typeof(DocsGenerateTask))]
[IsDependentOn(typeof(DocsBuildTask))]
public class ReleaseTask : FrostingTask<BuildContext>, IHelpProvider
{
    public const string Name = "release";
    public override void Run(BuildContext context) => context.ReleaseRunner.Run();

    public HelpInfo GetHelp() => new()
    {
        Options = [KnownOptions.NextVersion, KnownOptions.Push],
        EnvironmentVariables = [EnvVar.GitHubToken, EnvVar.NuGetToken],
        Examples =
        [
            new Example(Name)
                .WithArgument(KnownOptions.Stable)
                .WithArgument(KnownOptions.NextVersion, "0.1.1729")
                .WithArgument(KnownOptions.Push),
            new Example(Name)
                .WithArgument(KnownOptions.Stable)
                .WithArgument(KnownOptions.Push)
        ]
    };
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/BuildRunner.cs
================================================
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Build;
using Cake.Common.Tools.DotNet.Pack;
using Cake.Common.Tools.DotNet.Restore;
using Cake.Common.Tools.DotNet.Workload.Install;
using Cake.Core;
using Cake.Core.IO;
using System;
using System.IO;
using System.Linq;

namespace BenchmarkDotNet.Build.Runners;

public class BuildRunner
{
    private readonly BuildContext context;
    private readonly bool isFullPack;

    public BuildRunner(BuildContext context)
    {
        this.context = context;
        isFullPack = context.Arguments.GetArgument("target") is PackTask.Name or ReleaseTask.Name;
    }

    private void MaybeAppendArgument(DotNetSettings settings)
    {
        if (isFullPack)
        {
            settings.ArgumentCustomization = args => args.Append("-p:IsFullPack=true");
        }
    }

    public void PackWeaver()
    {
        var weaverPath = context.AllPackableSrcProjects.Single(p => p.GetFilename() == "BenchmarkDotNet.Weaver.csproj");
        var outputPackageDir = weaverPath.GetDirectory().Combine("packages");

        if (!isFullPack)
        {
            // Delete old package.
            foreach (var file in Directory.EnumerateFiles(outputPackageDir.FullPath))
            {
                File.Delete(file);
            }
        }

        var restoreSettings = new DotNetRestoreSettings
        {
            MSBuildSettings = context.MsBuildSettingsRestore,
        };
        MaybeAppendArgument(restoreSettings);
        context.DotNetRestore(weaverPath.GetDirectory().FullPath, restoreSettings);

        context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
        var buildSettings = new DotNetBuildSettings
        {
            NoRestore = true,
            DiagnosticOutput = true,
            MSBuildSettings = context.MsBuildSettingsBuild,
            Configuration = context.BuildConfiguration,
            Verbosity = context.BuildVerbosity
        };
        MaybeAppendArgument(buildSettings);
        context.DotNetBuild(weaverPath.FullPath, buildSettings);

        var packSettings = new DotNetPackSettings
        {
            OutputDirectory = outputPackageDir,
            MSBuildSettings = context.MsBuildSettingsPack,
            Configuration = context.BuildConfiguration
        };
        MaybeAppendArgument(packSettings);
        context.DotNetPack(weaverPath.FullPath, packSettings);
    }

    public void Restore()
    {
        var restoreSettings = new DotNetRestoreSettings
        {
            MSBuildSettings = context.MsBuildSettingsRestore,
        };
        MaybeAppendArgument(restoreSettings);
        context.DotNetRestore(context.SolutionFile.FullPath, restoreSettings);
    }

    public void InstallWorkload(string workloadId)
    {
        context.DotNetWorkloadInstall(workloadId,
            new DotNetWorkloadInstallSettings
            {
                IncludePreviews = true,
                NoCache = true
            });
    }

    public void Build()
    {
        context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
        var buildSettings = new DotNetBuildSettings
        {
            NoRestore = true,
            DiagnosticOutput = true,
            MSBuildSettings = context.MsBuildSettingsBuild,
            Configuration = context.BuildConfiguration,
            Verbosity = context.BuildVerbosity
        };
        MaybeAppendArgument(buildSettings);
        context.DotNetBuild(context.SolutionFile.FullPath, buildSettings);
    }

    public void BuildProjectSilent(FilePath projectFile)
    {
        var buildSettings = new DotNetBuildSettings
        {
            NoRestore = false,
            DiagnosticOutput = false,
            MSBuildSettings = context.MsBuildSettingsBuild,
            Configuration = context.BuildConfiguration,
            Verbosity = DotNetVerbosity.Quiet
        };
        MaybeAppendArgument(buildSettings);
        context.DotNetBuild(projectFile.FullPath, buildSettings);
    }

    public void BuildAnalyzers()
    {
        context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
        string[] mccVersions = ["2.8", "3.8", "4.8"];
        foreach (string version in mccVersions)
        {
            context.DotNetBuild(context.AnalyzersProjectFile.FullPath, new DotNetBuildSettings
            {
                NoRestore = true,
                DiagnosticOutput = true,
                MSBuildSettings = context.MsBuildSettingsBuild,
                Configuration = context.BuildConfiguration,
                Verbosity = context.BuildVerbosity,
                ArgumentCustomization = args => args.Append($"-p:MccVersion={version}")
            });
        }
    }

    public void Pack()
    {
        context.CleanDirectory(context.ArtifactsDirectory);

        var settingsSrc = new DotNetPackSettings
        {
            OutputDirectory = context.ArtifactsDirectory,
            ArgumentCustomization = args => args.Append("--include-symbols").Append("-p:SymbolPackageFormat=snupkg").Append("-p:IsFullPack=true"),
            MSBuildSettings = context.MsBuildSettingsPack,
            Configuration = context.BuildConfiguration
        };

        foreach (var project in context.AllPackableSrcProjects)
            context.DotNetPack(project.FullPath, settingsSrc);

        var settingsTemplate = new DotNetPackSettings
        {
            OutputDirectory = context.ArtifactsDirectory,
            MSBuildSettings = context.MsBuildSettingsPack,
            Configuration = context.BuildConfiguration
        };
        context.DotNetPack(context.TemplatesTestsProjectFile.FullPath, settingsTemplate);
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogBuilder.cs
================================================
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using BenchmarkDotNet.Build.Meta;
using BenchmarkDotNet.Build.Options;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Core.IO;
using Cake.FileHelpers;

namespace BenchmarkDotNet.Build.Runners.Changelog;

public class ChangelogBuilder
{
    private readonly BuildContext context;
    private readonly bool preview;
    private readonly string depth;
    private readonly bool forceClone;

    /// <summary>
    /// Directory with original changelog part files from branch 'docs-changelog'
    /// </summary>
    public DirectoryPath SrcDirectory { get; }

    /// <summary>
    /// Final changelog files to be used by docfx
    /// </summary>
    public DirectoryPath DocfxDirectory { get; }

    public ChangelogBuilder(BuildContext context)
    {
        this.context = context;
        preview = KnownOptions.DocsPreview.Resolve(context);
        depth = KnownOptions.DocsDepth.Resolve(context);
        forceClone = KnownOptions.ForceClone.Resolve(context);

        var docsDirectory = context.RootDirectory.Combine("docs");
        SrcDirectory = docsDirectory.Combine("_changelog");
        DocfxDirectory = docsDirectory.Combine("changelog");
    }

    public void Fetch()
    {
        EnvVar.GitHubToken.AssertHasValue();

        EnsureSrcDirectoryExist(forceClone);

        var history = context.VersionHistory;
        var stableVersionCount = history.StableVersions.Length;

        if (depth.Equals("all", StringComparison.OrdinalIgnoreCase))
        {
            FetchDetails(
                history.StableVersions.First(),
                history.FirstCommit);

            for (var i = 1; i < stableVersionCount; i++)
                FetchDetails(
                    history.StableVersions[i],
                    history.StableVersions[i - 1]);
        }
        else if (depth != "")
        {
            if (!int.TryParse(depth, CultureInfo.InvariantCulture, out var depthValue))
                throw new InvalidDataException($"Failed to parse the depth value: '{depth}'");

            for (var i = Math.Max(stableVersionCount - depthValue, 1); i < stableVersionCount; i++)
                FetchDetails(
                    history.StableVersions[i],
                    history.StableVersions[i - 1]);
        }

        if (preview)
            FetchDetails(
                history.CurrentVersion,
                history.StableVersions.Last(),
                "HEAD");
        
        context.GitRunner.AddAll(SrcDirectory);
        context.GitRunner.Commit("Update changelog", SrcDirectory);
    }

    private void FetchDetails(string version, string versionPrevious, string lastCommit = "")
    {
        EnsureSrcDirectoryExist();
        context.Information($"Downloading changelog details for v{version}");
        var detailsDirectory = SrcDirectory.Combine("details");
        ChangelogDetailsBuilder.Run(context, detailsDirectory, version, versionPrevious, lastCommit);
    }

    public void Generate()
    {
        GenerateLastHeader();
        GenerateLastFooter();

        foreach (var version in context.VersionHistory.StableVersions)
            GenerateVersion(version);
        if (preview)
            GenerateVersion(context.VersionHistory.CurrentVersion);

        GenerateIndex();
        GenerateFull();
        GenerateToc();
    }

    public void GenerateLastHeader()
    {
        var fileName = "v" + context.VersionHistory.CurrentVersion + ".md";
        var filePath = SrcDirectory.Combine("header").CombineWithFilePath(fileName);
        if (!context.FileExists(filePath))
        {
            var relativePath = context.RootDirectory.GetRelativePath(filePath);
            context.FileWriteText(filePath, "");
            context.Information("[Created] " + relativePath);
        }
    }

    public void GenerateLastFooter()
    {
        var version = context.VersionHistory.CurrentVersion;
        var previousVersion = context.VersionHistory.StableVersions.Last();
        var date = KnownOptions.Stable.Resolve(context)
            ? DateTime.Now.ToString("MMMM dd, yyyy", CultureInfo.InvariantCulture)
            : "TBA";

        var content = new StringBuilder();
        content.AppendLine($"_Date: {date}_");
        content.AppendLine("");
        content.AppendLine(
            $"_Milestone: [v{version}](https://github.com/dotnet/BenchmarkDotNet/issues?q=milestone%3Av{version})_");
        content.AppendLine(
            $"([List of commits](https://github.com/dotnet/BenchmarkDotNet/compare/v{previousVersion}...v{version}))");
        content.AppendLine("");
        content.AppendLine("_NuGet Packages:_");
        foreach (var packageName in context.NuGetPackageNames)
            content.AppendLine($"* https://www.nuget.org/packages/{packageName}/{version}");

        var fileName = "v" + context.VersionHistory.CurrentVersion + ".md";
        var filePath = SrcDirectory.Combine("footer").CombineWithFilePath(fileName);
        context.GenerateFile(filePath, content);
    }

    private void GenerateVersion(string version)
    {
        EnsureSrcDirectoryExist();
        var md = $"v{version}.md";
        var header = SrcDirectory.Combine("header").CombineWithFilePath(md);
        var footer = SrcDirectory.Combine("footer").CombineWithFilePath(md);
        var details = SrcDirectory.Combine("details").CombineWithFilePath(md);
        var release = DocfxDirectory.CombineWithFilePath(md);

        var content = new StringBuilder();
        content.AppendLine("---");
        content.AppendLine("uid: changelog.v" + version);
        content.AppendLine("---");
        content.AppendLine("");
        content.AppendLine("# BenchmarkDotNet v" + version);
        content.AppendLine("");
        content.AppendLine("");

        if (context.FileExists(header))
        {
            content.AppendLine(context.FileReadText(header));
            content.AppendLine("");
            content.AppendLine("");
        }

        if (context.FileExists(details))
        {
            content.AppendLine(context.FileReadText(details));
            content.AppendLine("");
            content.AppendLine("");
        }

        if (context.FileExists(footer))
        {
            content.AppendLine("## Additional details");
            content.AppendLine("");
            content.AppendLine(context.FileReadText(footer));
        }

        context.GenerateFile(release, content.ToString());
    }

    private void GenerateIndex()
    {
        var content = new StringBuilder();
        content.AppendLine("---");
        content.AppendLine("uid: changelog");
        content.AppendLine("---");
        content.AppendLine("");
        content.AppendLine("# ChangeLog");
        content.AppendLine("");
        if (preview)
            content.AppendLine($"* @changelog.v{context.VersionHistory.CurrentVersion}");
        foreach (var version in context.VersionHistory.StableVersions.Reverse())
            content.AppendLine($"* @changelog.v{version}");
        content.AppendLine("* @changelog.full");

        context.GenerateFile(DocfxDirectory.CombineWithFilePath("index.md"), content);
    }

    private void GenerateFull()
    {
        var content = new StringBuilder();
        content.AppendLine("---");
        content.AppendLine("uid: changelog.full");
        content.AppendLine("---");
        content.AppendLine("");
        content.AppendLine("# Full ChangeLog");
        content.AppendLine("");
        if (preview)
            content.AppendLine(
                $"[!include[v{context.VersionHistory.CurrentVersion}](v{context.VersionHistory.CurrentVersion}.md)]");
        foreach (var version in context.VersionHistory.StableVersions.Reverse())
            content.AppendLine($"[!include[v{version}](v{version}.md)]");

        context.GenerateFile(DocfxDirectory.CombineWithFilePath("full.md"), content);
    }

    private void GenerateToc()
    {
        var content = new StringBuilder();

        if (preview)
        {
            content.AppendLine($"- name: v{context.VersionHistory.CurrentVersion}");
            content.AppendLine($"  href: v{context.VersionHistory.CurrentVersion}.md");
        }

        foreach (var version in context.VersionHistory.StableVersions.Reverse())
        {
            content.AppendLine($"- name: v{version}");
            content.AppendLine($"  href: v{version}.md");
        }

        content.AppendLine("- name: Full ChangeLog");
        content.AppendLine("  href: full.md");

        context.GenerateFile(DocfxDirectory.CombineWithFilePath("toc.yml"), content);
    }

    private void EnsureSrcDirectoryExist(bool forceClone = false)
    {
        void Log(string message) => context.Information($"[Changelog] {message}");

        if (context.DirectoryExists(SrcDirectory) && forceClone)
        {
            Log($"Directory '{SrcDirectory}' already exists and forceClean is specified. " +
                $"Deleting the current directory...");
            context.DeleteDirectory(
                SrcDirectory,
                new DeleteDirectorySettings { Force = true, Recursive = true });
            Log($"Directory '{SrcDirectory}' deleted successfully.");
        }

        if (!context.DirectoryExists(SrcDirectory))
        {
            Log($"Cloning branch '{Repo.ChangelogBranch}' from '{Repo.SshGitUrl}' to '{SrcDirectory}'.");
            context.GitRunner.Clone(SrcDirectory, Repo.SshGitUrl, Repo.ChangelogBranch);
            Log($"Clone completed: '{Repo.ChangelogBranch}' -> '{SrcDirectory}'.");
        }
        else if (forceClone)
        {
            Log($"Fetching branch '{Repo.ChangelogBranch}' from '{Repo.SshGitUrl}' to '{SrcDirectory}'.");
            context.GitRunner.Pull(SrcDirectory);
            Log($"Fetch completed: '{Repo.ChangelogBranch}' -> '{SrcDirectory}'.");
        }
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogDetailsBuilder.cs
================================================
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BenchmarkDotNet.Build.Helpers;
using BenchmarkDotNet.Build.Meta;
using Cake.Common.Diagnostics;
using Cake.Core.IO;
using Octokit;

namespace BenchmarkDotNet.Build.Runners.Changelog;

public static class ChangelogDetailsBuilder
{
    private class Config(string currentVersion, string previousVersion, string lastCommit)
    {
        public string CurrentVersion { get; } = currentVersion;
        public string PreviousVersion { get; } = previousVersion;
        public string LastCommit { get; } = lastCommit;

        public void Deconstruct(out string currentMilestone, out string previousMilestone, out string lastCommit)
        {
            currentMilestone = CurrentVersion;
            previousMilestone = PreviousVersion;
            lastCommit = LastCommit;
        }
    }

    private class MarkdownBuilder
    {
        private static IReadOnlyList<Milestone>? allMilestones;
        private static readonly Dictionary<string, string> AuthorNames = new();

        private readonly Config config;
        private readonly StringBuilder builder;

        public static async Task<string> Build(Config config)
        {
            return await new MarkdownBuilder(config).Build();
        }

        private MarkdownBuilder(Config config)
        {
            this.config = config;
            builder = new StringBuilder();
        }

        private async Task<string> Build()
        {
            var (currentVersion, previousVersion, lastCommit) = config;
            if (string.IsNullOrEmpty(lastCommit))
                lastCommit = $"v{currentVersion}";

            var client = Utils.CreateGitHubClient();

            if (currentVersion == "_")
            {
                var allContributors = await client.Repository.GetAllContributors(Repo.Owner, Repo.Name);
                builder.AppendLine("# All contributors");
                builder.AppendLine();
                foreach (var contributor in allContributors)
                {
                    var user = await client.User.Get(contributor.Login);
                    var name = user?.Name;
                    builder.AppendLine("* " + (string.IsNullOrEmpty(name)
                        ? contributor.ToLink()
                        : contributor.ToLinkWithName(name)));
                }

                return builder.ToString();
            }

            if (allMilestones == null)
            {
                var milestoneRequest = new MilestoneRequest
                {
                    State = ItemStateFilter.All
                };
                allMilestones =
                    await client.Issue.Milestone.GetAllForRepository(Repo.Owner, Repo.Name, milestoneRequest);
            }

            IReadOnlyList<Issue> allIssues = Array.Empty<Issue>();
            var targetMilestone = allMilestones.FirstOrDefault(m => m.Title == $"v{currentVersion}");
            if (targetMilestone != null)
            {
                var issueRequest = new RepositoryIssueRequest
                {
                    State = ItemStateFilter.Closed,
                    Milestone = targetMilestone.Number.ToString()
                };

                allIssues = await client.Issue.GetAllForRepository(Repo.Owner, Repo.Name, issueRequest);
            }

            var issues = allIssues
                .Where(issue => issue.PullRequest == null)
                .OrderBy(issue => issue.Number)
                .ToList();
            var pullRequests = allIssues
                .Where(issue => issue.PullRequest != null)
                .OrderBy(issue => issue.Number)
                .ToList();

            var compare =
                await client.Repository.Commit.Compare(Repo.Owner, Repo.Name, $"v{previousVersion}", lastCommit);
            var commits = compare.Commits;

            foreach (var contributor in commits.Select(commit => commit.Author))
                if (contributor != null && !AuthorNames.ContainsKey(contributor.Login))
                {
                    var user = await client.User.Get(contributor.Login);
                    var name = user?.Name;
                    AuthorNames[contributor.Login] = string.IsNullOrWhiteSpace(name) ? contributor.Login : name;
                }

            string PresentContributor(GitHubCommit commit)
            {
                if (commit.Author != null)
                    return $"{AuthorNames[commit.Author.Login]} ({commit.Author.ToLink()})".Trim();
                return commit.Commit.Author.Name;
            }

            var contributors = compare.Commits
                .Select(PresentContributor)
                .OrderBy(it => it)
                .Distinct()
                .ToImmutableList();

            var milestoneHtmlUlr = $"https://github.com/{Repo.Owner}/{Repo.Name}/issues?q=milestone:v{currentVersion}";

            builder.AppendLine("## Milestone details");
            builder.AppendLine();
            builder.AppendLine($"In the [v{currentVersion}]({milestoneHtmlUlr}) scope, ");
            builder.Append(issues.Count + " issues were resolved and ");
            builder.AppendLine(pullRequests.Count + " pull requests were merged.");
            builder.AppendLine($"This release includes {commits.Count} commits by {contributors.Count} contributors.");
            builder.AppendLine();

            AppendList("Resolved issues", issues, issue =>
                $"[#{issue.Number}]({issue.HtmlUrl}) {issue.Title.Trim()}{issue.Assignee.ToStr("assignee:")}");
            AppendList("Merged pull requests", pullRequests, pr =>
                $"[#{pr.Number}]({pr.HtmlUrl}) {pr.Title.Trim()}{pr.User.ToStr("by")}");
            AppendList("Commits", commits, commit =>
                $"{commit.ToLink()} {commit.Commit.ToCommitMessage()}{commit.ToByStr()}");
            AppendList("Contributors", contributors, it => it, "Thank you very much!");

            return builder.ToString();
        }

        private void AppendList<T>(string title, IReadOnlyList<T> items, Func<T, string> format,
            string? conclusion = null)
        {
            builder.AppendLine($"## {title} ({items.Count})");
            builder.AppendLine();
            foreach (var item in items)
                builder.AppendLine("* " + format(item));
            if (!string.IsNullOrWhiteSpace(conclusion))
            {
                builder.AppendLine();
                builder.AppendLine(conclusion);
            }

            builder.AppendLine();
        }
    }

    public static void Run(BuildContext context, DirectoryPath path,
        string currentVersion, string previousVersion, string lastCommit)
    {
        try
        {
            var config = new Config(currentVersion, previousVersion, lastCommit);
            var releaseNotes = MarkdownBuilder.Build(config).Result;
            context.GenerateFile(path.Combine($"v{config.CurrentVersion}.md").FullPath, releaseNotes, true);
        }
        catch (Exception e)
        {
            context.Error(e.ToString());
        }
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs
================================================
using System.IO;
using System.Linq;
using System.Text;
using BenchmarkDotNet.Build.Helpers;
using BenchmarkDotNet.Build.Meta;
using BenchmarkDotNet.Build.Options;
using BenchmarkDotNet.Build.Runners.Changelog;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Core.IO;
using Cake.FileHelpers;

namespace BenchmarkDotNet.Build.Runners;

public class DocumentationRunner
{
    private readonly BuildContext context;
    private readonly ChangelogBuilder changelogBuilder;
    private readonly DirectoryPath docsGeneratedDirectory;

    private readonly FilePath docfxJsonFile;
    private readonly FilePath redirectFile;
    private readonly FilePath readmeFile;
    private readonly FilePath rootIndexFile;
    private readonly FilePath analyzersShippedFile;
    private readonly FilePath analyzersUnshippedFile;
    private readonly FilePath analyzersPageFile;

    public DirectoryPath ChangelogSrcDirectory => changelogBuilder.SrcDirectory;

    public DocumentationRunner(BuildContext context)
    {
        this.context = context;
        changelogBuilder = new ChangelogBuilder(context);

        var docsDirectory = context.RootDirectory.Combine("docs");
        docsGeneratedDirectory = docsDirectory.Combine("_site");
        redirectFile = docsDirectory.Combine("_redirects").CombineWithFilePath("_redirects");
        docfxJsonFile = docsDirectory.CombineWithFilePath("docfx.json");
        readmeFile = context.RootDirectory.CombineWithFilePath("README.md");
        rootIndexFile = docsDirectory.CombineWithFilePath("index.md");

        var analyzersDirectory = context.RootDirectory.Combine("src").Combine("BenchmarkDotNet.Analyzers");
        analyzersShippedFile = analyzersDirectory.CombineWithFilePath("AnalyzerReleases.Shipped.md");
        analyzersUnshippedFile = analyzersDirectory.CombineWithFilePath("AnalyzerReleases.Unshipped.md");
        analyzersPageFile = docsDirectory.Combine("articles").CombineWithFilePath("analyzers.md");
    }

    public void MoveAnalyzerRules()
    {
        if (new FileInfo(analyzersUnshippedFile.FullPath).Length == 0)
        {
            return;
        }

        string tempFile = System.IO.Path.GetTempFileName();
        using (var writer = new StreamWriter(tempFile))
        {
            writer.WriteLine($"## v{context.VersionHistory.CurrentVersion}");
            CopyLines(writer, analyzersUnshippedFile);
            writer.WriteLine();
            writer.WriteLine();
            CopyLines(writer, analyzersShippedFile);
        }

        File.Delete(analyzersShippedFile.FullPath);
        File.Move(tempFile, analyzersShippedFile.FullPath);
        File.WriteAllText(analyzersUnshippedFile.FullPath, string.Empty);
    }

    public void Fetch()
    {
        EnvVar.GitHubToken.AssertHasValue();
        changelogBuilder.Fetch();
    }

    public void Generate()
    {
        GenerateAnalyzersPage();

        changelogBuilder.Generate();

        UpdateReadme();
        GenerateIndexMd();
    }

    public void Build()
    {
        RunDocfx();
        GenerateRedirects();
    }

    private void UpdateReadme()
    {
        var content = Utils.ApplyRegex(
            context.FileReadText(context.ReadmeFile),
            @"\[(\d+)\+ GitHub projects\]",
            Repo.GetDependentProjectsNumber().Result.ToString()
        );

        context.GenerateFile(context.ReadmeFile, content, true);
    }


    private void RunDocfx()
    {
        context.Information($"Running docfx for '{docfxJsonFile}'");

        var currentDirectory = Directory.GetCurrentDirectory();
        Directory.SetCurrentDirectory(docfxJsonFile.GetDirectory().FullPath);
        Docfx.Dotnet.DotnetApiCatalog.GenerateManagedReferenceYamlFiles(docfxJsonFile.FullPath).Wait();
        Docfx.Docset.Build(docfxJsonFile.FullPath).Wait();
        Directory.SetCurrentDirectory(currentDirectory);
    }

    private void GenerateIndexMd()
    {
        var content = new StringBuilder();
        content.AppendLine("---");
        content.AppendLine("title: Home");
        content.AppendLine("---");
        content.Append(context.FileReadText(readmeFile));

        context.GenerateFile(rootIndexFile, content);
    }

    private void GenerateAnalyzersPage()
    {
        context.EnsureDirectoryExists(analyzersPageFile.GetDirectory());
        using var writer = new StreamWriter(analyzersPageFile.FullPath);
        writer.WriteLine($"# Roslyn Analyzers for C#");
        writer.WriteLine();
        CopyLines(writer, analyzersShippedFile);
    }

    private static void CopyLines(StreamWriter writer, FilePath filePath)
    {
        using var reader = new StreamReader(filePath.FullPath);
        while (reader.ReadLine() is { } line)
        {
            writer.WriteLine();
            writer.Write(line);
        }
    }

    private void GenerateRedirects()
    {
        if (!context.FileExists(redirectFile))
        {
            context.Error($"Redirect file '{redirectFile}' does not exist");
            return;
        }

        context.EnsureDirectoryExists(docsGeneratedDirectory);

        var redirects = context.FileReadLines(redirectFile)
            .Select(line => line.Split(' '))
            .Select(parts => (source: parts[0], target: parts[1]))
            .ToList();

        foreach (var (source, target) in redirects)
        {
            var fileName = source.StartsWith("/") || source.StartsWith("\\") ? source[1..] : source;
            var fullFilePath = docsGeneratedDirectory.CombineWithFilePath(fileName);
            var content =
                $"<!doctype html>" +
                $"<html lang=en-us>" +
                $"<head>" +
                $"<title>{target}</title>" +
                $"<link rel=canonical href='{target}'>" +
                $"<meta name=robots content=\"noindex\">" +
                $"<meta charset=utf-8><meta http-equiv=refresh content=\"0; url={target}\">" +
                $"</head>" +
                $"</html>";
            context.EnsureDirectoryExists(fullFilePath.GetDirectory());
            context.GenerateFile(fullFilePath, content);
        }
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/GitRunner.cs
================================================
using System;
using BenchmarkDotNet.Build.Meta;
using Cake.Common;
using Cake.Common.Diagnostics;
using Cake.Core.IO;
using Cake.Git;

namespace BenchmarkDotNet.Build.Runners;

// Cake.Git 3.0.0 may experience the following issues on macOS:
// > Error: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception.
// >    ---> System.DllNotFoundException: Unable to load shared library 'git2-6777db8' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable
// In order to workaround this problem, we provide command-line fallbacks for all the used commands.
public class GitRunner
{
    private BuildContext context;

    public GitRunner(BuildContext context)
    {
        this.context = context;
    }

    public void Clone(DirectoryPath workDirectoryPath, string sourceUrl, string branchName)
    {
        context.Information($"[GitClone]");
        context.Information($"  Repo: {sourceUrl}");
        context.Information($"  Branch: {branchName}");
        context.Information($"  Path: {workDirectoryPath}");

        var settings = new GitCloneSettings { Checkout = true, BranchName = branchName };
        RunCommand(
            () => context.GitClone(sourceUrl, workDirectoryPath, settings),
            $"clone -b {branchName} {sourceUrl} {workDirectoryPath}");
    }

    public void Pull(DirectoryPath workDirectoryPath)
    {
        context.Information($"[GitPull]");
        context.Information($"  Path: {workDirectoryPath}");

        RunCommand(
            () => context.GitPull(workDirectoryPath, null, null),
            $"-C {workDirectoryPath} pull");
    }

    public void Tag(string tagName)
    {
        context.Information("[GitTag]");
        context.Information($"  Path: {context.RootDirectory}");
        context.Information($"  TagName: {tagName}");

        RunCommand(
            () => context.GitTag(context.RootDirectory, tagName),
            $"tag {tagName}");
    }

    public void BranchMove(string branchName, string target)
    {
        context.Information("[GitBranchMove]");
        context.Information($"  Branch: {branchName}");
        context.Information($"  Target: {target}");
        RunCommand($"branch -f {branchName} {target}");
    }

    public void AddAll(DirectoryPath? repoDirectory = null)
    {
        var repoFlag = repoDirectory != null ? $"-C {repoDirectory}" : "";
        context.Information("[GitAddAll]");
        RunCommand($"{repoFlag} add -A");
    }

    public void Commit(string message, DirectoryPath? repoDirectory = null)
    {
        context.Information("[GitCommit]");
        context.Information($"  Message: {message}");
        var repoFlag = repoDirectory != null ? $"-C {repoDirectory}" : "";
        RunCommand($"{repoFlag} " +
                   $"-c user.name=\"{Repo.MaintainerAuthorName}\" " +
                   $"-c user.email=\"{Repo.MaintainerAuthorEmail}\" " +
                   $"commit " +
                   $"--author=\"{Repo.MaintainerAuthorName} <{Repo.MaintainerAuthorEmail}>\" " +
                   $"--all " +
                   $"--message \"{message}\"".Trim());
    }

    public void Push(string target, bool force = false, DirectoryPath? repoDirectory = null)
    {
        context.Information("[GitPush]");
        context.Information($"  Target: {target}");
        context.Information($"  Force: {force}");
        context.RunOnlyInPushMode(() =>
        {
            var forceFlag = force ? " --force" : "";
            var repoFlag = repoDirectory != null ? $"-C {repoDirectory}" : "";
            RunCommand($"{repoFlag} push origin {target}{forceFlag}".Trim());
        });
    }

    private void RunCommand(string commandLineArgs) => RunCommand(null, commandLineArgs);

    private void RunCommand(Action? call, string commandLineArgs)
    {
        try
        {
            if (call == null)
                throw new NotImplementedException();
            call();
            context.Information("  Success");
        }
        catch (Exception e)
        {
            if (e is not NotImplementedException)
                context.Warning($"  Failed to perform operation via API ({e.Message})");
            try
            {
                context.Information($"  Run command in terminal: 'git {commandLineArgs}'");
                context.StartProcess("git", new ProcessSettings
                {
                    Arguments = commandLineArgs,
                    WorkingDirectory = context.RootDirectory
                });
                context.Information("  Success");
            }
            catch (Exception e2)
            {
                throw new Exception($"Failed to run 'git ${commandLineArgs}'", e2);
            }
        }
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs
================================================
using System;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BenchmarkDotNet.Build.Helpers;
using BenchmarkDotNet.Build.Meta;
using BenchmarkDotNet.Build.Options;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.NuGet.Push;
using Cake.FileHelpers;
using Octokit;

namespace BenchmarkDotNet.Build.Runners;

public class ReleaseRunner
{
    private readonly BuildContext context;

    public ReleaseRunner(BuildContext context)
    {
        this.context = context;
    }

    public void VersionIncrement()
    {
        var currentVersion = context.VersionHistory.CurrentVersion;
        var nextVersion = KnownOptions.NextVersion.Resolve(context);
        if (nextVersion == "")
        {
            var version = Version.Parse(currentVersion);
            nextVersion = $"{version.Major}.{version.Minor}.{version.Build + 1}";
            context.Information($"Evaluated NextVersion: {nextVersion}");
        }
        UpdateVersionsTxt(nextVersion);
        UpdateCommonPropsVersion(nextVersion);
        UpdateTemplateVersion(nextVersion);
    }

    public void Run()
    {
        KnownOptions.Stable.AssertTrue(context);

        EnvVar.GitHubToken.AssertHasValue();
        if (KnownOptions.Push.Resolve(context))
            EnvVar.NuGetToken.AssertHasValue();
        else
            EnvVar.NuGetToken.SetEmpty();

        var currentVersion = context.VersionHistory.CurrentVersion;
        var tag = "v" + currentVersion;
        var nextVersion = KnownOptions.NextVersion.Resolve(context);
        if (nextVersion == "")
        {
            var version = Version.Parse(currentVersion);
            nextVersion = $"{version.Major}.{version.Minor}.{version.Build + 1}";
            context.Information($"Evaluated NextVersion: {nextVersion}");
        }

        context.GitRunner.Tag(tag);

        // Upgrade current version and commit changes
        UpdateVersionsTxt(nextVersion);
        UpdateCommonPropsVersion(nextVersion);
        context.Information($"Building {context.TemplatesTestsProjectFile}");
        context.BuildRunner.BuildProjectSilent(context.TemplatesTestsProjectFile);
        context.GitRunner.Commit($"Set next BenchmarkDotNet version: {nextVersion}");

        UpdateMilestones(nextVersion).Wait();

        context.GitRunner.BranchMove(Repo.DocsStableBranch, "HEAD");
        context.GitRunner.Push(Repo.MasterBranch);
        context.GitRunner.Push(Repo.DocsStableBranch, true, context.DocumentationRunner.ChangelogSrcDirectory);
        context.GitRunner.Push(tag);

        PushNupkg();

        PublishGitHubRelease();
    }

    private void UpdateVersionsTxt(string versionToAppend)
    {
        var content = context.FileReadText(context.VersionsFile).Trim();
        context.GenerateFile(context.VersionsFile, $"{content}\n{versionToAppend}");
        context.Information($"Added v{versionToAppend} to {context.VersionsFile}");
    }

    private void UpdateCommonPropsVersion(string newCurrentVersion)
    {
        var content = Utils.ApplyRegex(
            context.FileReadText(context.CommonPropsFile),
            @"<VersionPrefix>([\d\.]+)</VersionPrefix>",
            newCurrentVersion);
        context.GenerateFile(context.CommonPropsFile, content);
        context.Information($"Set v{newCurrentVersion} as VersionPrefix in {context.CommonPropsFile}");
    }

    private void UpdateTemplateVersion(string newCurrentVersion)
    {
        context.BuildRunner.BuildProjectSilent(context.TemplatesTestsProjectFile);
        context.Information($"Set v{newCurrentVersion} in templates from {context.TemplatesTestsProjectFile}");
    }

    private async Task UpdateMilestones(string nextVersion)
    {
        var currentVersion = context.VersionHistory.CurrentVersion;

        var client = Utils.CreateGitHubClient();
        var allMilestones = await client.Issue.Milestone.GetAllForRepository(Repo.Owner, Repo.Name);
        var currentMilestone = allMilestones.First(milestone => milestone.Title == $"v{currentVersion}");

        context.Information($"[GitHub] Close milestone v{currentVersion}");
        context.RunOnlyInPushMode(() =>
        {
            var milestoneUpdate = new MilestoneUpdate { State = ItemState.Closed, DueOn = DateTimeOffset.Now };
            client.Issue.Milestone.Update(Repo.Owner, Repo.Name, currentMilestone.Number, milestoneUpdate).Wait();
        });

        context.Information($"[GitHub] Create milestone v{nextVersion}");
        context.RunOnlyInPushMode(() =>
        {
            client.Issue.Milestone.Create(Repo.Owner, Repo.Name, new NewMilestone($"v{nextVersion}")).Wait();
        });
    }

    private void PushNupkg()
    {
        var nuGetToken = EnvVar.NuGetToken.GetValue();

        var files = context
            .GetFiles(context.ArtifactsDirectory.CombineWithFilePath("*.nupkg").FullPath)
            .OrderBy(file => file.FullPath);
        var settings = new DotNetNuGetPushSettings
        {
            ApiKey = nuGetToken,
            SymbolApiKey = nuGetToken,
            Source = "https://api.nuget.org/v3/index.json"
        };

        foreach (var file in files)
        {
            context.Information($"Push: {file}");
            context.RunOnlyInPushMode(() => context.DotNetNuGetPush(file, settings));
        }
    }

    private void PublishGitHubRelease()
    {
        var version = context.VersionHistory.CurrentVersion;
        var tag = $"v{version}";
        var notesFile = context.DocumentationRunner
            .ChangelogSrcDirectory
            .Combine("header")
            .CombineWithFilePath($"{tag}.md");
        var notes = $"Full changelog: https://benchmarkdotnet.org/changelog/{tag}.html\n\n" +
                    PreprocessMarkdown(context.FileReadText(notesFile));

        context.Information($"[GitHub] Creating release '{version}'");
        var client = Utils.CreateGitHubClient();
        context.RunOnlyInPushMode(() =>
        {
            client.Repository.Release.Create(Repo.Owner, Repo.Name, new NewRelease(tag)
            {
                Name = version,
                Draft = false,
                Prerelease = false,
                GenerateReleaseNotes = false,
                DiscussionCategoryName = "Announcements",
                Body = notes
            }).Wait();
            context.Information("  Success");
        });
    }

    private static string PreprocessMarkdown(string content)
    {
        var lines = content.Split("\n");
        var newContent = new StringBuilder();
        for (var i = 0; i < lines.Length; i++)
        {
            newContent.Append(lines[i]);
            if (i == lines.Length - 1)
                continue;
            if (!lines[i].EndsWith("  ") && lines[i + 1].StartsWith("  "))
                continue;
            newContent.Append("\n");
        }

        return newContent.ToString();
    }
}

================================================
FILE: build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs
================================================
using BenchmarkDotNet.Build.Helpers;
using Cake.Common;
using Cake.Common.Diagnostics;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Test;
using Cake.Core.IO;
using System.Runtime.InteropServices;

namespace BenchmarkDotNet.Build.Runners;

public class UnitTestRunner(BuildContext context)
{
    private FilePath UnitTestsProjectFile { get; } = context.RootDirectory
        .Combine("tests")
        .Combine("BenchmarkDotNet.Tests")
        .CombineWithFilePath("BenchmarkDotNet.Tests.csproj");

    private FilePath ExporterTestsProjectFile { get; } = context.RootDirectory
        .Combine("tests")
        .Combine("BenchmarkDotNet.Exporters.Plotting.Tests")
        .CombineWithFilePath("BenchmarkDotNet.Exporters.Plotting.Tests.csproj");

    private FilePath AnalyzerTestsProjectFile { get; } = context.RootDirectory
        .Combine("tests")
        .Combine("BenchmarkDotNet.Analyzers.Tests")
        .CombineWithFilePath("BenchmarkDotNet.Analyzers.Tests.csproj");

    private FilePath IntegrationTestsProjectFile { get; } = context.RootDirectory
        .Combine("tests")
        .Combine("BenchmarkDotNet.IntegrationTests")
        .CombineWithFilePath("BenchmarkDotNet.IntegrationTests.csproj");

    private DirectoryPath TestOutputDirectory { get; } = context.RootDirectory
        .Combine("TestResults");

    private DotNetTestSettings GetTestSettingsParameters(FilePath logFile, string tfm)
    {
        var settings = new DotNetTestSettings
        {
            Configuration = context.BuildConfiguration,
            Framework = tfm,
            NoBuild = true,
            NoRestore = true,
            Loggers = new[] { "trx", $"trx;LogFileName={logFile.FullPath}", "console;verbosity=detailed" },
            EnvironmentVariables =
            {
                ["Platform"] = "" // force the tool to not look for the .dll in platform-specific directory
            }
        };
        return settings;
    }

    private void RunTests(FilePath projectFile, string alias, string tfm)
    {
        var os = Utils.GetOs();
        var arch = RuntimeInformation.OSArchitecture.ToString().ToLower();
        var trxFileName = $"{os}({arch})-{alias}-{tfm}.trx";
        var trxFile = TestOutputDirectory.CombineWithFilePath(trxFileName);
        var settings = GetTestSettingsParameters(trxFile, tfm);

        context.Information($"Run tests for {projectFile} ({tfm}), result file: '{trxFile}'");
        context.DotNetTest(projectFile.FullPath, settings);
    }

    private void RunUnitTests(string tfm)
    {
        RunTests(UnitTestsProjectFile, "unit", tfm);
        RunTests(ExporterTestsProjectFile, "exporters", tfm);
    }

    public void RunUnitTests()
    {
        string[] targetFrameworks = context.IsRunningOnWindows() ? ["net462", "net8.0"] : ["net8.0"];
        foreach (var targetFramework in targetFrameworks)
            RunUnitTests(targetFramework);
    }

    public void RunAnalyzerTests()
    {
        string[] targetFrameworks = context.IsRunningOnWindows() ? ["net462", "net8.0"] : ["net8.0"];
        foreach (var targetFramework in targetFrameworks)
            RunTests(AnalyzerTestsProjectFile, "analyzer", targetFramework);
    }

    public void RunInTests(string tfm) => RunTests(IntegrationTestsProjectFile, "integration", tfm);
}

================================================
FILE: build/CodingStyle.ruleset
================================================
<RuleSet Name="Microsoft.Analyzers.ManagedCodeAnalysis" Description="Microsoft.Analyzers.ManagedCodeAnalysis" ToolsVersion="14.0">
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1000" Action="None" /> <!-- Do not declare static members on generic types -->
    <Rule Id="CA1001" Action="None" /> <!-- Non disposable class owns disposable fields -->
    <Rule Id="CA1010" Action="None" /> <!-- Collections should implement generic interface -->
    <Rule Id="CA1028" Action="None" /> <!-- Enum storage should be Int32 -->
    <Rule Id="CA1030" Action="None" /> <!-- Use events where appropriate -->
    <Rule Id="CA1031" Action="None" /> <!-- Do not catch general exception types -->
    <Rule Id="CA1032" Action="None" /> <!-- Implement standard exception constructors -->
    <Rule Id="CA1034" Action="None" /> <!-- Nested types should not be visible -->
    <Rule Id="CA1036" Action="None" /> <!-- Overload comparison operators when implementing System.IComparable -->
    <Rule Id="CA1043" Action="None" /> <!-- Use integral or string argument for indexers -->
    <Rule Id="CA1044" Action="None" /> <!-- Properties should not be write only -->
    <Rule Id="CA1051" Action="None" /> <!-- Do not declare visible instance fields -->
    <Rule Id="CA1052" Action="None" /> <!-- Static holder types should be sealed -->
    <Rule Id="CA1054" Action="None" /> <!-- URI parameters should not be strings -->
    <Rule Id="CA1055" Action="None" /> <!-- URI return values should not be strings -->
    <Rule Id="CA1056" Action="None" /> <!-- URI properties should not be strings -->
    <Rule Id="CA1058" Action="None" /> <!-- Types should not extend certain base types -->
    <Rule Id="CA1061" Action="None" /> <!-- Do not hide base class methods -->
    <Rule Id="CA1062" Action="None" /> <!-- Validate arguments of public methods -->
    <Rule Id="CA1063" Action="None" /> <!-- Implement IDisposable correctly -->
    <Rule Id="CA1064" Action="None" /> <!-- Exceptions should be public -->
    <Rule Id="CA1065" Action="None" /> <!-- Do not raise exceptions in unexpected locations -->
    <Rule Id="CA1066" Action="None" /> <!-- Type should implement IEquatable -->
    <Rule Id="CA1067" Action="None" /> <!-- Override Object.Equals(object) when implementing IEquatable -->
    <Rule Id="CA1068" Action="None" /> <!-- CancellationToken parameters must come last -->
    <Rule Id="CA1303" Action="None" /> <!-- Do not pass literals as localized parameters -->
    <Rule Id="CA1304" Action="None" /> <!-- Specify CultureInfo -->
    <Rule Id="CA1305" Action="None" /> <!-- Specify IFormatProvider -->
    <Rule Id="CA1307" Action="None" /> <!-- Specify StringComparison -->
    <Rule Id="CA1308" Action="None" /> <!-- Normalize strings to upper case -->
    <Rule Id="CA1707" Action="None" /> <!-- Identifers should not contain underscores -->
    <Rule Id="CA1710" Action="None" /> <!-- Identifers should have correct suffix -->
    <Rule Id="CA1712" Action="None" /> <!-- Do not prefix enum values with type name -->
    <Rule Id="CA1714" Action="None" /> <!-- Flags enums should have plural names -->
    <Rule Id="CA1715" Action="None" /> <!-- Type parameters names should be prefixed with T -->
    <Rule Id="CA1716" Action="None" /> <!-- Identifiers should not match keywords -->
    <Rule Id="CA1717" Action="None" /> <!-- Only FlagsAttribute enums should have plural names -->
    <Rule Id="CA1720" Action="None" /> <!-- Identifier contains type name -->
    <Rule Id="CA1721" Action="None" /> <!-- Property names should not match get methods -->
    <Rule Id="CA1724" Action="None" /> <!-- Type names should not match namespaces -->
    <Rule Id="CA1801" Action="None" /> <!-- Review unused parameters -->
    <Rule Id="CA1806" Action="None" /> <!-- Do not ignore method results -->
    <Rule Id="CA1810" Action="None" /> <!-- Initialize reference type static fields inline -->
    <Rule Id="CA1812" Action="None" /> <!-- Avoid uninstantiated internal classes -->
    <Rule Id="CA1814" Action="None" /> <!-- Prefer jagged arrays over multidimensional -->
    <Rule Id="CA1815" Action="None" /> <!-- Override equals and operator equals on value types -->
    <Rule Id="CA1816" Action="None" /> <!-- Dispose methods should call SuppressFinalize -->
    <Rule Id="CA1819" Action="None" /> <!-- Properties should not return arrays -->
    <Rule Id="CA1820" Action="None" /> <!-- Test for empty strings using string length -->
    <Rule Id="CA1822" Action="None" /> <!-- Mark members as static -->
    <Rule Id="CA1826" Action="None" /> <!-- Do not use Enumerable methods on indexable collections. Instead use the collection directly -->
    <Rule Id="CA2208" Action="None" /> <!-- Instantiate argument exceptions correctly -->
    <Rule Id="CA2000" Action="None" /> <!-- Dispose objects before losing scope -->
    <Rule Id="CA2008" Action="None" /> <!-- Do not create tasks without passing a TaskScheduler -->
    <Rule Id="CA2010" Action="None" /> <!-- Always consume the value returned by methods marked with PreserveSigAttribute -->
    <Rule Id="CA2100" Action="None" /> <!-- Review SQL queries for security vulnerabilities -->
    <Rule Id="CA2101" Action="None" /> <!-- Specify marshaling for P/Invoke string arguments -->
    <Rule Id="CA2119" Action="None" /> <!-- Seal methods that satisfy private interfaces -->
    <Rule Id="CA2211" Action="None" /> <!-- Non-constant fields should not be visible -->
    <Rule Id="CA2214" Action="None" /> <!-- Do not call overridable methods in constructors -->
    <Rule Id="CA2216" Action="None" /> <!-- Disposable types should declare finalizer -->
    <Rule Id="CA2219" Action="None" /> <!-- Do not raise exceptions in finally clauses -->
    <Rule Id="CA2225" Action="None" /> <!-- Operator overloads have named alternates -->
    <Rule Id="CA2231" Action="None" /> <!-- Overload operator equals when overriding ValueType.Equals -->
    <Rule Id="CA2235" Action="None" /> <!-- Serializable type has non serializable field -->
    <Rule Id="CA2237" Action="None" /> <!-- Add [Serializable] to types that implement ISerializable -->
    <Rule Id="CA5366" Action="None" /> <!-- Use XmlReader For DataSet Read Xml -->
    <Rule Id="CA5369" Action="None" /> <!-- Use XmlReader For Deserialize -->
    <Rule Id="CA5371" Action="None" /> <!-- Use XmlReader For Schema Read -->
    <Rule Id="CA5372" Action="None" /> <!-- Use XmlReader For XPathDocument -->
  </Rules>
  <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
    <Rule Id="AD0001" Action="None" /> <!-- Analyzer threw an exception -->
    <Rule Id="SA0001" Action="None" /> <!-- XML comments -->
    <Rule Id="SA1002" Action="None" /> <!-- Semicolons should not be preceded by a space -->
    <Rule Id="SA1003" Action="None" /> <!-- Operator should not appear at the end of a line -->
    <Rule Id="SA1004" Action="None" /> <!-- Documentation line should begin with a space -->
    <Rule Id="SA1005" Action="None" /> <!-- Single line comment should begin with a space -->
    <Rule Id="SA1008" Action="None" /> <!-- Opening parenthesis should not be preceded by a space -->
    <Rule Id="SA1009" Action="None" /> <!-- Closing parenthesis should not be followed by a space -->
    <Rule Id="SA1010" Action="None" /> <!-- Opening square brackets should not be preceded by a space -->
    <Rule Id="SA1011" Action="None" /> <!-- Closing square bracket should be followed by a space -->
    <Rule Id="SA1012" Action="None" /> <!-- Opening brace should be followed by a space -->
    <Rule Id="SA1013" Action="None" /> <!-- Closing brace should be preceded by a space -->
    <Rule Id="SA1015" Action="None" /> <!-- Closing generic bracket should not be followed by a space -->
    <Rule Id="SA1021" Action="None" /> <!-- Negative sign should be preceded by a space -->
    <Rule Id="SA1023" Action="None" /> <!-- Dereference symbol '*' should not be preceded by a space." -->
    <Rule Id="SA1024" Action="None" /> <!-- Colon should be followed by a space -->
    <Rule Id="SA1025" Action="None" /> <!-- Code should not contain multiple whitespace characters in a row -->
    <Rule Id="SA1100" Action="None" /> <!-- Do not prefix calls with base unless local implementation exists -->
    <Rule Id="SA1101" Action="None" /> <!-- Prefix local calls with this -->
    <Rule Id="SA1106" Action="None" /> <!-- Code should not contain empty statements -->
    <Rule Id="SA1107" Action="None" /> <!-- Code should not contain multiple statements on one line -->
    <Rule Id="SA1108" Action="None" /> <!-- Block statements should not contain embedded comments -->
    <Rule Id="SA1110" Action="None" /> <!-- Opening parenthesis or bracket should be on declaration line -->
    <Rule Id="SA1111" Action="None" /> <!-- Closing parenthesis should be on line of last parameter -->
    <Rule Id="SA1114" Action="None" /> <!-- Parameter list should follow declaration -->
    <Rule Id="SA1115" Action="None" /> <!-- The parameter should begin on the line after the previous parameter -->
    <Rule Id="SA1116" Action="None" /> <!-- Split parameters should start on line after declaration -->
    <Rule Id="SA1117" Action="None" /> <!-- Parameters should be on same line or separate lines -->
    <Rule Id="SA1118" Action="None" /> <!-- Parameter should not span multiple lines -->
    <Rule Id="SA1119" Action="None" /> <!-- Statement should not use unnecessary parenthesis -->
    <Rule Id="SA1120" Action="None" /> <!-- Comments should contain text -->
    <Rule Id="SA1122" Action="None" /> <!-- Use string.Empty for empty strings -->
    <Rule Id="SA1123" Action="None" /> <!-- Region should not be located within a code element -->
    <Rule Id="SA1124" Action="None" /> <!-- Do not use regions -->
    <Rule Id="SA1125" Action="None" /> <!-- Use shorthand for nullable types -->
    <Rule Id="SA1127" Action="None" /> <!-- Generic type constraints should be on their own line -->
    <Rule Id="SA1128" Action="None" /> <!-- Put constructor initializers on their own line -->
    <Rule Id="SA1129" Action="None" /> <!-- Do not use default value type constructor -->
    <Rule Id="SA1130" Action="None" /> <!-- Use lambda syntax -->
    <Rule Id="SA1131" Action="None" /> <!-- Constant values should appear on the right-hand side of comparisons -->
    <Rule Id="SA1132" Action="None" /> <!-- Do not combine fields -->
    <Rule Id="SA1133" Action="None" /> <!-- Do not combine attributes -->
    <Rule Id="SA1134" Action="None" /> <!-- Each attribute should be placed on its own line of code -->
    <Rule Id="SA1135" Action="None" /> <!-- Using directive should be qualified -->
    <Rule Id="SA1136" Action="None" /> <!-- Enum values should be on separate lines -->
    <Rule Id="SA1137" Action="None" /> <!-- Elements should have the same indentation -->
    <Rule Id="SA1139" Action="None" /> <!-- Use literal suffix notation instead of casting -->
    <Rule Id="SA1200" Action="None" /> <!-- Using directive should appear within a namespace declaration -->
    <Rule Id="SA1201" Action="None" /> <!-- Elements should appear in the correct order -->
    <Rule Id="SA1202" Action="None" /> <!-- Elements should be ordered by access -->
    <Rule Id="SA1203" Action="None" /> <!-- Constants should appear before fields -->
    <Rule Id="SA1204" Action="None" /> <!-- Static elements should appear before instance elements -->
    <Rule Id="SA1206" Action="None" /> <!-- The 'static' modifier should appear before 'new' -->
    <Rule Id="SA1208" Action="None" /> <!-- Using directive ordering -->
    <Rule Id="SA1209" Action="None" /> <!-- Using alias directives should be placed after all using namespace directives -->
    <Rule Id="SA1210" Action="None" /> <!-- Using directives should be ordered alphabetically by the namespaces -->
    <Rule Id="SA1211" Action="None" /> <!-- Using alias directive ordering -->
    <Rule Id="SA1214" Action="None" /> <!-- Readonly fields should appear before non-readonly fields -->
    <Rule Id="SA1216" Action="None" /> <!-- Using static directives should be placed at the correct location -->
    <Rule Id="SA1300" Action="None" /> <!-- Element should begin with an uppercase letter -->
    <Rule Id="SA1303" Action="None" /> <!-- Const field names should begin with upper-case letter -->
    <Rule Id="SA1304" Action="None" /> <!-- Non-private readonly fields should begin with upper-case letter -->
    <Rule Id="SA1306" Action="None" /> <!-- Field should begin with lower-case letter -->
    <Rule Id="SA1307" Action="None" /> <!-- Field should begin with upper-case letter -->
    <Rule Id="SA1308" Action="None" /> <!-- Field should not begin with the prefix 's_' -->
    <Rule Id="SA1309" Action="None" /> <!-- Field names should not begin with underscore -->
    <Rule Id="SA1310" Action="None" /> <!-- Field should not contain an underscore -->
    <Rule Id="SA1311" Action="None" /> <!-- Static readonly fields should begin with upper-case letter -->
    <Rule Id="SA1312" Action="None" /> <!-- Variable should begin with lower-case letter -->
    <Rule Id="SA1313" Action="None" /> <!-- Parameter should begin with lower-case letter -->
    <Rule Id="SA1314" Action="None" /> <!-- Type parameter names should begin with T -->
    <Rule Id="SA1316" Action="None" /> <!-- Tuple element names should use correct casing -->
    <Rule Id="SA1401" Action="None" /> <!-- Fields should be private -->
    <Rule Id="SA1402" Action="None" /> <!-- File may only contain a single type -->
    <Rule Id="SA1403" Action="None" /> <!-- File may only contain a single namespace -->
    <Rule Id="SA1404" Action="None" /> <!-- Code analysis suppression should have justification -->
    <Rule Id="SA1405" Action="None" /> <!-- Debug.Assert should provide message text -->
    <Rule Id="SA1407" Action="None" /> <!-- Arithmetic expressions should declare precedence -->
    <Rule Id="SA1408" Action="None" /> <!-- Conditional expressions should declare precedence -->
    <Rule Id="SA1413" Action="None" /> <!-- Use trailing comma in multi-line initializers -->
    <Rule Id="SA1414" Action="None" /> <!-- Tuple types in signatures should have element names -->
    <Rule Id="SA1500" Action="None" /> <!-- Braces for multi-line statements should not share line -->
    <Rule Id="SA1501" Action="None" /> <!-- Statement should not be on a single line -->
    <Rule Id="SA1502" Action="None" /> <!-- Element should not be on a single line -->
    <Rule Id="SA1503" Action="None" /> <!-- Braces should not be omitted -->
    <Rule Id="SA1504" Action="None" /> <!-- All accessors should be single-line or multi-line -->
    <Rule Id="SA1505" Action="None" /> <!-- An opening brace should not be followed by a blank line -->
    <Rule Id="SA1506" Action="None" /> <!-- Element documentation headers should not be followed by blank line -->
    <Rule Id="SA1507" Action="None" /> <!-- Code should not contain multiple blank lines in a row -->
    <Rule Id="SA1508" Action="None" /> <!-- A closing brace should not be preceded by a blank line -->
    <Rule Id="SA1509" Action="None" /> <!-- Opening braces should not be preceded by blank line -->
    <Rule Id="SA1510" Action="None" /> <!-- 'else' statement should not be preceded by a blank line -->
    <Rule Id="SA1512" Action="None" /> <!-- Single-line comments should not be followed by blank line -->
    <Rule Id="SA1513" Action="None" /> <!-- Closing brace should be followed by blank line -->
    <Rule Id="SA1514" Action="None" /> <!-- Element documentation header should be preceded by blank line -->
    <Rule Id="SA1515" Action="None" /> <!-- Single-line comment should be preceded by blank line -->
    <Rule Id="SA1516" Action="None" /> <!-- Elements should be separated by blank line -->
    <Rule Id="SA1519" Action="None" /> <!-- Braces should not be omitted from multi-line child statement -->
    <Rule Id="SA1520" Action="None" /> <!-- Use braces consistently -->
    <Rule Id="SA1600" Action="None" /> <!-- Elements should be documented -->
    <Rule Id="SA1601" Action="None" /> <!-- Partial elements should be documented -->
    <Rule Id="SA1602" Action="None" /> <!-- Enumeration items should be documented -->
    <Rule Id="SA1604" Action="None" /> <!-- Element documentation should have summary -->
    <Rule Id="SA1605" Action="None" /> <!-- Partial element documentation should have summary -->
    <Rule Id="SA1606" Action="None" /> <!-- Element documentation should have summary text -->
    <Rule Id="SA1608" Action="None" /> <!-- Element documentation should not have default summary -->
    <Rule Id="SA1610" Action="None" /> <!-- Property documentation should have value text -->
    <Rule Id="SA1611" Action="None" /> <!-- The documentation for parameter 'message' is missing -->
    <Rule Id="SA1612" Action="None" /> <!-- The parameter documentation is at incorrect position -->
    <Rule Id="SA1614" Action="None" /> <!-- Element parameter documentation should have text -->
    <Rule Id="SA1615" Action="None" /> <!-- Element return value should be documented -->
    <Rule Id="SA1616" Action="None" /> <!-- Element return value documentation should have text -->
    <Rule Id="SA1618" Action="None" /> <!-- The documentation for type parameter is missing -->
    <Rule Id="SA1619" Action="None" /> <!-- The documentation for type parameter is missing -->
    <Rule Id="SA1622" Action="None" /> <!-- Generic type parameter documentation should have text -->
    <Rule Id="SA1623" Action="None" /> <!-- Property documentation text -->
    <Rule Id="SA1624" Action="None" /> <!-- Because the property only contains a visible get accessor, the documentation summary text should begin with 'Gets' -->
    <Rule Id="SA1625" Action="None" /> <!-- Element documentation should not be copied and pasted -->
    <Rule Id="SA1626" Action="None" /> <!-- Single-line comments should not use documentation style slashes -->
    <Rule Id="SA1627" Action="None" /> <!-- The documentation text within the \'exception\' tag should not be empty -->
    <Rule Id="SA1629" Action="None" /> <!-- Documentation text should end with a period -->
    <Rule Id="SA1633" Action="None" /> <!-- File should have header -->
    <Rule Id="SA1642" Action="None" /> <!-- Constructor summary documentation should begin with standard text -->
    <Rule Id="SA1643" Action="None" /> <!-- Destructor summary documentation should begin with standard text -->
    <Rule Id="SA1649" Action="None" /> <!-- File name should match first type name -->
  </Rules>
</RuleSet>

================================================
FILE: build/build.bat
================================================
@ECHO OFF
PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' %*; exit $LASTEXITCODE"

================================================
FILE: build/build.ps1
================================================
#!/usr/bin/env pwsh

$DotNetInstallerUri = 'https://dot.net/v1/dotnet-install.ps1';
$BuildPath = Split-Path $MyInvocation.MyCommand.Path -Parent
$PSScriptRoot = Split-Path $PSScriptRoot -Parent

if ($PSVersionTable.PSEdition -ne 'Core') {
    # Attempt to set highest encryption available for SecurityProtocol.
    # PowerShell will not set this by default (until maybe .NET 4.6.x). This
    # will typically produce a message for PowerShell v2 (just an info
    # message though)
    try {
        # Set TLS 1.2 (3072), then TLS 1.1 (768), then TLS 1.0 (192), finally SSL 3.0 (48)
        # Use integers because the enumeration values for TLS 1.2 and TLS 1.1 won't
        # exist in .NET 4.0, even though they are addressable if .NET 4.5+ is
        # installed (.NET 4.5 is an in-place upgrade).
        [System.Net.ServicePointManager]::SecurityProtocol = 3072 -bor 768 -bor 192 -bor 48
      } catch {
        Write-Output 'Unable to set PowerShell to use TLS 1.2 and TLS 1.1 due to old .NET Framework installed. If you see underlying connection closed or trust errors, you may need to upgrade to .NET Framework 4.5+ and PowerShell v3'
      }
}

###########################################################################
# INSTALL .NET CORE CLI
###########################################################################

$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
$env:DOTNET_CLI_TELEMETRY_OPTOUT=1

Function Remove-PathVariable([string]$VariableToRemove)
{
    $SplitChar = ';'
    if ($IsMacOS -or $IsLinux) {
        $SplitChar = ':'
    }

    $path = [Environment]::GetEnvironmentVariable("PATH", "User")
    if ($path -ne $null)
    {
        $newItems = $path.Split($SplitChar, [StringSplitOptions]::RemoveEmptyEntries) | Where-Object { "$($_)" -inotlike $VariableToRemove }
        [Environment]::SetEnvironmentVariable("PATH", [System.String]::Join($SplitChar, $newItems), "User")
    }

    $path = [Environment]::GetEnvironmentVariable("PATH", "Process")
    if ($path -ne $null)
    {
        $newItems = $path.Split($SplitChar, [StringSplitOptions]::RemoveEmptyEntries) | Where-Object { "$($_)" -inotlike $VariableToRemove }
        [Environment]::SetEnvironmentVariable("PATH", [System.String]::Join($SplitChar, $newItems), "Process")
    }
}

$InstallPath = Join-Path $PSScriptRoot ".dotnet"
$SdkPath = Join-Path $BuildPath "sdk"
$GlobalJsonPath = Join-Path $SdkPath "global.json"
if (!(Test-Path $InstallPath)) {
    New-Item -Path $InstallPath -ItemType Directory -Force | Out-Null;
    $ScriptPath = Join-Path $InstallPath 'dotnet-install.ps1'
    (New-Object System.Net.WebClient).DownloadFile($DotNetInstallerUri, $ScriptPath);
    & $ScriptPath -JSonFile $GlobalJsonPath -InstallDir $InstallPath;

    # Install .NET 8 SDK
    & $ScriptPath -Channel 8.0 -InstallDir $InstallPath -NoPath;
}

Remove-PathVariable "$InstallPath"
$env:PATH = "$InstallPath;$env:PATH"
$env:DOTNET_ROOT=$InstallPath

###########################################################################
# RUN BUILD SCRIPT
###########################################################################
& dotnet run --configuration Release --project build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj -- $args

exit $LASTEXITCODE;

================================================
FILE: build/build.sh
================================================
#!/usr/bin/env bash

# Define variables
PROJECT_ROOT=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )

###########################################################################
# INSTALL .NET CORE CLI
###########################################################################

export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0

if [ ! -d "$PROJECT_ROOT/.dotnet" ]; then
    mkdir "$PROJECT_ROOT/.dotnet"
    curl -Lsfo "$PROJECT_ROOT/.dotnet/dotnet-install.sh" https://dot.net/v1/dotnet-install.sh
    bash "$PROJECT_ROOT/.dotnet/dotnet-install.sh" --jsonfile ./build/sdk/global.json --install-dir .dotnet --no-path

    # Install .NET 8 SDK
    bash "$PROJECT_ROOT/.dotnet/dotnet-install.sh" --channel 8.0 --install-dir .dotnet --no-path
fi

export PATH="$PROJECT_ROOT/.dotnet":$PATH
export DOTNET_ROOT="$PROJECT_ROOT/.dotnet"

###########################################################################
# RUN BUILD SCRIPT
###########################################################################

dotnet run --configuration Release --project "$PROJECT_ROOT/build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj" -- "$@"


================================================
FILE: build/cSpell.json
================================================
{
  "version": "0.2",
  "language": "en",
  "words": [
    "Alloc",
    "analyse",
    "analyser",
    "Analysers",
    "Autofac",
    "bitness",
    "corlib",
    "Cygwin",
    "Diagnoser",
    "diagnosers",
    "diagsession",
    "disassemblers",
    "disassm",
    "Jits",
    "Jitting",
    "LINQ",
    "microbenchmarking",
    "microbenchmarks",
    "Mispredict",
    "Mispredictions",
    "msbuild",
    "Multimodal",
    "multimodality",
    "netcoreapp",
    "powerplans",
    "Pseudocode",
    "runtimes",
    "Serilog",
    "slnx",
    "vsprofiler",
    "vstest",
    "Tailcall",
    "toolchains",
    "unmanaged"
  ],
  "ignoreWords": [
    "Akinshin",
    "Andrey",
    "Cassell",
    "Expecto",
    "Jint",
    "JITted",
    "LoongArch64",
    "macrobenchmark",
    "MediatR",
    "Nagórski's",
    "Newtonsoft",
    "NodaTime",
    "Npgsql",
    "Sitnik's",
    "Sitnik",
    "Stepanov",
    "Yegor",
    "Wojciech",
    "Avalonia",
    "Gitter"
  ],
  "patterns": [
    {
      "name": "Markdown links",
      "pattern": "\\((.*)\\)",
      "description": ""
    },
    {
      "name": "Markdown code blocks",
      "pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx",
      "description": "Taken from the cSpell example at https://cspell.org/configuration/patterns/#verbose-regular-expressions"
    },
    {
      "name": "Inline code blocks",
      "pattern": "\\`([^\\`\\r\\n]+?)\\`",
      "description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex"
    },
    {
      "name": "Link contents",
      "pattern": "\\<a(.*)\\>",
      "description": ""
    },
    {
      "name": "Snippet references",
      "pattern": "-- snippet:(.*)",
      "description": ""
    },
    {
      "name": "Snippet references 2",
      "pattern": "\\<\\[sample:(.*)",
      "description": "another kind of snippet reference"
    },
    {
      "name": "Multi-line code blocks",
      "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm"
    },
    {
      "name": "HTML Tags",
      "pattern": "<[^>]*>",
      "description": "Reference: https://stackoverflow.com/questions/11229831/regular-expression-to-remove-html-tags-from-a-string"
    }
  ],
  "ignoreRegExpList": [
    "Markdown links",
    "Markdown code blocks",
    "Inline code blocks",
    "Link contents",
    "Snippet references",
    "Snippet references 2",
    "Multi-line code blocks",
    "HTML Tags"
  ],
  "ignorePaths": [
    "docs/_changelog/**/*.md",
    "docs/articles/team.md"
  ]
}


================================================
FILE: build/common.props
================================================
<Project>
  <PropertyGroup>
    <Product>BenchmarkDotNet</Product>
    <Description>Powerful .NET library for benchmarking</Description>
    <Copyright>.NET Foundation and contributors</Copyright>
    <NeutralLanguage>en-US</NeutralLanguage>
    <Authors>.NET Foundation and contributors</Authors>
    <PackageTags>benchmark;benchmarking;performance</PackageTags>
    <PackageIcon>package-icon.png</PackageIcon>
    <PackageProjectUrl>https://github.com/dotnet/BenchmarkDotNet</PackageProjectUrl>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <RepositoryType>git</RepositoryType>
    <RepositoryUrl>https://github.com/dotnet/BenchmarkDotNet</RepositoryUrl>
    <ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild>

    <CLSCompliant>true</CLSCompliant>
    <ComVisible>false</ComVisible>

    <UseSharedCompilation>false</UseSharedCompilation>
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <SuppressNETCoreSdkPreviewMessage>True</SuppressNETCoreSdkPreviewMessage>
    <CheckEolTargetFramework>false</CheckEolTargetFramework>
    <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)CodingStyle.ruleset</CodeAnalysisRuleSet>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <WarningsNotAsErrors>NU1900</WarningsNotAsErrors>
    <Nullable>enable</Nullable>
    <!-- Suppress warning for nuget package used in old (unsupported) tfm. -->
    <SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
  </PropertyGroup>

  <PropertyGroup>
    <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)strongNameKey.snk</AssemblyOriginatorKeyFile>
    <SignAssembly>true</SignAssembly>
  </PropertyGroup>

  <PropertyGroup Condition="'$(GenerateDocumentationFile)' == '' AND '$(Configuration)' == 'Release' ">
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

  <PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj' ">
    <LangVersion>14.0</LangVersion>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(VersionPrefix)' == '' ">
    <!-- When this is changed, optionally reset WeaverVersionSuffix, then run `build.cmd pack-weaver`. -->
    <VersionPrefix>0.16.0</VersionPrefix>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(NoVersionSuffix)' == '' AND '$(VersionSuffix)' == '' ">
    <VersionSuffix>develop</VersionSuffix>
    <VersionSuffix Condition=" '$(BDN_CI_BUILD)' != '' ">ci</VersionSuffix>
  </PropertyGroup>

  <PropertyGroup>
    <AssemblyVersion>$(VersionPrefix)</AssemblyVersion>
    <AssemblyFileVersion>$(VersionPrefix)</AssemblyFileVersion>
    <InformationalVersion>$(Version)</InformationalVersion>
    <PackageVersion>$(Version)</PackageVersion>
  </PropertyGroup>

  <PropertyGroup>
    <!-- Increment this when the BenchmarkDotNet.Weaver package needs to be re-packed. -->
    <WeaverVersionSuffix>-3</WeaverVersionSuffix>
  </PropertyGroup>

  <ItemGroup>
    <GlobalPackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
    <GlobalPackageReference Include="StyleCop.Analyzers.Unstable" Version="1.2.0.556" />
  </ItemGroup>

  <UsingTask TaskName="ReplaceFileText"
             TaskFactory="RoslynCodeTaskFactory"
             AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
    <ParameterGroup>
      <InputFilename ParameterType="System.String" Required="true" />
      <OutputFilename ParameterType="System.String" Required="true" />
      <MatchExpression ParameterType="System.String" Required="true" />
      <ReplacementText ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
      <Using Namespace="System" />
      <Using Namespace="System.IO" />
      <Using Namespace="System.Text.RegularExpressions" />
      <Code Type="Fragment" Language="cs">
        <![CDATA[
            File.WriteAllText(
                OutputFilename,
                Regex.Replace(File.ReadAllText(InputFilename), MatchExpression, ReplacementText)
                );
          ]]>
      </Code>
    </Task>
  </UsingTask>
</Project>


================================================
FILE: build/common.targets
================================================
<Project>

  <ItemGroup Condition="'$(IsPackable)' == 'true'">
    <None Include="$(MSBuildThisFileDirectory)package-icon.png" Pack="True" PackagePath=""/>
  </ItemGroup>

</Project>


================================================
FILE: build/sdk/global.json
================================================
{
  "sdk": {
    "version": "10.0.103",
    "rollForward": "disab
Download .txt
gitextract_8mg2sr0i/

├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   └── workflows/
│       ├── generate-changelog.yaml
│       ├── generate-coverage-report.yaml
│       ├── generate-gh-pages.yaml
│       ├── publish-nightly.yaml
│       ├── release.yaml
│       ├── run-tests-selected.yaml
│       └── run-tests.yaml
├── .gitignore
├── BenchmarkDotNet.slnx
├── BenchmarkDotNet.slnx.DotSettings
├── LICENSE.md
├── NuGet.Config
├── README.md
├── build/
│   ├── BenchmarkDotNet.Build/
│   │   ├── BenchmarkDotNet.Build.csproj
│   │   ├── BuildContext.cs
│   │   ├── CommandLineParser.cs
│   │   ├── EnvVar.cs
│   │   ├── Example.cs
│   │   ├── Folder.DotSettings
│   │   ├── HelpInfo.cs
│   │   ├── Helpers/
│   │   │   ├── OctokitExtensions.cs
│   │   │   └── Utils.cs
│   │   ├── IHelpProvider.cs
│   │   ├── Meta/
│   │   │   ├── Repo.cs
│   │   │   └── VersionHistory.cs
│   │   ├── Options/
│   │   │   ├── BoolOption.cs
│   │   │   ├── IOption.cs
│   │   │   ├── KnownOptions.cs
│   │   │   ├── Option.cs
│   │   │   └── StringOption.cs
│   │   ├── Program.cs
│   │   └── Runners/
│   │       ├── BuildRunner.cs
│   │       ├── Changelog/
│   │       │   ├── ChangelogBuilder.cs
│   │       │   └── ChangelogDetailsBuilder.cs
│   │       ├── DocumentationRunner.cs
│   │       ├── GitRunner.cs
│   │       ├── ReleaseRunner.cs
│   │       └── UnitTestRunner.cs
│   ├── CodingStyle.ruleset
│   ├── build.bat
│   ├── build.ps1
│   ├── build.sh
│   ├── cSpell.json
│   ├── common.props
│   ├── common.targets
│   ├── sdk/
│   │   └── global.json
│   ├── strongNameKey.snk
│   └── versions.txt
├── build.cmd
├── docs/
│   ├── .gitignore
│   ├── _redirects/
│   │   └── _redirects
│   ├── api/
│   │   └── index.md
│   ├── articles/
│   │   ├── configs/
│   │   │   ├── analysers.md
│   │   │   ├── columns.md
│   │   │   ├── configoptions.md
│   │   │   ├── configs.md
│   │   │   ├── diagnosers.md
│   │   │   ├── exporters.md
│   │   │   ├── filters.md
│   │   │   ├── jobs.md
│   │   │   ├── loggers.md
│   │   │   ├── orderers.md
│   │   │   ├── powerplans.md
│   │   │   ├── toc.yml
│   │   │   ├── toolchains.md
│   │   │   └── validators.md
│   │   ├── contributing/
│   │   │   ├── building.md
│   │   │   ├── debugging.md
│   │   │   ├── disassembler.md
│   │   │   ├── documentation.md
│   │   │   ├── miscellaneous.md
│   │   │   ├── running-tests.md
│   │   │   └── toc.yml
│   │   ├── faq.md
│   │   ├── features/
│   │   │   ├── baselines.md
│   │   │   ├── disassembler.md
│   │   │   ├── etwprofiler.md
│   │   │   ├── event-pipe-profiler.md
│   │   │   ├── parameterization.md
│   │   │   ├── setup-and-cleanup.md
│   │   │   ├── statistics.md
│   │   │   ├── toc.yml
│   │   │   ├── vsprofiler.md
│   │   │   └── vstest.md
│   │   ├── guides/
│   │   │   ├── choosing-run-strategy.md
│   │   │   ├── console-args.md
│   │   │   ├── customizing-runtime.md
│   │   │   ├── dotnet-new-templates.md
│   │   │   ├── getting-started.md
│   │   │   ├── good-practices.md
│   │   │   ├── how-it-works.md
│   │   │   ├── how-to-run.md
│   │   │   ├── nuget.md
│   │   │   ├── toc.yml
│   │   │   └── troubleshooting.md
│   │   ├── license.md
│   │   ├── overview.md
│   │   ├── samples/
│   │   │   ├── IntroArguments.md
│   │   │   ├── IntroArgumentsPriority.md
│   │   │   ├── IntroArgumentsSource.md
│   │   │   ├── IntroArrayParam.md
│   │   │   ├── IntroBasic.md
│   │   │   ├── IntroBenchmarkBaseline.md
│   │   │   ├── IntroCategories.md
│   │   │   ├── IntroCategoryBaseline.md
│   │   │   ├── IntroCategoryDiscoverer.md
│   │   │   ├── IntroColdStart.md
│   │   │   ├── IntroComparableComplexParam.md
│   │   │   ├── IntroConfigSource.md
│   │   │   ├── IntroConfigUnion.md
│   │   │   ├── IntroCustomMono.md
│   │   │   ├── IntroCustomMonoArguments.md
│   │   │   ├── IntroDeferredExecution.md
│   │   │   ├── IntroDisassembly.md
│   │   │   ├── IntroDisassemblyAllJits.md
│   │   │   ├── IntroDisassemblyDry.md
│   │   │   ├── IntroDisassemblyRyuJit.md
│   │   │   ├── IntroDotMemoryDiagnoser.md
│   │   │   ├── IntroDotTraceDiagnoser.md
│   │   │   ├── IntroEnvVars.md
│   │   │   ├── IntroEventPipeProfiler.md
│   │   │   ├── IntroEventPipeProfilerAdvanced.md
│   │   │   ├── IntroExceptionDiagnoser.md
│   │   │   ├── IntroExport.md
│   │   │   ├── IntroExportJson.md
│   │   │   ├── IntroExportXml.md
│   │   │   ├── IntroFilters.md
│   │   │   ├── IntroFluentConfigBuilder.md
│   │   │   ├── IntroGcMode.md
│   │   │   ├── IntroGenericTypeArguments.md
│   │   │   ├── IntroHardwareCounters.md
│   │   │   ├── IntroInProcess.md
│   │   │   ├── IntroInProcessWrongEnv.md
│   │   │   ├── IntroInliningDiagnoser.md
│   │   │   ├── IntroJitStatsDiagnoser.md
│   │   │   ├── IntroJobBaseline.md
│   │   │   ├── IntroJoin.md
│   │   │   ├── IntroLargeAddressAware.md
│   │   │   ├── IntroMaui.md
│   │   │   ├── IntroMonitoring.md
│   │   │   ├── IntroMultimodal.md
│   │   │   ├── IntroNativeMemory.md
│   │   │   ├── IntroNuGet.md
│   │   │   ├── IntroOrderAttr.md
│   │   │   ├── IntroOrderManual.md
│   │   │   ├── IntroOutliers.md
│   │   │   ├── IntroParams.md
│   │   │   ├── IntroParamsAllValues.md
│   │   │   ├── IntroParamsPriority.md
│   │   │   ├── IntroParamsSource.md
│   │   │   ├── IntroPercentiles.md
│   │   │   ├── IntroPowerPlan.md
│   │   │   ├── IntroRankColumn.md
│   │   │   ├── IntroRatioSD.md
│   │   │   ├── IntroRatioStyle.md
│   │   │   ├── IntroSetupCleanupGlobal.md
│   │   │   ├── IntroSetupCleanupIteration.md
│   │   │   ├── IntroSetupCleanupTarget.md
│   │   │   ├── IntroStaThread.md
│   │   │   ├── IntroStatisticalTesting.md
│   │   │   ├── IntroStatisticsColumns.md
│   │   │   ├── IntroStopOnFirstError.md
│   │   │   ├── IntroSummaryStyle.md
│   │   │   ├── IntroTagColumn.md
│   │   │   ├── IntroTailcall.md
│   │   │   ├── IntroTemplate.txt
│   │   │   ├── IntroThreadingDiagnoser.md
│   │   │   ├── IntroUnicode.md
│   │   │   ├── IntroVisualStudioProfiler.md
│   │   │   ├── IntroWakeLock.md
│   │   │   ├── IntroWasm.md
│   │   │   └── toc.yml
│   │   ├── team.md
│   │   └── toc.yml
│   ├── docfx.json
│   ├── filter.yml
│   ├── guide/
│   │   └── README.md
│   ├── logo/
│   │   ├── logo-cmyk.eps
│   │   └── logo-rgb.eps
│   ├── template/
│   │   └── public/
│   │       ├── main.css
│   │       └── main.js
│   └── toc.yml
├── samples/
│   ├── BenchmarkDotNet.Maui.slnx
│   ├── BenchmarkDotNet.Samples/
│   │   ├── BenchmarkDotNet.Samples.csproj
│   │   ├── BenchmarkDotNet.Samples.csproj.DotSettings
│   │   ├── IntroArguments.cs
│   │   ├── IntroArgumentsPriority.cs
│   │   ├── IntroArgumentsSource.cs
│   │   ├── IntroArrayParam.cs
│   │   ├── IntroBasic.cs
│   │   ├── IntroBenchmarkBaseline.cs
│   │   ├── IntroCategories.cs
│   │   ├── IntroCategoryBaseline.cs
│   │   ├── IntroCategoryDiscoverer.cs
│   │   ├── IntroColdStart.cs
│   │   ├── IntroComparableComplexParam.cs
│   │   ├── IntroConfigSource.cs
│   │   ├── IntroConfigUnion.cs
│   │   ├── IntroCultureInfo.cs
│   │   ├── IntroCustomMono.cs
│   │   ├── IntroCustomMonoArguments.cs
│   │   ├── IntroDeferredExecution.cs
│   │   ├── IntroDisassembly.cs
│   │   ├── IntroDisassemblyAllJits.cs
│   │   ├── IntroDisassemblyDry.cs
│   │   ├── IntroDisassemblyRyuJit.cs
│   │   ├── IntroDotMemoryDiagnoser.cs
│   │   ├── IntroDotTraceDiagnoser.cs
│   │   ├── IntroEnvVars.cs
│   │   ├── IntroEventPipeProfiler.cs
│   │   ├── IntroEventPipeProfilerAdvanced.cs
│   │   ├── IntroExceptionDiagnoser.cs
│   │   ├── IntroExport.cs
│   │   ├── IntroExportJson.cs
│   │   ├── IntroExportXml.cs
│   │   ├── IntroFilters.cs
│   │   ├── IntroFluentConfigBuilder.cs
│   │   ├── IntroGcMode.cs
│   │   ├── IntroGenericTypeArguments.cs
│   │   ├── IntroHardwareCounters.cs
│   │   ├── IntroHidingColumns.cs
│   │   ├── IntroInProcess.cs
│   │   ├── IntroInProcessWrongEnv.cs
│   │   ├── IntroInliningDiagnoser.cs
│   │   ├── IntroJitStatsDiagnoser.cs
│   │   ├── IntroJobBaseline.cs
│   │   ├── IntroJoin.cs
│   │   ├── IntroLargeAddressAware.cs
│   │   ├── IntroMemoryRandomization.cs
│   │   ├── IntroMonitoring.cs
│   │   ├── IntroMultimodal.cs
│   │   ├── IntroNativeMemory.cs
│   │   ├── IntroNuGet.cs
│   │   ├── IntroOrderAttr.cs
│   │   ├── IntroOrderManual.cs
│   │   ├── IntroOutliers.cs
│   │   ├── IntroParams.cs
│   │   ├── IntroParamsAllValues.cs
│   │   ├── IntroParamsPriority.cs
│   │   ├── IntroParamsSource.cs
│   │   ├── IntroPercentiles.cs
│   │   ├── IntroPerfCollectProfiler.cs
│   │   ├── IntroPowerPlan.cs
│   │   ├── IntroRankColumn.cs
│   │   ├── IntroRatioSD.cs
│   │   ├── IntroRatioStyle.cs
│   │   ├── IntroSetupCleanupGlobal.cs
│   │   ├── IntroSetupCleanupIteration.cs
│   │   ├── IntroSetupCleanupTarget.cs
│   │   ├── IntroSmokeEmptyBasic.cs
│   │   ├── IntroSmokeIncrements.cs
│   │   ├── IntroSmokeStringBuilder.cs
│   │   ├── IntroSmokeValueTypes.cs
│   │   ├── IntroStaThread.cs
│   │   ├── IntroStatisticalTesting.cs
│   │   ├── IntroStatisticsColumns.cs
│   │   ├── IntroStopOnFirstError.cs
│   │   ├── IntroSummaryStyle.cs
│   │   ├── IntroTagColumn.cs
│   │   ├── IntroTailcall.cs
│   │   ├── IntroThreadingDiagnoser.cs
│   │   ├── IntroUnicode.cs
│   │   ├── IntroVisualStudioDiagnoser.cs
│   │   ├── IntroWakeLock.cs
│   │   ├── IntroWasm.cs
│   │   ├── Program.cs
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       └── launchSettings.json
│   ├── BenchmarkDotNet.Samples.FSharp/
│   │   ├── BenchmarkDotNet.Samples.FSharp.fsproj
│   │   └── Program.fs
│   ├── BenchmarkDotNet.Samples.Maui/
│   │   ├── App.xaml
│   │   ├── App.xaml.cs
│   │   ├── AppShell.xaml
│   │   ├── AppShell.xaml.cs
│   │   ├── BenchmarkDotNet.Samples.Maui.csproj
│   │   ├── MainPage.xaml
│   │   ├── MainPage.xaml.cs
│   │   ├── MauiProgram.cs
│   │   ├── Platforms/
│   │   │   ├── Android/
│   │   │   │   ├── AndroidManifest.xml
│   │   │   │   ├── MainActivity.cs
│   │   │   │   ├── MainApplication.cs
│   │   │   │   └── Resources/
│   │   │   │       └── values/
│   │   │   │           └── colors.xml
│   │   │   ├── MacCatalyst/
│   │   │   │   ├── AppDelegate.cs
│   │   │   │   ├── Entitlements.plist
│   │   │   │   ├── Info.plist
│   │   │   │   └── Program.cs
│   │   │   ├── Windows/
│   │   │   │   ├── App.xaml
│   │   │   │   ├── App.xaml.cs
│   │   │   │   ├── Package.appxmanifest
│   │   │   │   └── app.manifest
│   │   │   └── iOS/
│   │   │       ├── AppDelegate.cs
│   │   │       ├── Info.plist
│   │   │       ├── Program.cs
│   │   │       └── Resources/
│   │   │           └── PrivacyInfo.xcprivacy
│   │   ├── Properties/
│   │   │   └── launchSettings.json
│   │   └── Resources/
│   │       └── Styles/
│   │           ├── Colors.xaml
│   │           └── Styles.xaml
│   └── Directory.Build.props
├── src/
│   ├── BenchmarkDotNet/
│   │   ├── Analysers/
│   │   │   ├── AnalyserBase.cs
│   │   │   ├── BaselineCustomAnalyzer.cs
│   │   │   ├── CompositeAnalyser.cs
│   │   │   ├── Conclusion.cs
│   │   │   ├── ConclusionHelper.cs
│   │   │   ├── ConclusionKind.cs
│   │   │   ├── EnvironmentAnalyser.cs
│   │   │   ├── HideColumnsAnalyser.cs
│   │   │   ├── IAnalyser.cs
│   │   │   ├── MinIterationTimeAnalyser.cs
│   │   │   ├── MultimodalDistributionAnalyzer.cs
│   │   │   ├── OutliersAnalyser.cs
│   │   │   ├── RuntimeErrorAnalyser.cs
│   │   │   ├── ZeroMeasurementAnalyser.cs
│   │   │   └── ZeroMeasurementHelper.cs
│   │   ├── Attributes/
│   │   │   ├── ArtifactsPathAttribute.cs
│   │   │   ├── CategoryDiscovererAttribute.cs
│   │   │   ├── Columns/
│   │   │   │   ├── AllStatisticsColumnAttribute.cs
│   │   │   │   ├── BaselineColumnAttribute.cs
│   │   │   │   ├── CategoriesColumnAttribute.cs
│   │   │   │   ├── ColumnConfigBaseAttribute.cs
│   │   │   │   ├── ConfidenceIntervalErrorColumnAttribute.cs
│   │   │   │   ├── IterationsColumnAttribute.cs
│   │   │   │   ├── KurtosisColumnAttribute.cs
│   │   │   │   ├── LogicalGroupColumnAttribute.cs
│   │   │   │   ├── MValueColumnAttribute.cs
│   │   │   │   ├── MaxColumnAttribute.cs
│   │   │   │   ├── MeanColumnAttribute.cs
│   │   │   │   ├── MedianColumnAttribute.cs
│   │   │   │   ├── MinColumnAttribute.cs
│   │   │   │   ├── NamespaceColumnAttribute.cs
│   │   │   │   ├── OperationsPerSecondAttribute.cs
│   │   │   │   ├── Q1ColumnAttribute.cs
│   │   │   │   ├── Q3ColumnAttribute.cs
│   │   │   │   ├── RankColumnAttribute.cs
│   │   │   │   ├── SkewnessColumnAttribute.cs
│   │   │   │   ├── StdDevColumnAttribute.cs
│   │   │   │   ├── StdErrorColumnAttribute.cs
│   │   │   │   └── WelchTTestPValueColumnAttribute.cs
│   │   │   ├── ConfigAttribute.cs
│   │   │   ├── DisassemblyDiagnoserAttribute.cs
│   │   │   ├── EventPipeProfilerAttribute.cs
│   │   │   ├── ExceptionDiagnoserAttribute.cs
│   │   │   ├── ExceptionDiagnoserConfig.cs
│   │   │   ├── Exporters/
│   │   │   │   ├── AsciiDocExporterAttribute.cs
│   │   │   │   ├── CsvExporterAttribute.cs
│   │   │   │   ├── CsvMeasurementsExporterAttribute.cs
│   │   │   │   ├── ExporterConfigBaseAttribute.cs
│   │   │   │   ├── HtmlExporterAttribute.cs
│   │   │   │   ├── JsonExporterAttribute.cs
│   │   │   │   ├── MarkdownExporterAttribute.cs
│   │   │   │   ├── OpenMetricsExporterAttribute.cs
│   │   │   │   ├── PerfonarExporterAttribute.cs
│   │   │   │   ├── PlainExporterAttribute.cs
│   │   │   │   ├── RPlotExporterAttribute.cs
│   │   │   │   └── XmlExporterAttribute.cs
│   │   │   ├── Filters/
│   │   │   │   ├── AllCategoriesFilterAttribute.cs
│   │   │   │   ├── AnyCategoriesFilterAttribute.cs
│   │   │   │   ├── AotFilterAttribute.cs
│   │   │   │   ├── FilterConfigBaseAttribute.cs
│   │   │   │   ├── OperatingSystemsArchitectureFilterAttribute.cs
│   │   │   │   └── OperatingSystemsFilterAttribute.cs
│   │   │   ├── GroupBenchmarksByAttribute.cs
│   │   │   ├── HardwareCountersAttribute.cs
│   │   │   ├── HideColumnsAttribute.cs
│   │   │   ├── Jobs/
│   │   │   │   ├── DryJobAttribute.cs
│   │   │   │   ├── InProcessAttribute.cs
│   │   │   │   ├── JobConfigbaseAttribute.cs
│   │   │   │   ├── LegacyJitX64JobAttribute.cs
│   │   │   │   ├── LegacyJitX86JobAttribute.cs
│   │   │   │   ├── LongRunJobAttribute.cs
│   │   │   │   ├── MediumRunJobAttribute.cs
│   │   │   │   ├── MonoJobAttribute.cs
│   │   │   │   ├── RyuJitX64JobAttribute.cs
│   │   │   │   ├── RyuJitX86JobAttribute.cs
│   │   │   │   ├── ShortRunJobAttribute.cs
│   │   │   │   ├── SimpleJobAttribute.cs
│   │   │   │   └── VeryLongRunJobAttribute.cs
│   │   │   ├── KeepBenchmarkFilesAttribute.cs
│   │   │   ├── MemoryDiagnoserAttribute.cs
│   │   │   ├── Mutators/
│   │   │   │   ├── EvaluateOverheadAttribute.cs
│   │   │   │   ├── GcConcurrentAttribute.cs
│   │   │   │   ├── GcForceAttribute.cs
│   │   │   │   ├── GcServerAttribute.cs
│   │   │   │   ├── InnerIterationCountAttribute.cs
│   │   │   │   ├── InvocationCountAttribute.cs
│   │   │   │   ├── IterationCountAttribute.cs
│   │   │   │   ├── IterationTimeAttribute.cs
│   │   │   │   ├── JobMutatorConfigBaseAttribute.cs
│   │   │   │   ├── MaxAbsoluteErrorAttribute.cs
│   │   │   │   ├── MaxIterationCountAttribute.cs
│   │   │   │   ├── MaxRelativeErrorAttribute.cs
│   │   │   │   ├── MaxWarmupCountAttribute.cs
│   │   │   │   ├── MemoryRandomizationAttribute.cs
│   │   │   │   ├── MinInvokeCountAttribute.cs
│   │   │   │   ├── MinIterationCountAttribute.cs
│   │   │   │   ├── MinIterationTimeAttribute.cs
│   │   │   │   ├── MinWarmupCountAttribute.cs
│   │   │   │   ├── OutliersAttribute.cs
│   │   │   │   ├── ProcessCountAttribute.cs
│   │   │   │   ├── RunOncePerIterationAttribute.cs
│   │   │   │   └── WarmupCountAttribute.cs
│   │   │   ├── OrdererAttribute.cs
│   │   │   ├── PerfCollectProfilerAttribute.cs
│   │   │   ├── StopOnFirstErrorAttribute.cs
│   │   │   ├── ThreadingDiagnoserAttribute.cs
│   │   │   ├── UnicodeConsoleLoggerAttribute.cs
│   │   │   ├── Validators/
│   │   │   │   ├── ExecutionValidatorAttribute.cs
│   │   │   │   ├── ReturnValueValidatorAttribute.cs
│   │   │   │   └── ValidatorConfigBaseAttribute.cs
│   │   │   └── WakeLockAttribute.cs
│   │   ├── BenchmarkDotNet.csproj
│   │   ├── BenchmarkDotNet.csproj.DotSettings
│   │   ├── BenchmarkDotNet.targets
│   │   ├── Characteristics/
│   │   │   ├── Characteristic.cs
│   │   │   ├── CharacteristicHelper.cs
│   │   │   ├── CharacteristicObject.cs
│   │   │   ├── CharacteristicObject`1.cs
│   │   │   ├── CharacteristicPresenter.cs
│   │   │   ├── CharacteristicSet.cs
│   │   │   ├── CharacteristicSetPresenter.cs
│   │   │   ├── Characteristic`1.cs
│   │   │   ├── CompositeResolver.cs
│   │   │   ├── IResolver.cs
│   │   │   └── Resolver.cs
│   │   ├── Code/
│   │   │   ├── ArrayParam.cs
│   │   │   ├── CodeGenBenchmarkRunCallType.cs
│   │   │   ├── CodeGenerator.cs
│   │   │   ├── DeclarationsProvider.cs
│   │   │   ├── EnumParam.cs
│   │   │   └── IParam.cs
│   │   ├── Columns/
│   │   │   ├── BaselineAllocationRatioColumn.cs
│   │   │   ├── BaselineColumn.cs
│   │   │   ├── BaselineCustomColumn.cs
│   │   │   ├── BaselineRatioColumn.cs
│   │   │   ├── CategoriesColumn.cs
│   │   │   ├── Column.cs
│   │   │   ├── ColumnCategory.cs
│   │   │   ├── ColumnExtensions.cs
│   │   │   ├── ColumnHidingByIdRule.cs
│   │   │   ├── ColumnHidingByNameRule.cs
│   │   │   ├── CompositeColumnProvider.cs
│   │   │   ├── DefaultColumnProvider.cs
│   │   │   ├── EmptyColumnProvider.cs
│   │   │   ├── IColumn.cs
│   │   │   ├── IColumnHidingRule.cs
│   │   │   ├── IColumnProvider.cs
│   │   │   ├── JobCharacteristicColumn.cs
│   │   │   ├── LogicalGroupColumn.cs
│   │   │   ├── MetricColumn.cs
│   │   │   ├── ParamColumn.cs
│   │   │   ├── RankColumn.cs
│   │   │   ├── RatioColumnStyle.cs
│   │   │   ├── SimpleColumnProvider.cs
│   │   │   ├── StatisticColumn.cs
│   │   │   ├── StatisticalTestColumn.cs
│   │   │   ├── TagColumn.cs
│   │   │   ├── TargetMethodColumn.cs
│   │   │   └── UnitType.cs
│   │   ├── Configs/
│   │   │   ├── BenchmarkLogicalGroupRule.cs
│   │   │   ├── ConfigExtensions.cs
│   │   │   ├── ConfigOptions.cs
│   │   │   ├── ConfigUnionRule.cs
│   │   │   ├── DebugConfig.cs
│   │   │   ├── DefaultConfig.cs
│   │   │   ├── IConfig.cs
│   │   │   ├── IConfigSource.cs
│   │   │   ├── ImmutableConfig.cs
│   │   │   ├── ImmutableConfigBuilder.cs
│   │   │   ├── ManualConfig.cs
│   │   │   └── WakeLockType.cs
│   │   ├── ConsoleArguments/
│   │   │   ├── CommandLineOptions.cs
│   │   │   ├── ConfigParser.cs
│   │   │   ├── CorrectionsSuggester.cs
│   │   │   ├── LevenshteinDistanceCalculator.cs
│   │   │   ├── ListBenchmarks/
│   │   │   │   ├── BenchmarkCasesPrinter.cs
│   │   │   │   ├── FlatBenchmarkCasesPrinter.cs
│   │   │   │   ├── IBenchmarkCasesPrinter.cs
│   │   │   │   ├── ListBechnmarkCaseMode.cs
│   │   │   │   ├── Node.cs
│   │   │   │   └── TreeBenchmarkCasesPrinter.cs
│   │   │   ├── LoggerWrapper.cs
│   │   │   └── RuntimeFlavor.cs
│   │   ├── Detectors/
│   │   │   ├── Cpu/
│   │   │   │   ├── HardwareIntrinsics.cs
│   │   │   │   ├── ICpuDetector.cs
│   │   │   │   ├── Linux/
│   │   │   │   │   ├── LinuxCpuDetector.cs
│   │   │   │   │   └── LinuxCpuInfoParser.cs
│   │   │   │   ├── Windows/
│   │   │   │   │   ├── MosCpuDetector.cs
│   │   │   │   │   ├── PowershellWmiCpuDetector.cs
│   │   │   │   │   ├── PowershellWmiCpuInfoParser.cs
│   │   │   │   │   ├── WindowsCpuDetector.cs
│   │   │   │   │   ├── WmicCpuDetector.cs
│   │   │   │   │   ├── WmicCpuInfoKeyNames.cs
│   │   │   │   │   └── WmicCpuInfoParser.cs
│   │   │   │   └── macOS/
│   │   │   │       ├── MacOsCpuDetector.cs
│   │   │   │       └── SysctlCpuInfoParser.cs
│   │   │   ├── CpuDetector.cs
│   │   │   └── OsDetector.cs
│   │   ├── Diagnosers/
│   │   │   ├── AllocatedMemoryMetricDescriptor.cs
│   │   │   ├── AllocatedNativeMemoryDescriptor.cs
│   │   │   ├── CompositeDiagnoser.cs
│   │   │   ├── DiagnoserActionParameters.cs
│   │   │   ├── DiagnoserResults.cs
│   │   │   ├── DiagnosersLoader.cs
│   │   │   ├── EventPipeProfile.cs
│   │   │   ├── EventPipeProfileMapper.cs
│   │   │   ├── EventPipeProfiler.cs
│   │   │   ├── ExceptionDiagnoser.cs
│   │   │   ├── HardwareCounter.cs
│   │   │   ├── IDiagnoser.cs
│   │   │   ├── IHardwareCounterDiagnoser.cs
│   │   │   ├── IProfiler.cs
│   │   │   ├── InProcessDiagnoserActionParameters.cs
│   │   │   ├── InProcessDiagnoserHandlerData.cs
│   │   │   ├── InProcessDiagnoserRouter.cs
│   │   │   ├── MemoryDiagnoser.cs
│   │   │   ├── MemoryDiagnoserConfig.cs
│   │   │   ├── PerfCollectProfiler.cs
│   │   │   ├── PerfCollectProfilerConfig.cs
│   │   │   ├── PmcMetricDescriptor.cs
│   │   │   ├── PmcStats.cs
│   │   │   ├── PreciseMachineCounter.cs
│   │   │   ├── RunMode.cs
│   │   │   ├── SnapshotProfilerBase.cs
│   │   │   ├── SpeedScopeExporter.cs
│   │   │   ├── ThreadingDiagnoser.cs
│   │   │   ├── ThreadingDiagnoserConfig.cs
│   │   │   └── UnresolvedDiagnoser.cs
│   │   ├── Disassemblers/
│   │   │   ├── Arm64Disassembler.cs
│   │   │   ├── Arm64InstructionFormatter.cs
│   │   │   ├── ClrMdArgs.cs
│   │   │   ├── ClrMdDisassembler.cs
│   │   │   ├── DataContracts.cs
│   │   │   ├── DisassemblyAnalyzer.cs
│   │   │   ├── DisassemblyDiagnoser.cs
│   │   │   ├── DisassemblyDiagnoserConfig.cs
│   │   │   ├── DisassemblySyntax.cs
│   │   │   ├── Exporters/
│   │   │   │   ├── CombinedDisassemblyExporter.cs
│   │   │   │   ├── DisassemblyPrettifier.cs
│   │   │   │   ├── GithubMarkdownDiffDisassemblyExporter.cs
│   │   │   │   ├── GithubMarkdownDisassemblyExporter.cs
│   │   │   │   ├── HtmlDisassemblyExporter.cs
│   │   │   │   └── SymbolResolver.cs
│   │   │   ├── InstructionFormatter.cs
│   │   │   ├── IntelDisassembler.cs
│   │   │   ├── IntelInstructionFormatter.cs
│   │   │   ├── MonoDisassembler.cs
│   │   │   └── SourceCodeProvider.cs
│   │   ├── Engines/
│   │   │   ├── AnonymousPipesHost.cs
│   │   │   ├── BenchmarkSignal.cs
│   │   │   ├── Consumer.cs
│   │   │   ├── ConsumerExtensions.cs
│   │   │   ├── DeadCodeEliminationHelper.cs
│   │   │   ├── Engine.cs
│   │   │   ├── EngineActualStage.cs
│   │   │   ├── EngineEventSource.cs
│   │   │   ├── EngineFactory.cs
│   │   │   ├── EngineJitStage.cs
│   │   │   ├── EngineParameters.cs
│   │   │   ├── EnginePilotStage.cs
│   │   │   ├── EngineResolver.cs
│   │   │   ├── EngineStage.cs
│   │   │   ├── EngineWarmupStage.cs
│   │   │   ├── GcStats.cs
│   │   │   ├── HostExtensions.cs
│   │   │   ├── HostSignal.cs
│   │   │   ├── IEngine.cs
│   │   │   ├── IEngineFactory.cs
│   │   │   ├── IHost.cs
│   │   │   ├── IterationData.cs
│   │   │   ├── IterationMode.cs
│   │   │   ├── IterationStage.cs
│   │   │   ├── NoAcknowledgementConsoleHost.cs
│   │   │   ├── RunResults.cs
│   │   │   └── RunStrategy.cs
│   │   ├── Environments/
│   │   │   ├── BenchmarkEnvironmentInfo.cs
│   │   │   ├── EnvironmentResolver.cs
│   │   │   ├── GcResolver.cs
│   │   │   ├── HostEnvironmentInfo.cs
│   │   │   ├── InfrastructureResolver.cs
│   │   │   ├── Jit.cs
│   │   │   ├── PhysicalMemoryInfo.cs
│   │   │   ├── Platform.cs
│   │   │   ├── PowerPlan.cs
│   │   │   └── Runtimes/
│   │   │       ├── ClrRuntime.cs
│   │   │       ├── CoreRuntime.cs
│   │   │       ├── CustomRuntime.cs
│   │   │       ├── MonoAotLLVMRuntime.cs
│   │   │       ├── MonoRuntime.cs
│   │   │       ├── NativeAotRuntime.cs
│   │   │       ├── R2RRuntime.cs
│   │   │       ├── Runtime.cs
│   │   │       └── WasmRuntime.cs
│   │   ├── EventProcessors/
│   │   │   ├── CompositeEventProcessor.cs
│   │   │   └── EventProcessor.cs
│   │   ├── Exporters/
│   │   │   ├── AsciiDocExporter.cs
│   │   │   ├── BenchmarkReportExporter.cs
│   │   │   ├── CompositeExporter.cs
│   │   │   ├── Csv/
│   │   │   │   ├── CsvExporter.cs
│   │   │   │   ├── CsvHelper.cs
│   │   │   │   ├── CsvMeasurementsExporter.cs
│   │   │   │   ├── CsvSeparator.cs
│   │   │   │   └── CsvSeparatorExtensions.cs
│   │   │   ├── DefaultExporters.cs
│   │   │   ├── ExporterBase.cs
│   │   │   ├── FullNameProvider.cs
│   │   │   ├── HtmlExporter.cs
│   │   │   ├── IExporter.cs
│   │   │   ├── IExporterDependencies.cs
│   │   │   ├── InstructionPointerExporter.cs
│   │   │   ├── Json/
│   │   │   │   ├── JsonExporter.cs
│   │   │   │   └── JsonExporterBase.cs
│   │   │   ├── MarkdownExporter.cs
│   │   │   ├── OpenMetrics/
│   │   │   │   └── OpenMetricsExporter.cs
│   │   │   ├── PerfonarJsonExporter.cs
│   │   │   ├── PerfonarMdExporter.cs
│   │   │   ├── PlainExporter.cs
│   │   │   ├── RPlotExporter.cs
│   │   │   └── Xml/
│   │   │       ├── IXmlSerializer.cs
│   │   │       ├── SimpleXmlWriter.cs
│   │   │       ├── SummaryDto.cs
│   │   │       ├── XmlExporter.cs
│   │   │       ├── XmlExporterBase.cs
│   │   │       └── XmlSerializer.cs
│   │   ├── Extensions/
│   │   │   ├── AssemblyExtensions.cs
│   │   │   ├── CommonExtensions.cs
│   │   │   ├── ConfigurationExtensions.cs
│   │   │   ├── CultureInfoExtensions.cs
│   │   │   ├── DoubleExtensions.cs
│   │   │   ├── EncodingExtensions.cs
│   │   │   ├── Hashing.cs
│   │   │   ├── MathExtensions.cs
│   │   │   ├── MethodInfoExtensions.cs
│   │   │   ├── PathFeatures.cs
│   │   │   ├── Polyfills/
│   │   │   │   ├── ArgumentExceptionExtensions.cs
│   │   │   │   ├── ArgumentNullExceptionExtensions.cs
│   │   │   │   └── EnumExtensions.cs
│   │   │   ├── ProcessExtensions.cs
│   │   │   ├── ReflectionExtensions.cs
│   │   │   ├── ReportExtensions.cs
│   │   │   ├── RuntimeMonikerExtensions.cs
│   │   │   ├── StatisticsExtensions.cs
│   │   │   ├── StringAndTextExtensions.cs
│   │   │   └── ThreadExtensions.cs
│   │   ├── Filters/
│   │   │   ├── AllCategoriesFilter.cs
│   │   │   ├── AnyCategoriesFilter.cs
│   │   │   ├── AttributesFilter.cs
│   │   │   ├── DisjunctionFilter.cs
│   │   │   ├── GlobFilter.cs
│   │   │   ├── IFilter.cs
│   │   │   ├── NameFilter.cs
│   │   │   ├── SimpleFilter.cs
│   │   │   └── UnionFilter.cs
│   │   ├── Helpers/
│   │   │   ├── ArtifactFileNameHelper.cs
│   │   │   ├── AsciiHelper.cs
│   │   │   ├── Assertion.cs
│   │   │   ├── AwaitHelper.cs
│   │   │   ├── CodeAnnotations.cs
│   │   │   ├── ConsoleExitHandler.cs
│   │   │   ├── DefaultCultureInfo.cs
│   │   │   ├── DirtyAssemblyResolveHelper.cs
│   │   │   ├── DisposeAtProcessTermination.cs
│   │   │   ├── ExternalToolsHelper.cs
│   │   │   ├── FolderNameHelper.cs
│   │   │   ├── FrameworkVersionHelper.cs
│   │   │   ├── GenericBenchmarksBuilder.cs
│   │   │   ├── HashCode.cs
│   │   │   ├── LinuxOsReleaseHelper.cs
│   │   │   ├── PowerManagementHelper.cs
│   │   │   ├── PowerShellLocator.cs
│   │   │   ├── ProcessHelper.cs
│   │   │   ├── Reflection.Emit/
│   │   │   │   ├── EmitParameterInfo.cs
│   │   │   │   ├── IlGeneratorCallExtensions.cs
│   │   │   │   ├── IlGeneratorEmitOpExtensions.cs
│   │   │   │   ├── IlGeneratorStatementExtensions.cs
│   │   │   │   ├── MethodBuilderExtensions.cs
│   │   │   │   └── TypeBuilderExtensions.cs
│   │   │   ├── ResourceHelper.cs
│   │   │   ├── SectionsHelper.cs
│   │   │   ├── SourceCodeHelper.cs
│   │   │   ├── TaskbarProgress.cs
│   │   │   ├── UnitHelper.cs
│   │   │   ├── UserInteractionHelper.cs
│   │   │   └── XUnitHelper.cs
│   │   ├── Jobs/
│   │   │   ├── AccuracyMode.cs
│   │   │   ├── Argument.cs
│   │   │   ├── EnvironmentMode.cs
│   │   │   ├── EnvironmentVariable.cs
│   │   │   ├── GcMode.cs
│   │   │   ├── GcModeExtensions.cs
│   │   │   ├── InfrastructureMode.cs
│   │   │   ├── Job.cs
│   │   │   ├── JobComparer.cs
│   │   │   ├── JobExtensions.cs
│   │   │   ├── JobIdGenerator.cs
│   │   │   ├── JobMode`1.cs
│   │   │   ├── MetaMode.cs
│   │   │   └── RunMode.cs
│   │   ├── Loggers/
│   │   │   ├── AccumulationLogger.cs
│   │   │   ├── AsyncProcessOutputReader.cs
│   │   │   ├── Broker.cs
│   │   │   ├── CompositeLogger.cs
│   │   │   ├── ConsoleLogger.cs
│   │   │   ├── ILogger.cs
│   │   │   ├── LinqPadLogger.cs
│   │   │   ├── LogCapture.cs
│   │   │   ├── LogKind.cs
│   │   │   ├── LoggerExtensions.cs
│   │   │   ├── LoggerWithPrefix.cs
│   │   │   ├── NullLogger.cs
│   │   │   ├── StreamLogger.cs
│   │   │   └── TextLogger.cs
│   │   ├── Mathematics/
│   │   │   ├── LegacyConfidenceInterval.cs
│   │   │   ├── MathHelper.cs
│   │   │   ├── MeasurementsStatistics.cs
│   │   │   ├── NumeralSystem.cs
│   │   │   ├── NumeralSystemExtensions.cs
│   │   │   ├── PercentileValues.cs
│   │   │   ├── RankHelper.cs
│   │   │   ├── RatioStatistics.cs
│   │   │   └── Statistics.cs
│   │   ├── Models/
│   │   │   ├── BdnBenchmark.cs
│   │   │   ├── BdnEnvironment.cs
│   │   │   ├── BdnExecution.cs
│   │   │   ├── BdnHostInfo.cs
│   │   │   ├── BdnLifecycle.cs
│   │   │   └── BdnSchema.cs
│   │   ├── Order/
│   │   │   ├── CategoryComparer.cs
│   │   │   ├── DefaultOrderer.cs
│   │   │   ├── IOrderer.cs
│   │   │   ├── JobOrderPolicy.cs
│   │   │   ├── MethodOrderPolicy.cs
│   │   │   └── SummaryOrderPolicy.cs
│   │   ├── Parameters/
│   │   │   ├── ParameterComparer.cs
│   │   │   ├── ParameterDefinition.cs
│   │   │   ├── ParameterDefinitions.cs
│   │   │   ├── ParameterEqualityComparer.cs
│   │   │   ├── ParameterInstance.cs
│   │   │   ├── ParameterInstances.cs
│   │   │   └── SmartParamBuilder.cs
│   │   ├── Portability/
│   │   │   ├── Antivirus.cs
│   │   │   ├── CodeGen.cs
│   │   │   ├── HyperV.cs
│   │   │   ├── JitInfo.cs
│   │   │   ├── Libc.cs
│   │   │   ├── RuntimeInformation.cs
│   │   │   ├── StringExtensions.cs
│   │   │   ├── VMware.cs
│   │   │   ├── VirtualBox.cs
│   │   │   └── VirtualMachineHypervisor.cs
│   │   ├── Properties/
│   │   │   ├── AssemblyInfo.cs
│   │   │   └── BenchmarkDotNetInfo.cs
│   │   ├── Reports/
│   │   │   ├── BaseliningStrategy.cs
│   │   │   ├── BenchmarkReport.cs
│   │   │   ├── BenchmarkReportExtensions.cs
│   │   │   ├── DisplayPrecisionManager.cs
│   │   │   ├── Measurement.cs
│   │   │   ├── MeasurementExtensions.cs
│   │   │   ├── Metric.cs
│   │   │   ├── Summary.cs
│   │   │   ├── SummaryExtensions.cs
│   │   │   ├── SummaryStyle.cs
│   │   │   ├── SummaryTable.cs
│   │   │   └── SummaryTableExtensions.cs
│   │   ├── Running/
│   │   │   ├── BenchmarkBuildInfo.cs
│   │   │   ├── BenchmarkCase.cs
│   │   │   ├── BenchmarkConverter.cs
│   │   │   ├── BenchmarkId.cs
│   │   │   ├── BenchmarkPartitioner.cs
│   │   │   ├── BenchmarkRunInfo.cs
│   │   │   ├── BenchmarkRunnerClean.cs
│   │   │   ├── BenchmarkRunnerDirty.cs
│   │   │   ├── BenchmarkSwitcher.cs
│   │   │   ├── BuildPartition.cs
│   │   │   ├── ConsoleTitler.cs
│   │   │   ├── DefaultCategoryDiscoverer.cs
│   │   │   ├── Descriptor.cs
│   │   │   ├── DescriptorComparer.cs
│   │   │   ├── ICategoryDiscoverer.cs
│   │   │   ├── IUserInteraction.cs
│   │   │   ├── InvalidBenchmarkDeclarationException.cs
│   │   │   ├── PowerManagementApplier.cs
│   │   │   ├── TypeFilter.cs
│   │   │   ├── UserInteraction.cs
│   │   │   ├── WakeLock.PInvoke.cs
│   │   │   ├── WakeLock.SafePowerHandle.cs
│   │   │   └── WakeLock.cs
│   │   ├── Serialization/
│   │   │   ├── BdnJsonSerializer.cs
│   │   │   ├── BdnJsonSerializerContext.cs
│   │   │   └── BdnSimpleJsonSerializer.cs
│   │   ├── Templates/
│   │   │   ├── BenchmarkProgram.txt
│   │   │   ├── BenchmarkType.txt
│   │   │   ├── BuildPlots.R
│   │   │   ├── CsProj.txt
│   │   │   ├── MonoAOTLLVMCsProj.txt
│   │   │   ├── R2RCsProj.txt
│   │   │   ├── WasmCsProj.txt
│   │   │   ├── WasmLinkerDescription.xml
│   │   │   ├── benchmark-main.mjs
│   │   │   ├── highlightingLabelsScript.js
│   │   │   └── perfcollect
│   │   ├── Toolchains/
│   │   │   ├── AppConfigGenerator.cs
│   │   │   ├── ArtifactsPaths.cs
│   │   │   ├── CoreRun/
│   │   │   │   ├── CoreRunGenerator.cs
│   │   │   │   ├── CoreRunPublisher.cs
│   │   │   │   └── CoreRunToolchain.cs
│   │   │   ├── CsProj/
│   │   │   │   ├── CsProjClassicNetToolchain.cs
│   │   │   │   ├── CsProjCoreToolchain.cs
│   │   │   │   └── CsProjGenerator.cs
│   │   │   ├── DotNetCli/
│   │   │   │   ├── CustomDotNetCliToolchainBuilder.cs
│   │   │   │   ├── DotNetCliBuilder.cs
│   │   │   │   ├── DotNetCliCommand.cs
│   │   │   │   ├── DotNetCliCommandExecutor.cs
│   │   │   │   ├── DotNetCliCommandResult.cs
│   │   │   │   ├── DotNetCliExecutor.cs
│   │   │   │   ├── DotNetCliGenerator.cs
│   │   │   │   ├── DotNetCliPublisher.cs
│   │   │   │   ├── MsBuildErrorMapper.cs
│   │   │   │   └── NetCoreAppSettings.cs
│   │   │   ├── Executor.cs
│   │   │   ├── GeneratorBase.cs
│   │   │   ├── IBuilder.cs
│   │   │   ├── IExecutor.cs
│   │   │   ├── IGenerator.cs
│   │   │   ├── IToolchain.cs
│   │   │   ├── InProcess/
│   │   │   │   ├── Emit/
│   │   │   │   │   ├── Implementation/
│   │   │   │   │   │   ├── ConsumableTypeInfo.cs
│   │   │   │   │   │   ├── Emitters/
│   │   │   │   │   │   │   ├── EmitExtensions.cs
│   │   │   │   │   │   │   └── RunnableEmitter.cs
│   │   │   │   │   │   └── Runnable/
│   │   │   │   │   │       ├── RunnableConstants.cs
│   │   │   │   │   │       ├── RunnableProgram.cs
│   │   │   │   │   │       ├── RunnableReflectionHelpers.cs
│   │   │   │   │   │       └── RunnableReuse.cs
│   │   │   │   │   ├── InProcessEmitArtifactsPath.cs
│   │   │   │   │   ├── InProcessEmitBuilder.cs
│   │   │   │   │   ├── InProcessEmitExecutor.cs
│   │   │   │   │   ├── InProcessEmitGenerator.cs
│   │   │   │   │   ├── InProcessEmitSettings.cs
│   │   │   │   │   └── InProcessEmitToolchain.cs
│   │   │   │   ├── InProcessHost.cs
│   │   │   │   ├── InProcessSettings.cs
│   │   │   │   ├── InProcessValidator.cs
│   │   │   │   └── NoEmit/
│   │   │   │       ├── BenchmarkAction.cs
│   │   │   │       ├── BenchmarkActionFactory.cs
│   │   │   │       ├── BenchmarkActionFactory_Base.cs
│   │   │   │       ├── BenchmarkActionFactory_Implementations.cs
│   │   │   │       ├── InProcessNoEmitBuilder.cs
│   │   │   │       ├── InProcessNoEmitExecutor.cs
│   │   │   │       ├── InProcessNoEmitGenerator.cs
│   │   │   │       ├── InProcessNoEmitRunner.cs
│   │   │   │       ├── InProcessNoEmitSettings.cs
│   │   │   │       └── InProcessNoEmitToolchain.cs
│   │   │   ├── LargeAddressAware.cs
│   │   │   ├── Mono/
│   │   │   │   ├── MonoAotBuilder.cs
│   │   │   │   ├── MonoAotToolchain.cs
│   │   │   │   ├── MonoGenerator.cs
│   │   │   │   ├── MonoPublisher.cs
│   │   │   │   └── MonoToolchain.cs
│   │   │   ├── MonoAotLLVM/
│   │   │   │   ├── MonoAotCompilerMode.cs
│   │   │   │   ├── MonoAotLLVMGenerator.cs
│   │   │   │   └── MonoAotLLVMToolChain.cs
│   │   │   ├── MonoWasm/
│   │   │   │   ├── WasmExecutor.cs
│   │   │   │   ├── WasmGenerator.cs
│   │   │   │   └── WasmToolchain.cs
│   │   │   ├── NativeAot/
│   │   │   │   ├── Generator.cs
│   │   │   │   ├── NativeAotToolchain.cs
│   │   │   │   └── NativeAotToolchainBuilder.cs
│   │   │   ├── Parameters/
│   │   │   │   └── ExecuteParameters.cs
│   │   │   ├── R2R/
│   │   │   │   ├── R2RGenerator.cs
│   │   │   │   └── R2RToolchain.cs
│   │   │   ├── Results/
│   │   │   │   ├── BuildResult.cs
│   │   │   │   ├── ExecuteResult.cs
│   │   │   │   └── GenerateResult.cs
│   │   │   ├── Roslyn/
│   │   │   │   ├── Builder.cs
│   │   │   │   ├── Generator.cs
│   │   │   │   ├── RoslynToolchain.cs
│   │   │   │   └── RoslynWorkarounds.cs
│   │   │   ├── Toolchain.cs
│   │   │   └── ToolchainExtensions.cs
│   │   └── Validators/
│   │       ├── BaselineValidator.cs
│   │       ├── BenchmarkProcessValidator.cs
│   │       ├── CompilationValidator.cs
│   │       ├── CompositeValidator.cs
│   │       ├── ConfigValidator.cs
│   │       ├── DeferredExecutionValidator.cs
│   │       ├── DiagnosersValidator.cs
│   │       ├── DotNetSdkValidator.cs
│   │       ├── ExecutionValidator.cs
│   │       ├── ExecutionValidatorBase.cs
│   │       ├── GenericBenchmarksValidator.cs
│   │       ├── IValidator.cs
│   │       ├── JitOptimizationsValidator.cs
│   │       ├── ParamsAllValuesValidator.cs
│   │       ├── ParamsValidator.cs
│   │       ├── ReturnValueValidator.cs
│   │       ├── RunModeValidator.cs
│   │       ├── RuntimeValidator.cs
│   │       ├── SetupCleanupValidator.cs
│   │       ├── ShadowCopyValidator.cs
│   │       ├── ValidationError.cs
│   │       ├── ValidationErrorReporter.cs
│   │       └── ValidationParameters.cs
│   ├── BenchmarkDotNet.Analyzers/
│   │   ├── AnalyzerHelper.cs
│   │   ├── AnalyzerReleases.Shipped.md
│   │   ├── AnalyzerReleases.Unshipped.md
│   │   ├── Attributes/
│   │   │   ├── ArgumentsAttributeAnalyzer.cs
│   │   │   ├── GeneralArgumentAttributesAnalyzer.cs
│   │   │   ├── GeneralParameterAttributesAnalyzer.cs
│   │   │   ├── ParamsAllValuesAttributeAnalyzer.cs
│   │   │   └── ParamsAttributeAnalyzer.cs
│   │   ├── BenchmarkDotNet.Analyzers.csproj
│   │   ├── BenchmarkDotNetAnalyzerResources.Designer.cs
│   │   ├── BenchmarkDotNetAnalyzerResources.resx
│   │   ├── BenchmarkRunner/
│   │   │   └── RunAnalyzer.cs
│   │   ├── DiagnosticIds.cs
│   │   └── General/
│   │       └── BenchmarkClassAnalyzer.cs
│   ├── BenchmarkDotNet.Annotations/
│   │   ├── Attributes/
│   │   │   ├── ArgumentsAttribute.cs
│   │   │   ├── ArgumentsSourceAttribute.cs
│   │   │   ├── BenchmarkAttribute.cs
│   │   │   ├── BenchmarkCategoryAttribute.cs
│   │   │   ├── GenericTypeArgumentsAttribute.cs
│   │   │   ├── GlobalCleanupAttribute.cs
│   │   │   ├── GlobalSetupAttribute.cs
│   │   │   ├── IterationCleanupAttribute.cs
│   │   │   ├── IterationSetupAttribute.cs
│   │   │   ├── ParamsAllValuesAttribute.cs
│   │   │   ├── ParamsAttribute.cs
│   │   │   ├── ParamsSourceAttribute.cs
│   │   │   ├── PriorityAttribute.cs
│   │   │   └── TargetedAttribute.cs
│   │   ├── BenchmarkDotNet.Annotations.csproj
│   │   ├── Jobs/
│   │   │   └── RuntimeMoniker.cs
│   │   └── buildTransitive/
│   │       └── netstandard2.0/
│   │           └── BenchmarkDotNet.Annotations.targets
│   ├── BenchmarkDotNet.Diagnostics.Windows/
│   │   ├── BenchmarkDotNet.Diagnostics.Windows.csproj
│   │   ├── ConcurrencyVisualizerProfiler.cs
│   │   ├── Configs/
│   │   │   ├── ConcurrencyVisualizerProfilerAttribute.cs
│   │   │   ├── EtwProfilerAttribute.cs
│   │   │   ├── InliningDiagnoserAttribute.cs
│   │   │   ├── JitStatsDiagnoserAttribute.cs
│   │   │   ├── NativeMemoryProfilerAttribute.cs
│   │   │   └── TailCallDiagnoserAttribute.cs
│   │   ├── EtwDiagnoser.cs
│   │   ├── EtwProfiler.cs
│   │   ├── EtwProfilerConfig.cs
│   │   ├── HardwareCounters.cs
│   │   ├── InliningDiagnoser.cs
│   │   ├── JitDiagnoser.cs
│   │   ├── JitStatsDiagnoser.cs
│   │   ├── NativeMemoryProfiler.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── Sessions.cs
│   │   ├── TailCallDiagnoser.cs
│   │   └── Tracing/
│   │       ├── BenchmarkEvent.cs
│   │       ├── EngineEventLogParser.cs
│   │       ├── IterationEvent.cs
│   │       ├── NativeMemoryLogParser.cs
│   │       └── TraceLogParser.cs
│   ├── BenchmarkDotNet.Diagnostics.dotMemory/
│   │   ├── BenchmarkDotNet.Diagnostics.dotMemory.csproj
│   │   ├── DotMemoryDiagnoser.cs
│   │   ├── DotMemoryDiagnoserAttribute.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── BenchmarkDotNet.Diagnostics.dotTrace/
│   │   ├── BenchmarkDotNet.Diagnostics.dotTrace.csproj
│   │   ├── DotTraceDiagnoser.cs
│   │   ├── DotTraceDiagnoserAttribute.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── BenchmarkDotNet.Disassembler/
│   │   ├── BenchmarkDotNet.Disassembler.csproj
│   │   └── Program.cs
│   ├── BenchmarkDotNet.Exporters.Plotting/
│   │   ├── BenchmarkDotNet.Exporters.Plotting.csproj
│   │   └── ScottPlotExporter.cs
│   ├── BenchmarkDotNet.TestAdapter/
│   │   ├── BenchmarkCaseExtensions.cs
│   │   ├── BenchmarkDotNet.TestAdapter.csproj
│   │   ├── BenchmarkEnumerator.cs
│   │   ├── BenchmarkExecutor.cs
│   │   ├── Remoting/
│   │   │   ├── BenchmarkEnumeratorWrapper.cs
│   │   │   ├── BenchmarkExecutorWrapper.cs
│   │   │   ├── MessageLoggerWrapper.cs
│   │   │   ├── SerializationHelpers.cs
│   │   │   └── TestExecutionRecorderWrapper.cs
│   │   ├── Utility/
│   │   │   ├── LoggerHelper.cs
│   │   │   └── TestCaseFilter.cs
│   │   ├── VSTestAdapter.cs
│   │   ├── VSTestEventProcessor.cs
│   │   ├── VSTestLogger.cs
│   │   ├── VSTestProperties.cs
│   │   ├── build/
│   │   │   └── BenchmarkDotNet.TestAdapter.props
│   │   └── entrypoints/
│   │       ├── EntryPoint.cs
│   │       ├── EntryPoint.fs
│   │       └── EntryPoint.vb
│   └── BenchmarkDotNet.Weaver/
│       ├── .gitignore
│       ├── BenchmarkDotNet.Weaver.csproj
│       ├── buildTransitive/
│       │   └── netstandard2.0/
│       │       └── BenchmarkDotNet.Weaver.targets
│       ├── packages/
│       │   └── BenchmarkDotNet.Weaver.0.16.0-develop-3.nupkg
│       └── src/
│           ├── ReferencePathAssemblyResolver.cs
│           └── WeaveAssemblyTask.cs
├── templates/
│   ├── BenchmarkDotNet.Templates.csproj
│   ├── install-from-source.bat
│   ├── install-from-source.sh
│   └── templates/
│       ├── BenchmarkDotNet.BenchmarkProjectTemplate.CSharp/
│       │   ├── .template.config/
│       │   │   ├── dotnetcli.host.json
│       │   │   └── template.json
│       │   ├── BenchmarkConfig.cs
│       │   ├── Program.cs
│       │   ├── _BenchmarkName_.cs
│       │   └── _BenchmarkProjectName_.csproj
│       ├── BenchmarkDotNet.BenchmarkProjectTemplate.FSharp/
│       │   ├── .template.config/
│       │   │   ├── dotnetcli.host.json
│       │   │   └── template.json
│       │   ├── BenchmarkConfig.fs
│       │   ├── Program.fs
│       │   ├── _BenchmarkName_.fs
│       │   └── _BenchmarkProjectName_.fsproj
│       └── BenchmarkDotNet.BenchmarkProjectTemplate.VB/
│           ├── .template.config/
│           │   ├── dotnetcli.host.json
│           │   └── template.json
│           ├── BenchmarkConfig.vb
│           ├── Program.vb
│           ├── _BenchmarkName_.vb
│           └── _BenchmarkProjectName_.vbproj
└── tests/
    ├── BenchmarkDotNet.Analyzers.Tests/
    │   ├── AnalyzerTests/
    │   │   ├── Attributes/
    │   │   │   ├── ArgumentsAttributeAnalyzerTests.cs
    │   │   │   ├── GeneralArgumentAttributesAnalyzerTests.cs
    │   │   │   ├── GeneralParameterAttributesAnalyzerTests.cs
    │   │   │   ├── ParamsAllValuesAttributeAnalyzerTests.cs
    │   │   │   └── ParamsAttributeAnalyzerTests.cs
    │   │   ├── BenchmarkRunner/
    │   │   │   └── RunAnalyzerTests.cs
    │   │   └── General/
    │   │       └── BenchmarkClassAnalyzerTests.cs
    │   ├── BenchmarkDotNet.Analyzers.Tests.csproj
    │   ├── BenchmarkDotNet.Analyzers.Tests.csproj.DotSettings
    │   └── Fixtures/
    │       ├── AnalyzerTestFixture.cs
    │       ├── Extensions/
    │       │   └── TheoryDataExtensions.cs
    │       ├── Generators/
    │       │   └── CombinationsGenerator.cs
    │       ├── Serializable/
    │       │   ├── ValueTupleDouble.cs
    │       │   └── ValueTupleTriple.cs
    │       └── TheoryData/
    │           ├── FieldOrPropertyDeclarationsTheoryData.cs
    │           ├── NonPublicClassAccessModifiersTheoryData.cs
    │           ├── NonPublicClassMemberAccessModifiersTheoryData.cs
    │           └── NonPublicPropertySetterAccessModifiersTheoryData.cs
    ├── BenchmarkDotNet.Exporters.Plotting.Tests/
    │   ├── BenchmarkDotNet.Exporters.Plotting.Tests.csproj
    │   └── ScottPlotExporterTests.cs
    ├── BenchmarkDotNet.IntegrationTests/
    │   ├── AllSetupAndCleanupTest.cs
    │   ├── App.config
    │   ├── AppConfigTests.cs
    │   ├── ArgumentsTests.cs
    │   ├── AssemblyConfigTests.cs
    │   ├── AsyncBenchmarksTests.cs
    │   ├── AttributesTests.cs
    │   ├── BaselineRatioColumnTest.cs
    │   ├── BenchmarkDotNet.IntegrationTests.csproj
    │   ├── BenchmarkSwitcherTest.cs
    │   ├── BenchmarkTestExecutor.cs
    │   ├── BuildTimeoutTests.cs
    │   ├── ConflictingNamesTests.cs
    │   ├── ContinuousIntegration.cs
    │   ├── CopyToOutputTests.cs
    │   ├── CustomBuildConfigurationTests.cs
    │   ├── CustomEngineTests.cs
    │   ├── Diagnosers/
    │   │   ├── MockInProcessDiagnoser.cs
    │   │   └── ProcessMetricsTests.cs
    │   ├── DisassemblyDiagnoserTests.cs
    │   ├── DryRunTests.cs
    │   ├── EngineTests.cs
    │   ├── EnvironmentVariablesTests.cs
    │   ├── EventProcessorTests.cs
    │   ├── ExceptionDiagnoserTests.cs
    │   ├── ExceptionHandlingTests.cs
    │   ├── ExporterIOTests.cs
    │   ├── ExtraAttributesForEntryMethodTests.cs
    │   ├── FSharpTests.cs
    │   ├── FailingProcessSpawnTests.cs
    │   ├── GcModeTests.cs
    │   ├── GlobalSetupAttributeInvalidMethodTest.cs
    │   ├── InProcess.EmitTests/
    │   │   ├── NaiveRunnableEmitDiff.cs
    │   │   ├── RunnableTestCasesHelperTypes.cs
    │   │   ├── Runnable_0.cs
    │   │   └── SampleBenchmark.cs
    │   ├── InProcess.EmitTests.T4/
    │   │   ├── RunnableClassCaseBenchmark.cs
    │   │   ├── RunnableClassCaseBenchmark.tt
    │   │   ├── RunnableManyArgsCaseBenchmark.cs
    │   │   ├── RunnableManyArgsCaseBenchmark.tt
    │   │   ├── RunnableRefStructCaseBenchmark.cs
    │   │   ├── RunnableRefStructCaseBenchmark.tt
    │   │   ├── RunnableStructCaseBenchmark.cs
    │   │   ├── RunnableStructCaseBenchmark.tt
    │   │   ├── RunnableTaskCaseBenchmark.cs
    │   │   ├── RunnableTaskCaseBenchmark.tt
    │   │   ├── RunnableVoidCaseBenchmark.cs
    │   │   └── RunnableVoidCaseBenchmark.tt
    │   ├── InProcessDiagnoserTests.cs
    │   ├── InProcessEmitTest.cs
    │   ├── InProcessTest.cs
    │   ├── IntegrationTestSetupTests.cs
    │   ├── JitOptimizationsTests.cs
    │   ├── JitRuntimeValidationTest.cs
    │   ├── LanguageVersionTests.cs
    │   ├── LargeAddressAwareTest.cs
    │   ├── MemoryDiagnoserTests.cs
    │   ├── MonoTests.cs
    │   ├── MultipleRuntimesTest.cs
    │   ├── NativeAotTests.cs
    │   ├── ParamSourceTests.cs
    │   ├── ParamsTests.cs
    │   ├── PathTooLongTests.cs
    │   ├── PowerManagementApplierTests.cs
    │   ├── PowerRequest.cs
    │   ├── PowerRequestsParser.cs
    │   ├── PriorityTests.cs
    │   ├── ProcessPropertiesTests.cs
    │   ├── ProcessorArchitectureTest.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── R2RTests.cs
    │   ├── ReferencesTests.cs
    │   ├── RoslynToolchainTest.cs
    │   ├── RunStrategyTests.cs
    │   ├── RunningEmptyBenchmarkTests.cs
    │   ├── SetupAndCleanupTests.cs
    │   ├── StandardErrorTests.cs
    │   ├── StatResultExtenderTests.cs
    │   ├── TailCallDiagnoserTests.cs
    │   ├── TestConfigs.cs
    │   ├── TestCultureInfo.cs
    │   ├── ThreadingDiagnoserTests.cs
    │   ├── ToolchainTest.cs
    │   ├── ValidatorsTest.cs
    │   ├── ValuesReturnedByBenchmarkTest.cs
    │   ├── WakeLockTests.cs
    │   ├── WasmTests.cs
    │   ├── Xunit/
    │   │   ├── Constants.cs
    │   │   ├── Extensions.cs
    │   │   └── MisconfiguredEnvironmentException.cs
    │   ├── runtimeconfig.template.json
    │   ├── wwwroot/
    │   │   └── custom-main.mjs
    │   └── xunit.runner.json
    ├── BenchmarkDotNet.IntegrationTests.ConfigPerAssembly/
    │   ├── AssemblyConfigAttribute.cs
    │   ├── AssemblyConfigBenchmarks.cs
    │   ├── BenchmarkDotNet.IntegrationTests.ConfigPerAssembly.csproj
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.CustomPaths/
    │   ├── BenchmarkDotNet.IntegrationTests.CustomPaths.csproj
    │   ├── BenchmarksThatReturnTypeFromCustomPathDll.cs
    │   ├── BenchmarksThatUseTypeFromCustomPathDll.cs
    │   ├── BenchmarksThatUsesFileFromOutput.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── ShouldGetCopied.xml
    ├── BenchmarkDotNet.IntegrationTests.DisabledOptimizations/
    │   ├── BenchmarkDotNet.IntegrationTests.DisabledOptimizations.csproj
    │   ├── OptimizationsDisabledInCsproj.cs
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.EnabledOptimizations/
    │   ├── BenchmarkDotNet.IntegrationTests.EnabledOptimizations.csproj
    │   ├── OptimizationsEnabledInCsproj.cs
    │   └── Properties/
    │       └── AssemblyInfo.cs
    ├── BenchmarkDotNet.IntegrationTests.FSharp/
    │   ├── BenchmarkDotNet.IntegrationTests.FSharp.fsproj
    │   └── Program.fs
    ├── BenchmarkDotNet.IntegrationTests.ManualRunning/
    │   ├── BenchmarkDotNet.IntegrationTests.ManualRunning.csproj
    │   ├── DotMemoryTests.cs
    │   ├── DotTraceTests.cs
    │   ├── MsBuildArgumentTests.cs
    │   └── xunit.runner.json
    ├── BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks/
    │   ├── BenchmarkDotNet.IntegrationTests.ManualRunning.MultipleFrameworks.csproj
    │   └── MultipleFrameworksTest.cs
    ├── BenchmarkDotNet.IntegrationTests.Static/
    │   ├── BenchmarkClassWithStaticMethod.cs
    │   └── BenchmarkDotNet.IntegrationTests.Static.csproj
    ├── BenchmarkDotNet.IntegrationTests.VisualBasic/
    │   ├── BenchmarkDotNet.IntegrationTests.VisualBasic.vbproj
    │   └── Sample.vb
    ├── BenchmarkDotNet.Tests/
    │   ├── Analysers/
    │   │   ├── OutliersAnalyserTests.cs
    │   │   └── ZeroMeasurementHelperTests.cs
    │   ├── AppConfigGeneratorTests.cs
    │   ├── ArtifactFileNameHelperTests.cs
    │   ├── Attributes/
    │   │   ├── MutatorAttributesTests.cs
    │   │   ├── ParamsAllValuesVerifyTests.cs
    │   │   └── VerifiedFiles/
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt
    │   │       ├── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt
    │   │       └── ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt
    │   ├── BenchmarkDotNet.Tests.csproj
    │   ├── BenchmarkDotNetInfoTests.cs
    │   ├── BuildResultTests.cs
    │   ├── Builders/
    │   │   └── HostEnvironmentInfoBuilder.cs
    │   ├── CharacteristicPresenterTests.cs
    │   ├── CodeGeneratorTests.cs
    │   ├── Columns/
    │   │   ├── MetricColumnTests.cs
    │   │   ├── RatioColumnTest.cs
    │   │   ├── StatisticalTestColumnTests.cs
    │   │   └── TagColumnTests.cs
    │   ├── Common/
    │   │   └── AbsoluteEqualityComparer.cs
    │   ├── ConfigParserTests.cs
    │   ├── Configs/
    │   │   ├── CategoriesTests.cs
    │   │   ├── ConfigOptionsTests.cs
    │   │   ├── ConfigPerMethodTests.cs
    │   │   ├── ConfigUnionTests.cs
    │   │   ├── EnvironmentVariableTests.cs
    │   │   ├── ImmutableConfigTests.cs
    │   │   └── JobTests.cs
    │   ├── CorrectionsSuggesterTests.cs
    │   ├── CsProjGeneratorTests.cs
    │   ├── CsvHelperTests.cs
    │   ├── Detectors/
    │   │   └── Cpu/
    │   │       ├── CpuInfoFormatterTests.cs
    │   │       ├── LinuxCpuInfoParserTests.cs
    │   │       ├── PowershellWmiCpuInfoParserTests.cs
    │   │       ├── SysctlCpuInfoParserTests.cs
    │   │       ├── TestFiles/
    │   │       │   ├── ProcCpuInfoProcessorWithDifferentCoresCount.txt
    │   │       │   ├── ProcCpuInfoRealOneProcessorFourCores.txt
    │   │       │   ├── ProcCpuInfoRealOneProcessorTwoCores.txt
    │   │       │   ├── SysctlRealOneProcessorFourCores.txt
    │   │       │   └── ryzen9-cpuinfo.txt
    │   │       ├── TestHelper.cs
    │   │       ├── VerifiedFiles/
    │   │       │   └── CpuInfoFormatterTests.FormatTest.verified.txt
    │   │       └── WmicCpuInfoParserTests.cs
    │   ├── Disassemblers/
    │   │   └── GithubMarkdownDisassemblyExporterMultiCorerunTest.cs
    │   ├── Engine/
    │   │   ├── EngineActualStageTests.cs
    │   │   ├── EnginePilotStageTests.cs
    │   │   ├── EngineResultStageTests.cs
    │   │   ├── EngineWarmupStageTests.cs
    │   │   └── EnumerateStagesTests.cs
    │   ├── Environments/
    │   │   └── HostEnvironmentInfoTests.cs
    │   ├── EventPipeProfilerTests.cs
    │   ├── Exporters/
    │   │   ├── CommonExporterVerifyTests.cs
    │   │   ├── MarkdownExporterVerifyTests.cs
    │   │   ├── OpenMetricsExporterTests.cs
    │   │   ├── VerifiedFiles/
    │   │   │   ├── CommonExporterVerifyTests.Exporters_Invariant.verified.txt
    │   │   │   ├── CommonExporterVerifyTests.Exporters_en-US.verified.txt
    │   │   │   ├── CommonExporterVerifyTests.Exporters_ru-RU.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_HideColumns_TableMarkDown.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt
    │   │   │   ├── MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt
    │   │   │   ├── OpenMetricsExporterTests.LabelsAreEscapedCorrectly.verified.txt
    │   │   │   ├── OpenMetricsExporterTests.ParametrizedBenchmarks_LabelExpansion.verified.txt
    │   │   │   └── OpenMetricsExporterTests.SingleBenchmark_ProducesHelpAndTypeOnce.verified.txt
    │   │   └── XmlSerializerTests.cs
    │   ├── FolderNameTests.cs
    │   ├── FrameworkVersionHelperTests.cs
    │   ├── FullNameProviderTests.cs
    │   ├── GenericBuilderTests.cs
    │   ├── GlobFilterTests.cs
    │   ├── Helpers/
    │   │   └── LinuxOsReleaseHelperTests.cs
    │   ├── Infra/
    │   │   └── VerifyHelper.cs
    │   ├── Jobs/
    │   │   ├── JobIdGeneratorTests.cs
    │   │   └── JobIdTests.cs
    │   ├── KnownIssue.cs
    │   ├── LevenshteinDistanceCalculatorTests.cs
    │   ├── Loggers/
    │   │   ├── LoggerWithPrefixTests.cs
    │   │   └── OutputLogger.cs
    │   ├── Mathematics/
    │   │   ├── NumeralSystemTests.cs
    │   │   ├── RankTests.cs
    │   │   ├── RatioStatisticsTests.cs
    │   │   └── StatisticsTests.cs
    │   ├── Mocks/
    │   │   ├── MockClock.cs
    │   │   ├── MockEngine.cs
    │   │   ├── MockFactory.cs
    │   │   ├── MockRunner.cs
    │   │   └── Toolchain/
    │   │       └── MockToolchain.cs
    │   ├── MonoDisassemblyOutputParserTests.cs
    │   ├── Order/
    │   │   ├── DefaultOrdererTests.cs
    │   │   └── JobOrderTests.cs
    │   ├── ParameterComparerTests.cs
    │   ├── ParameterInstanceTests.cs
    │   ├── ParamsSourceTests.cs
    │   ├── Perfonar/
    │   │   ├── Infra/
    │   │   │   ├── PerfonarMock.cs
    │   │   │   └── PerfonarTestExtensions.cs
    │   │   ├── PerfonarTests.cs
    │   │   └── VerifiedFiles/
    │   │       ├── Perfonar.PerfonarIndexTest_key=default01.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default02.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default03.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default04.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=default05.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=params01.verified.txt
    │   │       ├── Perfonar.PerfonarIndexTest_key=sort01.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default01.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default02.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default03.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default04.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=default05.verified.txt
    │   │       ├── Perfonar.PerfonarTableTest_key=params01.verified.txt
    │   │       └── Perfonar.PerfonarTableTest_key=sort01.verified.txt
    │   ├── Portability/
    │   │   ├── HyperVTests.cs
    │   │   ├── VMWareTests.cs
    │   │   └── VirtualBoxTests.cs
    │   ├── Properties/
    │   │   ├── AssemblyInfo.cs
    │   │   └── BenchmarkDotNetInfoTests.cs
    │   ├── ReflectionTests.cs
    │   ├── Reports/
    │   │   ├── ColumnTests.cs
    │   │   ├── DefaultColumnProvidersTests.cs
    │   │   ├── DisplayPrecisionManagerTests.cs
    │   │   ├── FakeMetricDescriptor.cs
    │   │   ├── RatioPrecisionTests.cs
    │   │   ├── RatioStyleTests.cs
    │   │   ├── SummaryTableTests.cs
    │   │   └── SummaryTests.cs
    │   ├── Running/
    │   │   ├── BenchmarkConverterTests.BAC_Partial_DifferentFiles.cs
    │   │   ├── BenchmarkConverterTests.cs
    │   │   └── JobRuntimePropertiesComparerTests.cs
    │   ├── RuntimeVersionDetectionTests.cs
    │   ├── Serialization/
    │   │   ├── DisassemblerModelSerializationTests.cs
    │   │   └── SummaryJsonSerializationTests.cs
    │   ├── SourceCodeHelperTests.cs
    │   ├── StringExtensionsTests.cs
    │   ├── SummaryStyleTests.cs
    │   ├── TargetFrameworkVersionParsingTestscs.cs
    │   ├── TestCultureInfo.cs
    │   ├── TheoryDataHelper.cs
    │   ├── TypeFilterTests.cs
    │   ├── Validators/
    │   │   ├── CompilationValidatorTests.cs
    │   │   ├── DeferredExecutionValidatorTests.cs
    │   │   ├── ExecutionValidatorTests.cs
    │   │   ├── ParamsValidatorTests.cs
    │   │   ├── ReturnValueValidatorTests.cs
    │   │   ├── RuntimeValidatorTests.cs
    │   │   └── SetupCleanupValidatorTests.cs
    │   ├── XUnit/
    │   │   ├── EnvRequirement.cs
    │   │   ├── EnvRequirementChecker.cs
    │   │   ├── EnvRequirementCheckerTests.cs
    │   │   ├── FactEnvSpecific.cs
    │   │   ├── SmartAssert.cs
    │   │   └── TheoryEnvSpecific.cs
    │   ├── dotMemory/
    │   │   └── DotMemoryTests.cs
    │   ├── dotTrace/
    │   │   └── DotTraceTests.cs
    │   └── xunit.runner.json
    ├── CodeCoverage.config
    ├── Directory.Build.props
    ├── runClassicTests.cmd
    ├── runCoreTests.cmd
    └── runCoreTests.sh
Download .txt
Showing preview only (773K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7885 symbols across 1001 files)

FILE: build/BenchmarkDotNet.Build/BuildContext.cs
  class BuildContext (line 23) | public class BuildContext : FrostingContext
    method BuildContext (line 56) | public BuildContext(ICakeContext context)
    method GenerateFile (line 155) | public void GenerateFile(FilePath filePath, StringBuilder content)
    method GenerateFile (line 160) | public void GenerateFile(FilePath filePath, string content, bool repor...
    method RunOnlyInPushMode (line 184) | public void RunOnlyInPushMode(Action action)

FILE: build/BenchmarkDotNet.Build/CommandLineParser.cs
  class CommandLineParser (line 11) | public class CommandLineParser
    method Parse (line 20) | public string[]? Parse(string[]? args)
    method PrintHelp (line 92) | private void PrintHelp()
    method PrintTaskHelp (line 129) | private void PrintTaskHelp(string taskName)
    method PrintOptions (line 181) | private void PrintOptions(IOption[] options)
    method PrintExamples (line 240) | private void PrintExamples(IReadOnlyList<Example> examples)
    method GetTaskNames (line 274) | private static HashSet<string> GetTaskNames()
    method GetTasks (line 279) | private static List<(string Name, string Description, HelpInfo HelpInf...
    method GetHelpInfo (line 293) | private static HelpInfo GetHelpInfo(Type taskType)
    method Is (line 300) | private static bool Is(string? arg, params string[] values) =>
    method PrintError (line 303) | private void PrintError(string text)
    method WritePrefix (line 312) | private void WritePrefix() => Write("    ");
    method WriteTask (line 313) | private void WriteTask(string message) => Write(message, ConsoleColor....
    method WriteOption (line 314) | private void WriteOption(string message) => Write(message, ConsoleColo...
    method WriteArg (line 315) | private void WriteArg(string message) => Write(message, ConsoleColor.D...
    method WriteObsolete (line 316) | private void WriteObsolete(string message) => Write(message, ConsoleCo...
    method WriteHeader (line 318) | private void WriteHeader(string message)
    method Write (line 323) | private void Write(string message, ConsoleColor? color = null)
    method WriteLine (line 332) | private void WriteLine(string message = "", ConsoleColor? color = null)

FILE: build/BenchmarkDotNet.Build/EnvVar.cs
  class EnvVar (line 5) | public class EnvVar
    method EnvVar (line 12) | private EnvVar(string name) => Name = name;
    method GetValue (line 14) | public string? GetValue() => Environment.GetEnvironmentVariable(Name);
    method AssertHasValue (line 16) | public void AssertHasValue()
    method SetEmpty (line 22) | public void SetEmpty() => Environment.SetEnvironmentVariable(Name, "");

FILE: build/BenchmarkDotNet.Build/Example.cs
  class Example (line 6) | public class Example
    method Example (line 13) | public Example(string taskName)
    method WithMsBuildArgument (line 18) | public Example WithMsBuildArgument(string name, string value)
    method WithArgument (line 24) | public Example WithArgument(BoolOption option)
    method WithArgument (line 30) | public Example WithArgument(StringOption option, string value)
    type Argument (line 37) | public record Argument(string Name, string? Value, bool IsMsBuild);

FILE: build/BenchmarkDotNet.Build/HelpInfo.cs
  class HelpInfo (line 6) | public class HelpInfo

FILE: build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs
  class OctokitExtensions (line 7) | public static class OctokitExtensions
    method ToStr (line 9) | public static string ToStr(this User? user, string prefix) => user != ...
    method ToStr (line 13) | private static string ToStr(this Author? user, string prefix) => user ...
    method ToStr (line 17) | private static string ToStr(this Committer? user, string prefix) => us...
    method ToLink (line 21) | public static string ToLink(this Author user) => $"[@{user.Login}]({us...
    method ToLinkWithName (line 23) | public static string ToLinkWithName(this Author user, string name) => ...
    method ToCommitMessage (line 25) | public static string ToCommitMessage(this Commit commit)
    method ToLink (line 32) | public static string ToLink(this GitHubCommit commit) => $"[{commit.Sh...
    method ToByStr (line 34) | public static string ToByStr(this GitHubCommit commit)

FILE: build/BenchmarkDotNet.Build/Helpers/Utils.cs
  class Utils (line 10) | public static class Utils
    method GetOs (line 12) | public static string GetOs()
    method ParseVerbosity (line 23) | public static DotNetVerbosity? ParseVerbosity(string verbosity)
    method CreateGitHubClient (line 41) | public static GitHubClient CreateGitHubClient()
    method ApplyRegex (line 51) | public static string ApplyRegex(string content, string pattern, string...

FILE: build/BenchmarkDotNet.Build/IHelpProvider.cs
  type IHelpProvider (line 3) | public interface IHelpProvider
    method GetHelp (line 5) | HelpInfo GetHelp();

FILE: build/BenchmarkDotNet.Build/Meta/Repo.cs
  class Repo (line 8) | public static class Repo
    method GetDependentProjectsNumber (line 22) | public static async Task<int> GetDependentProjectsNumber()

FILE: build/BenchmarkDotNet.Build/Meta/VersionHistory.cs
  class VersionHistory (line 7) | public class VersionHistory
    method VersionHistory (line 13) | public VersionHistory(BuildContext context, FilePath versionFilePath)

FILE: build/BenchmarkDotNet.Build/Options/BoolOption.cs
  class BoolOption (line 5) | public class BoolOption : Option<bool>
    method BoolOption (line 7) | public BoolOption(string commandLineName) : base(commandLineName)
    method Resolve (line 11) | public override bool Resolve(BuildContext context)
    method AssertTrue (line 21) | public void AssertTrue(BuildContext context)

FILE: build/BenchmarkDotNet.Build/Options/IOption.cs
  type IOption (line 3) | public interface IOption

FILE: build/BenchmarkDotNet.Build/Options/KnownOptions.cs
  class KnownOptions (line 3) | public static class KnownOptions

FILE: build/BenchmarkDotNet.Build/Options/Option.cs
  class Option (line 9) | public abstract class Option<T> : IOption
    method Option (line 27) | protected Option(string commandLineName)
    method Resolve (line 32) | public abstract T Resolve(BuildContext context);
    method HasArgument (line 34) | protected bool HasArgument(BuildContext context) => AllStrippedNames.A...
    method GetArgument (line 36) | protected string? GetArgument(BuildContext context) => AllStrippedNames

FILE: build/BenchmarkDotNet.Build/Options/StringOption.cs
  class StringOption (line 5) | public class StringOption : Option<string>
    method StringOption (line 7) | public StringOption(string commandLineName) : base(commandLineName)
    method Resolve (line 12) | public override string Resolve(BuildContext context)
    method AssertHasValue (line 22) | public string AssertHasValue(BuildContext context)

FILE: build/BenchmarkDotNet.Build/Program.cs
  class Program (line 8) | public static class Program
    method Main (line 10) | public static int Main(string[] args)
  class PackWeaverTask (line 19) | [TaskName(Name)]
    method Run (line 25) | public override void Run(BuildContext context) => context.BuildRunner....
    method GetHelp (line 27) | public HelpInfo GetHelp()
  class RestoreTask (line 39) | [TaskName(Name)]
    method Run (line 46) | public override void Run(BuildContext context) => context.BuildRunner....
    method GetHelp (line 48) | public HelpInfo GetHelp()
  class BuildTask (line 60) | [TaskName(Name)]
    method Run (line 66) | public override void Run(BuildContext context) => context.BuildRunner....
    method GetHelp (line 68) | public HelpInfo GetHelp()
  class InstallWasmToolsWorkload (line 80) | [TaskName(Name)]
    method Run (line 86) | public override void Run(BuildContext context)
    method GetHelp (line 92) | public HelpInfo GetHelp()
  class UnitTestsTask (line 104) | [TaskName(Name)]
    method Run (line 110) | public override void Run(BuildContext context) => context.UnitTestRunn...
    method GetHelp (line 112) | public HelpInfo GetHelp()
  class AnalyzerTestsTask (line 126) | [TaskName(Name)]
    method Run (line 132) | public override void Run(BuildContext context) => context.UnitTestRunn...
    method GetHelp (line 134) | public HelpInfo GetHelp()
  class InTestsFullTask (line 148) | [TaskName(Name)]
    method ShouldRun (line 155) | public override bool ShouldRun(BuildContext context) => context.IsRunn...
    method Run (line 157) | public override void Run(BuildContext context) => context.UnitTestRunn...
    method GetHelp (line 159) | public HelpInfo GetHelp() => new();
  class InTestsCoreTask (line 162) | [TaskName(Name)]
    method Run (line 168) | public override void Run(BuildContext context) => context.UnitTestRunn...
    method GetHelp (line 169) | public HelpInfo GetHelp() => new();
  class AllTestsTask (line 172) | [TaskName(Name)]
    method GetHelp (line 181) | public HelpInfo GetHelp() => new();
  class BuildAnalyzersTask (line 184) | [TaskName(Name)]
    method Run (line 189) | public override void Run(BuildContext context) => context.BuildRunner....
    method GetHelp (line 191) | public HelpInfo GetHelp()
  class MoveAnalyzerRulesTask (line 203) | [TaskName(Name)]
    method Run (line 208) | public override void Run(BuildContext context) => context.Documentatio...
    method GetHelp (line 210) | public HelpInfo GetHelp()
  class PackTask (line 222) | [TaskName(Name)]
    method Run (line 229) | public override void Run(BuildContext context) => context.BuildRunner....
    method GetHelp (line 231) | public HelpInfo GetHelp()
  class DocsFetchTask (line 246) | [TaskName(Name)]
    method Run (line 251) | public override void Run(BuildContext context) => context.Documentatio...
    method GetHelp (line 253) | public HelpInfo GetHelp()
  class DocsGenerateTask (line 275) | [TaskName(Name)]
    method Run (line 280) | public override void Run(BuildContext context) => context.Documentatio...
    method GetHelp (line 282) | public HelpInfo GetHelp()
  class DocsBuildTask (line 296) | [TaskName(Name)]
    method Run (line 302) | public override void Run(BuildContext context) => context.Documentatio...
    method GetHelp (line 304) | public HelpInfo GetHelp() => new()
  class VersionIncrementTask (line 315) | [TaskName(Name)]
    method Run (line 320) | public override void Run(BuildContext context)
    method GetHelp (line 326) | public HelpInfo GetHelp() => new()
  class ReleaseTask (line 338) | [TaskName(Name)]
    method Run (line 348) | public override void Run(BuildContext context) => context.ReleaseRunne...
    method GetHelp (line 350) | public HelpInfo GetHelp() => new()

FILE: build/BenchmarkDotNet.Build/Runners/BuildRunner.cs
  class BuildRunner (line 17) | public class BuildRunner
    method BuildRunner (line 22) | public BuildRunner(BuildContext context)
    method MaybeAppendArgument (line 28) | private void MaybeAppendArgument(DotNetSettings settings)
    method PackWeaver (line 36) | public void PackWeaver()
    method Restore (line 79) | public void Restore()
    method InstallWorkload (line 89) | public void InstallWorkload(string workloadId)
    method Build (line 99) | public void Build()
    method BuildProjectSilent (line 114) | public void BuildProjectSilent(FilePath projectFile)
    method BuildAnalyzers (line 128) | public void BuildAnalyzers()
    method Pack (line 146) | public void Pack()

FILE: build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogBuilder.cs
  class ChangelogBuilder (line 15) | public class ChangelogBuilder
    method ChangelogBuilder (line 32) | public ChangelogBuilder(BuildContext context)
    method Fetch (line 44) | public void Fetch()
    method FetchDetails (line 85) | private void FetchDetails(string version, string versionPrevious, stri...
    method Generate (line 93) | public void Generate()
    method GenerateLastHeader (line 108) | public void GenerateLastHeader()
    method GenerateLastFooter (line 120) | public void GenerateLastFooter()
    method GenerateVersion (line 145) | private void GenerateVersion(string version)
    method GenerateIndex (line 187) | private void GenerateIndex()
    method GenerateFull (line 205) | private void GenerateFull()
    method GenerateToc (line 223) | private void GenerateToc()
    method EnsureSrcDirectoryExist (line 245) | private void EnsureSrcDirectoryExist(bool forceClone = false)

FILE: build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogDetailsBuilder.cs
  class ChangelogDetailsBuilder (line 15) | public static class ChangelogDetailsBuilder
    class Config (line 17) | private class Config(string currentVersion, string previousVersion, st...
      method Deconstruct (line 23) | public void Deconstruct(out string currentMilestone, out string prev...
    class MarkdownBuilder (line 31) | private class MarkdownBuilder
      method Build (line 39) | public static async Task<string> Build(Config config)
      method MarkdownBuilder (line 44) | private MarkdownBuilder(Config config)
      method Build (line 50) | private async Task<string> Build()
      method AppendList (line 153) | private void AppendList<T>(string title, IReadOnlyList<T> items, Fun...
    method Run (line 170) | public static void Run(BuildContext context, DirectoryPath path,

FILE: build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs
  class DocumentationRunner (line 15) | public class DocumentationRunner
    method DocumentationRunner (line 31) | public DocumentationRunner(BuildContext context)
    method MoveAnalyzerRules (line 49) | public void MoveAnalyzerRules()
    method Fetch (line 71) | public void Fetch()
    method Generate (line 77) | public void Generate()
    method Build (line 87) | public void Build()
    method UpdateReadme (line 93) | private void UpdateReadme()
    method RunDocfx (line 105) | private void RunDocfx()
    method GenerateIndexMd (line 116) | private void GenerateIndexMd()
    method GenerateAnalyzersPage (line 127) | private void GenerateAnalyzersPage()
    method CopyLines (line 136) | private static void CopyLines(StreamWriter writer, FilePath filePath)
    method GenerateRedirects (line 146) | private void GenerateRedirects()

FILE: build/BenchmarkDotNet.Build/Runners/GitRunner.cs
  class GitRunner (line 14) | public class GitRunner
    method GitRunner (line 18) | public GitRunner(BuildContext context)
    method Clone (line 23) | public void Clone(DirectoryPath workDirectoryPath, string sourceUrl, s...
    method Pull (line 36) | public void Pull(DirectoryPath workDirectoryPath)
    method Tag (line 46) | public void Tag(string tagName)
    method BranchMove (line 57) | public void BranchMove(string branchName, string target)
    method AddAll (line 65) | public void AddAll(DirectoryPath? repoDirectory = null)
    method Commit (line 72) | public void Commit(string message, DirectoryPath? repoDirectory = null)
    method Push (line 86) | public void Push(string target, bool force = false, DirectoryPath? rep...
    method RunCommand (line 99) | private void RunCommand(string commandLineArgs) => RunCommand(null, co...
    method RunCommand (line 101) | private void RunCommand(Action? call, string commandLineArgs)

FILE: build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs
  class ReleaseRunner (line 17) | public class ReleaseRunner
    method ReleaseRunner (line 21) | public ReleaseRunner(BuildContext context)
    method VersionIncrement (line 26) | public void VersionIncrement()
    method Run (line 41) | public void Run()
    method UpdateVersionsTxt (line 82) | private void UpdateVersionsTxt(string versionToAppend)
    method UpdateCommonPropsVersion (line 89) | private void UpdateCommonPropsVersion(string newCurrentVersion)
    method UpdateTemplateVersion (line 99) | private void UpdateTemplateVersion(string newCurrentVersion)
    method UpdateMilestones (line 105) | private async Task UpdateMilestones(string nextVersion)
    method PushNupkg (line 127) | private void PushNupkg()
    method PublishGitHubRelease (line 148) | private void PublishGitHubRelease()
    method PreprocessMarkdown (line 176) | private static string PreprocessMarkdown(string content)

FILE: build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs
  class UnitTestRunner (line 11) | public class UnitTestRunner(BuildContext context)
    method GetTestSettingsParameters (line 36) | private DotNetTestSettings GetTestSettingsParameters(FilePath logFile,...
    method RunTests (line 53) | private void RunTests(FilePath projectFile, string alias, string tfm)
    method RunUnitTests (line 65) | private void RunUnitTests(string tfm)
    method RunUnitTests (line 71) | public void RunUnitTests()
    method RunAnalyzerTests (line 78) | public void RunAnalyzerTests()
    method RunInTests (line 85) | public void RunInTests(string tfm) => RunTests(IntegrationTestsProject...

FILE: samples/BenchmarkDotNet.Samples.Maui/App.xaml.cs
  class App (line 5) | public partial class App : Application
    method App (line 7) | public App()
    method CreateWindow (line 12) | protected override Window CreateWindow(IActivationState? activationState)

FILE: samples/BenchmarkDotNet.Samples.Maui/AppShell.xaml.cs
  class AppShell (line 3) | public partial class AppShell : Shell
    method AppShell (line 5) | public AppShell()

FILE: samples/BenchmarkDotNet.Samples.Maui/MainPage.xaml.cs
  class MainPage (line 9) | public partial class MainPage : ContentPage
    method MainPage (line 11) | public MainPage()
    method Button_Clicked (line 16) | private async void Button_Clicked(object? sender, EventArgs e)
    method SetIsRunning (line 48) | private void SetIsRunning(bool isRunning)

FILE: samples/BenchmarkDotNet.Samples.Maui/MauiProgram.cs
  class MauiProgram (line 5) | public static class MauiProgram
    method CreateMauiApp (line 7) | public static MauiApp CreateMauiApp()

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/Android/MainActivity.cs
  class MainActivity (line 7) | [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, Launch...

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/Android/MainApplication.cs
  class MainApplication (line 6) | [Application]
    method MainApplication (line 9) | public MainApplication(IntPtr handle, JniHandleOwnership ownership)
    method CreateMauiApp (line 14) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/MacCatalyst/AppDelegate.cs
  class AppDelegate (line 5) | [Register("AppDelegate")]
    method CreateMauiApp (line 8) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/MacCatalyst/Program.cs
  class Program (line 6) | public class Program
    method Main (line 9) | public static void Main(string[] args)

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/Windows/App.xaml.cs
  class App (line 11) | public partial class App : MauiWinUIApplication
    method App (line 17) | public App()
    method CreateMauiApp (line 22) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/iOS/AppDelegate.cs
  class AppDelegate (line 5) | [Register("AppDelegate")]
    method CreateMauiApp (line 8) | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiAp...

FILE: samples/BenchmarkDotNet.Samples.Maui/Platforms/iOS/Program.cs
  class Program (line 6) | public class Program
    method Main (line 9) | public static void Main(string[] args)

FILE: samples/BenchmarkDotNet.Samples/IntroArguments.cs
  class IntroArguments (line 6) | public class IntroArguments
    method Benchmark (line 11) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroArgumentsPriority.cs
  class IntroArgumentsPriority (line 7) | public class IntroArgumentsPriority
    method Benchmark (line 12) | [Arguments(5, Priority = -10)] // Define priority just once for multip...
    method ManyArguments (line 18) | [Benchmark]
    method Numbers (line 22) | public IEnumerable<object[]> Numbers()

FILE: samples/BenchmarkDotNet.Samples/IntroArgumentsSource.cs
  class IntroArgumentsSource (line 8) | public class IntroArgumentsSource
    method ManyArguments (line 10) | [Benchmark]
    method Numbers (line 14) | public IEnumerable<object[]> Numbers() // for multiple arguments it's ...
    method SingleArgument (line 22) | [Benchmark]
  class BenchmarkArguments (line 27) | public static class BenchmarkArguments
    method TimeSpans (line 29) | public static IEnumerable<object> TimeSpans() // for single argument i...

FILE: samples/BenchmarkDotNet.Samples/IntroArrayParam.cs
  class IntroArrayParam (line 8) | public class IntroArrayParam
    method ArrayIndexOf (line 10) | [Benchmark]
    method ManualIndexOf (line 15) | [Benchmark]
    method Data (line 26) | public IEnumerable<object[]> Data()

FILE: samples/BenchmarkDotNet.Samples/IntroBasic.cs
  class IntroBasic (line 7) | public class IntroBasic
    method Sleep (line 10) | [Benchmark]
    method SleepWithDescription (line 14) | [Benchmark(Description = "Thread.Sleep(10)")]

FILE: samples/BenchmarkDotNet.Samples/IntroBenchmarkBaseline.cs
  class IntroBenchmarkBaseline (line 6) | public class IntroBenchmarkBaseline
    method Time50 (line 8) | [Benchmark]
    method Time100 (line 11) | [Benchmark(Baseline = true)]
    method Time150 (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCategories.cs
  class IntroCategories (line 6) | [DryJob]
    method A1 (line 12) | [Benchmark]
    method A2 (line 16) | [Benchmark]
    method B1 (line 20) | [Benchmark]
    method B2 (line 24) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCategoryBaseline.cs
  class IntroCategoryBaseline (line 7) | [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]
    method Time50 (line 11) | [BenchmarkCategory("Fast"), Benchmark(Baseline = true)]
    method Time100 (line 14) | [BenchmarkCategory("Fast"), Benchmark]
    method Time550 (line 17) | [BenchmarkCategory("Slow"), Benchmark(Baseline = true)]
    method Time600 (line 20) | [BenchmarkCategory("Slow"), Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCategoryDiscoverer.cs
  class IntroCategoryDiscoverer (line 10) | [DryJob]
    class CustomCategoryDiscoverer (line 15) | private class CustomCategoryDiscoverer : DefaultCategoryDiscoverer
      method GetCategories (line 17) | public override string[] GetCategories(MethodInfo method)
    class CustomCategoryDiscovererAttribute (line 27) | [AttributeUsage(AttributeTargets.Class)]
      method CustomCategoryDiscovererAttribute (line 30) | public CustomCategoryDiscovererAttribute()
    method Foo (line 40) | [Benchmark]
    method Bar (line 43) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroColdStart.cs
  class IntroColdStart (line 8) | [SimpleJob(RunStrategy.ColdStart, iterationCount: 5)]
    method Foo (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroComparableComplexParam.cs
  class IntroComparableComplexParam (line 7) | public class IntroComparableComplexParam
    method Benchmark (line 14) | [Benchmark]
    class ComplexParam (line 18) | public class ComplexParam : IComparable<ComplexParam>, IComparable
      method ComplexParam (line 20) | public ComplexParam(int value, string name)
      method ToString (line 30) | public override string ToString() => Name;
      method CompareTo (line 32) | public int CompareTo(ComplexParam? other) => other == null ? 1 : Val...
      method CompareTo (line 34) | public int CompareTo(object? obj)

FILE: samples/BenchmarkDotNet.Samples/IntroConfigSource.cs
  class IntroConfigSource (line 11) | [MyConfigSource(Jit.LegacyJit, Jit.RyuJit)]
    class MyConfigSourceAttribute (line 17) | private class MyConfigSourceAttribute : Attribute, IConfigSource
      method MyConfigSourceAttribute (line 21) | public MyConfigSourceAttribute(params Jit[] jits)
    method Foo (line 30) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroConfigUnion.cs
  class IntroConfigUnion (line 13) | [Config(typeof(Config))]
    class Config (line 16) | private class Config : ManualConfig
      method Config (line 18) | public Config()
    method Foo (line 29) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCultureInfo.cs
  class IntroCultureInfo (line 8) | [Config(typeof(Config))]
    class Config (line 12) | private class Config : ManualConfig
      method Config (line 14) | public Config()
    method Foo (line 21) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCustomMono.cs
  class IntroCustomMono (line 11) | [MonoJob("Mono x64", @"C:\Program Files\Mono\bin\mono.exe")]
    method Foo (line 15) | [Benchmark]
  class IntroCustomMonoObjectStyle (line 24) | [Config(typeof(Config))]
    class Config (line 27) | private class Config : ManualConfig
      method Config (line 29) | public Config()
    method Foo (line 38) | [Benchmark]
  class IntroCustomMonoObjectStyleAot (line 47) | [Config(typeof(Config))]
    class Config (line 50) | private class Config : ManualConfig
      method AddMono (line 52) | public void AddMono (string name, string mono_top_dir)
      method Config (line 61) | public Config()
    method Foo (line 68) | [Benchmark]
  class IntroCustomMonoFluentConfig (line 77) | public class IntroCustomMonoFluentConfig
    method Run (line 79) | public static void Run()
    method Foo (line 89) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroCustomMonoArguments.cs
  class IntroCustomMonoArguments (line 8) | [Config(typeof(ConfigWithCustomArguments))]
    class ConfigWithCustomArguments (line 11) | public class ConfigWithCustomArguments : ManualConfig
      method ConfigWithCustomArguments (line 13) | public ConfigWithCustomArguments()
    method Sample (line 31) | [Benchmark]
    method ShouldGetInlined (line 39) | private void ShouldGetInlined() { }

FILE: samples/BenchmarkDotNet.Samples/IntroDeferredExecution.cs
  class IntroDeferredExecution (line 8) | public class IntroDeferredExecution
    method Wrong (line 21) | [Benchmark]
    method Ok (line 28) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroDisassembly.cs
  class IntroDisassembly (line 7) | [DisassemblyDiagnoser(printInstructionAddresses: true, syntax: Disassemb...
    method SumLocal (line 12) | [Benchmark]
    method SumField (line 24) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroDisassemblyAllJits.cs
  class IntroDisassemblyAllJits (line 9) | [Config(typeof(MultipleJits))]
    class MultipleJits (line 12) | public class MultipleJits : ManualConfig
      method MultipleJits (line 14) | public MultipleJits()
    method CallVirtualMethod (line 33) | [Benchmark]
    class Operation (line 36) | public abstract class Operation  // abstract unary integer operation
      method Operate (line 38) | public abstract int Operate(int input);
      method OperateTwice (line 40) | public int OperateTwice(int input) => Operate(Operate(input));
    class Increment (line 43) | public sealed class Increment : Operation // concrete, sealed operatio...
      method Increment (line 46) | public Increment(int amount = 1) { Amount = amount; }
      method Operate (line 48) | public override int Operate(int input) => input + Amount;

FILE: samples/BenchmarkDotNet.Samples/IntroDisassemblyDry.cs
  class IntroDisassemblyDry (line 5) | [DisassemblyDiagnoser(maxDepth: 3)]
    method Foo (line 9) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroDisassemblyRyuJit.cs
  class IntroDisassemblyRyuJit (line 6) | [DisassemblyDiagnoser(printSource: true)]
    method SumLocal (line 12) | [Benchmark]
    method SumField (line 24) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroDotMemoryDiagnoser.cs
  class IntroDotMemoryDiagnoser (line 8) | [DotMemoryDiagnoser]
    method Setup (line 19) | [GlobalSetup]
    method IterateArray (line 26) | [Benchmark]
    method IterateEnumerable (line 36) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroDotTraceDiagnoser.cs
  class IntroDotTraceDiagnoser (line 8) | [DotTraceDiagnoser]
    method Fibonacci (line 13) | [Benchmark]
    method Fibonacci (line 16) | private static int Fibonacci(int n)

FILE: samples/BenchmarkDotNet.Samples/IntroEnvVars.cs
  class IntroEnvVars (line 8) | [Config(typeof(ConfigWithCustomEnvVars))]
    class ConfigWithCustomEnvVars (line 11) | private class ConfigWithCustomEnvVars : ManualConfig
      method ConfigWithCustomEnvVars (line 13) | public ConfigWithCustomEnvVars()
    method Foo (line 25) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroEventPipeProfiler.cs
  class IntroEventPipeProfiler (line 7) | [ShortRunJob]
    method Sleep (line 11) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroEventPipeProfilerAdvanced.cs
  class IntroEventPipeProfilerAdvanced (line 13) | [Config(typeof(CustomConfig))]
    class CustomConfig (line 16) | private class CustomConfig : ManualConfig
      method CustomConfig (line 18) | public CustomConfig()
    method RentAndReturn_Shared (line 38) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroExceptionDiagnoser.cs
  class IntroExceptionDiagnoser (line 6) | [ExceptionDiagnoser]
    method ThrowExceptionRandomly (line 9) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroExport.cs
  class IntroExport (line 7) | [ShortRunJob]
    method Sleep10 (line 33) | [Benchmark(Baseline = true)]
    method Sleep50Noisy (line 36) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroExportJson.cs
  class IntroExportJson (line 10) | [DryJob]
    method Sleep10 (line 18) | [Benchmark] public void Sleep10() => Thread.Sleep(10);
    method Sleep20 (line 19) | [Benchmark] public void Sleep20() => Thread.Sleep(20);
  class IntroJsonExportObjectStyle (line 24) | [Config(typeof(Config))]
    class Config (line 27) | private class Config : ManualConfig
      method Config (line 29) | public Config()
    method Sleep10 (line 40) | [Benchmark] public void Sleep10() => Thread.Sleep(10);
    method Sleep20 (line 41) | [Benchmark] public void Sleep20() => Thread.Sleep(20);

FILE: samples/BenchmarkDotNet.Samples/IntroExportXml.cs
  class IntroExportXml (line 6) | [DryJob]
    method Sleep10 (line 14) | [Benchmark] public void Sleep10() => Thread.Sleep(10);
    method Sleep20 (line 15) | [Benchmark] public void Sleep20() => Thread.Sleep(20);

FILE: samples/BenchmarkDotNet.Samples/IntroFilters.cs
  class IntroFilters (line 8) | [DryJob]
    class Config (line 12) | private class Config : ManualConfig
      method Config (line 16) | public Config()
    method A1 (line 29) | [Benchmark] public void A1() => Thread.Sleep(10);
    method A2 (line 30) | [Benchmark] public void A2() => Thread.Sleep(10);
    method A3 (line 31) | [Benchmark] public void A3() => Thread.Sleep(10);
    method B1 (line 32) | [Benchmark] public void B1() => Thread.Sleep(10);
    method B2 (line 33) | [Benchmark] public void B2() => Thread.Sleep(10);
    method B3 (line 34) | [Benchmark] public void B3() => Thread.Sleep(10);
    method C1 (line 35) | [Benchmark] public void C1() => Thread.Sleep(10);
    method C2 (line 36) | [Benchmark] public void C2() => Thread.Sleep(10);
    method C3 (line 37) | [Benchmark] public void C3() => Thread.Sleep(10);
    method Aaa (line 38) | [Benchmark] public void Aaa() => Thread.Sleep(10);

FILE: samples/BenchmarkDotNet.Samples/IntroFluentConfigBuilder.cs
  class Algo_Md5VsSha256 (line 12) | public class Algo_Md5VsSha256
    method Algo_Md5VsSha256 (line 20) | public Algo_Md5VsSha256()
    method Md5 (line 26) | [Benchmark(Baseline = true)]
    method Sha256 (line 29) | [Benchmark]
  class IntroFluentConfigBuilder (line 33) | public class IntroFluentConfigBuilder
    method Run (line 35) | public static void Run()

FILE: samples/BenchmarkDotNet.Samples/IntroGcMode.cs
  class IntroGcMode (line 9) | [Config(typeof(Config))]
    class Config (line 14) | private class Config : ManualConfig
      method Config (line 16) | public Config()
    method Allocate (line 25) | [Benchmark(Description = "new byte[10kB]")]
    method AllocateWithStackalloc (line 31) | [Benchmark(Description = "stackalloc byte[10kB]")]
    method Consume (line 38) | [MethodImpl(MethodImplOptions.NoInlining)]

FILE: samples/BenchmarkDotNet.Samples/IntroGenericTypeArguments.cs
  class IntroGenericTypeArguments (line 6) | [GenericTypeArguments(typeof(int))]
    method Create (line 10) | [Benchmark] public T Create() => Activator.CreateInstance<T>();

FILE: samples/BenchmarkDotNet.Samples/IntroHardwareCounters.cs
  class IntroHardwareCounters (line 7) | [HardwareCounters(
    method IntroHardwareCounters (line 15) | public IntroHardwareCounters()
    method Branch (line 25) | private static int Branch(int[] data)
    method Branchless (line 34) | private static int Branchless(int[] data)
    method SortedBranch (line 45) | [Benchmark]
    method UnsortedBranch (line 48) | [Benchmark]
    method SortedBranchless (line 51) | [Benchmark]
    method UnsortedBranchless (line 54) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroHidingColumns.cs
  class IntroHidingColumns (line 6) | [MemoryDiagnoser] // adds Gen0, Gen1, Gen2 and Allocated Bytes columns
    method AllocateArray (line 10) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroInProcess.cs
  class IntroInProcess (line 10) | [Config(typeof(Config))]
    class Config (line 15) | private class Config : ManualConfig
      method Config (line 17) | public Config()
    method Allocate (line 30) | [Benchmark(Description = "new byte[10kB]")]
    method AllocateWithStackalloc (line 36) | [Benchmark(Description = "stackalloc byte[10kB]")]
    method Consume (line 43) | [MethodImpl(MethodImplOptions.NoInlining)]

FILE: samples/BenchmarkDotNet.Samples/IntroInProcessWrongEnv.cs
  class IntroInProcessWrongEnv (line 13) | [Config(typeof(Config))]
    class Config (line 18) | private class Config : ManualConfig
      method Config (line 20) | public Config()
    method Allocate (line 36) | [Benchmark(Description = "new byte[10kB]")]
    method AllocateWithStackalloc (line 42) | [Benchmark(Description = "stackalloc byte[10kB]")]
    method Consume (line 49) | [MethodImpl(MethodImplOptions.NoInlining)]

FILE: samples/BenchmarkDotNet.Samples/IntroInliningDiagnoser.cs
  class IntroInliningDiagnoser (line 6) | [Diagnostics.Windows.Configs.InliningDiagnoser(logFailuresOnly: false, a...
    method IterationTest (line 9) | [Benchmark]
    method SplitJoin (line 21) | [Benchmark]
    method ReturnFive (line 25) | private int ReturnFive()
    method AddThree (line 30) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: samples/BenchmarkDotNet.Samples/IntroJitStatsDiagnoser.cs
  class IntroJitStatsDiagnoser (line 6) | [Diagnostics.Windows.Configs.JitStatsDiagnoser]
    method Sleep (line 9) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroJobBaseline.cs
  class IntroJobBaseline (line 6) | [SimpleJob(runtimeMoniker: RuntimeMoniker.Net462, baseline: true)]
    method SplitJoin (line 11) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroJoin.cs
  class IntroJoin1 (line 8) | [DryJob]
    method A (line 11) | [Benchmark]
    method B (line 15) | [Benchmark]
  class IntroJoin2 (line 20) | [DryJob]
    method A (line 23) | [Benchmark]
    method B (line 27) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroLargeAddressAware.cs
  class IntroLargeAddressAware (line 10) | [MemoryDiagnoser]
    class Config (line 14) | private class Config : ManualConfig
      method Config (line 16) | public Config()
    method AllocateMoreThan2GB (line 26) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroMemoryRandomization.cs
  class IntroMemoryRandomization (line 6) | public class IntroMemoryRandomization
    method Setup (line 14) | [GlobalSetup]
    method Array_RandomizationDisabled (line 21) | [Benchmark]
    method Array_RandomizationEnabled (line 25) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroMonitoring.cs
  class IntroMonitoring (line 8) | [SimpleJob(RunStrategy.Monitoring, iterationCount: 10, id: "MonitoringJo...
    method Foo (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroMultimodal.cs
  class IntroMultimodal (line 8) | [MValueColumn]
    method Multimodal (line 14) | private void Multimodal(int n)
    method Unimodal (line 17) | [Benchmark] public void Unimodal() => Multimodal(1);
    method Bimodal (line 18) | [Benchmark] public void Bimodal() => Multimodal(2);
    method Trimodal (line 19) | [Benchmark] public void Trimodal() => Multimodal(3);
    method Quadrimodal (line 20) | [Benchmark] public void Quadrimodal() => Multimodal(4);

FILE: samples/BenchmarkDotNet.Samples/IntroNativeMemory.cs
  class IntroNativeMemory (line 10) | [ShortRunJob]
    method BitmapWithLeaks (line 16) | [Benchmark, WindowsOnly]
    method Bitmap (line 25) | [Benchmark, WindowsOnly]
    method AllocHGlobal (line 44) | [Benchmark]
    method AllocHGlobalWithLeaks (line 52) | [Benchmark]
    class WindowsOnlyAttribute (line 59) | private class WindowsOnlyAttribute : FilterConfigBaseAttribute
      method WindowsOnlyAttribute (line 61) | public WindowsOnlyAttribute()

FILE: samples/BenchmarkDotNet.Samples/IntroNuGet.cs
  class IntroNuGet (line 16) | [Config(typeof(Config))]
    class Config (line 30) | private class Config : ManualConfig
      method Config (line 32) | public Config()
    method IntroNuGet (line 52) | static IntroNuGet()
    method XxHash3Benchmark (line 59) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroOrderAttr.cs
  class IntroOrderAttr (line 7) | [Orderer(SummaryOrderPolicy.FastestToSlowest, MethodOrderPolicy.Declared...
    method Slow (line 14) | [Benchmark]
    method Fast (line 17) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroOrderManual.cs
  class IntroOrderManual (line 13) | [Config(typeof(Config))]
    class Config (line 18) | private class Config : ManualConfig
      method Config (line 20) | public Config() => Orderer = new FastestToSlowestOrderer();
      class FastestToSlowestOrderer (line 22) | private class FastestToSlowestOrderer : IOrderer
        method GetExecutionOrder (line 24) | public IEnumerable<BenchmarkCase> GetExecutionOrder(ImmutableArray...
        method GetSummaryOrder (line 31) | public IEnumerable<BenchmarkCase> GetSummaryOrder(ImmutableArray<B...
        method GetHighlightGroupKey (line 36) | public string? GetHighlightGroupKey(BenchmarkCase benchmarkCase) =...
        method GetLogicalGroupKey (line 38) | public string GetLogicalGroupKey(ImmutableArray<BenchmarkCase> all...
        method GetLogicalGroupOrder (line 41) | public IEnumerable<IGrouping<string, BenchmarkCase>> GetLogicalGro...
    method Fast (line 52) | [Benchmark]
    method Slow (line 55) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroOutliers.cs
  class IntroOutliers (line 9) | [Config(typeof(Config))]
    class Config (line 12) | private class Config : ManualConfig
      method Config (line 14) | public Config()
    method Foo (line 24) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroParams.cs
  class IntroParams (line 6) | public class IntroParams
    method Benchmark (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroParamsAllValues.cs
  class IntroParamsAllValues (line 6) | [DryJob]
    type CustomEnum (line 9) | public enum CustomEnum
    method Benchmark (line 22) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroParamsPriority.cs
  class IntroParamsPriority (line 6) | public class IntroParamsPriority
    method Benchmark (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroParamsSource.cs
  class IntroParamsSource (line 7) | public class IntroParamsSource
    method ValuesForB (line 21) | public static IEnumerable<int> ValuesForB() => [10, 20];
    method Benchmark (line 27) | [Benchmark]
  class ParamsValues (line 31) | public static class ParamsValues
    method ValuesForC (line 33) | public static IEnumerable<int> ValuesForC() => [1000, 2000];

FILE: samples/BenchmarkDotNet.Samples/IntroPercentiles.cs
  class IntroPercentiles (line 11) | [Config(typeof(Config))]
    class Config (line 20) | private class Config : ManualConfig
      method Config (line 22) | public Config()
    method ConstantDelays (line 37) | [Benchmark(Baseline = true)]
    method RandomDelays (line 40) | [Benchmark]
    method RareDelays (line 43) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroPerfCollectProfiler.cs
  class IntroPerfCollectProfiler (line 6) | [PerfCollectProfiler(performExtraBenchmarksRun: false)]
    method WriteAllText (line 12) | [Benchmark]
    method Delete (line 15) | [GlobalCleanup]

FILE: samples/BenchmarkDotNet.Samples/IntroPowerPlan.cs
  class IntroPowerPlan (line 9) | [Config(typeof(Config))]
    class Config (line 12) | private class Config : ManualConfig
      method Config (line 14) | public Config()
    method IterationTest (line 25) | [Benchmark]
    method SplitJoin (line 37) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroRankColumn.cs
  class IntroRankColumn (line 8) | [ShortRunJob]
    method Foo (line 18) | [Benchmark]
    method Bar (line 21) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroRatioSD.cs
  class IntroRatioSD (line 9) | [Outliers(OutlierMode.DontRemove)]
    method Setup (line 16) | [GlobalSetup]
    method Base (line 19) | [Benchmark(Baseline = true)]
    method Slow (line 27) | [Benchmark]
    method Fast (line 30) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroRatioStyle.cs
  class IntroRatioStyle (line 9) | [ShortRunJob, Config(typeof(Config))]
    method Baseline (line 12) | [Benchmark(Baseline = true)]
    method Bar (line 15) | [Benchmark]
    method Foo (line 18) | [Benchmark]
    class Config (line 21) | private class Config : ManualConfig
      method Config (line 23) | public Config()

FILE: samples/BenchmarkDotNet.Samples/IntroSetupCleanupGlobal.cs
  class IntroSetupCleanupGlobal (line 5) | public class IntroSetupCleanupGlobal
    method GlobalSetup (line 12) | [GlobalSetup]
    method Logic (line 18) | [Benchmark]
    method GlobalCleanup (line 27) | [GlobalCleanup]

FILE: samples/BenchmarkDotNet.Samples/IntroSetupCleanupIteration.cs
  class IntroSetupCleanupIteration (line 7) | [SimpleJob(RunStrategy.Monitoring, launchCount: 1,
    method IterationSetup (line 14) | [IterationSetup]
    method IterationCleanup (line 18) | [IterationCleanup]
    method GlobalSetup (line 22) | [GlobalSetup]
    method GlobalCleanup (line 26) | [GlobalCleanup]
    method Benchmark (line 30) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroSetupCleanupTarget.cs
  class IntroSetupCleanupTarget (line 7) | [SimpleJob(RunStrategy.Monitoring, launchCount: 0,
    method GlobalSetupA (line 11) | [GlobalSetup(Target = nameof(BenchmarkA))]
    method BenchmarkA (line 15) | [Benchmark]
    method GlobalSetupB (line 19) | [GlobalSetup(Targets = new[] { nameof(BenchmarkB), nameof(BenchmarkC) })]
    method BenchmarkB (line 23) | [Benchmark]
    method BenchmarkC (line 27) | [Benchmark]
    method BenchmarkD (line 31) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroSmokeEmptyBasic.cs
  class IntroSmokeEmptyBasic (line 5) | [DisassemblyDiagnoser]
    method Void1 (line 8) | [Benchmark] public void Void1() {}
    method Void2 (line 9) | [Benchmark] public void Void2() {}
    method Void3 (line 10) | [Benchmark] public void Void3() {}
    method Void4 (line 11) | [Benchmark] public void Void4() {}
    method Byte1 (line 13) | [Benchmark] public byte Byte1() => 0;
    method Byte2 (line 14) | [Benchmark] public byte Byte2() => 0;
    method Byte3 (line 15) | [Benchmark] public byte Byte3() => 0;
    method Byte4 (line 16) | [Benchmark] public byte Byte4() => 0;
    method Sbyte1 (line 18) | [Benchmark] public sbyte Sbyte1() => 0;
    method Sbyte2 (line 19) | [Benchmark] public sbyte Sbyte2() => 0;
    method Sbyte3 (line 20) | [Benchmark] public sbyte Sbyte3() => 0;
    method Sbyte4 (line 21) | [Benchmark] public sbyte Sbyte4() => 0;
    method Short1 (line 23) | [Benchmark] public short Short1() => 0;
    method Short2 (line 24) | [Benchmark] public short Short2() => 0;
    method Short3 (line 25) | [Benchmark] public short Short3() => 0;
    method Short4 (line 26) | [Benchmark] public short Short4() => 0;
    method Ushort1 (line 28) | [Benchmark] public ushort Ushort1() => 0;
    method Ushort2 (line 29) | [Benchmark] public ushort Ushort2() => 0;
    method Ushort3 (line 30) | [Benchmark] public ushort Ushort3() => 0;
    method Ushort4 (line 31) | [Benchmark] public ushort Ushort4() => 0;
    method Int1 (line 33) | [Benchmark] public int Int1() => 0;
    method Int2 (line 34) | [Benchmark] public int Int2() => 0;
    method Int3 (line 35) | [Benchmark] public int Int3() => 0;
    method Int4 (line 36) | [Benchmark] public int Int4() => 0;
    method Uint1 (line 38) | [Benchmark] public uint Uint1() => 0u;
    method Uint2 (line 39) | [Benchmark] public uint Uint2() => 0u;
    method Uint3 (line 40) | [Benchmark] public uint Uint3() => 0u;
    method Uint4 (line 41) | [Benchmark] public uint Uint4() => 0u;
    method Bool1 (line 43) | [Benchmark] public bool Bool1() => false;
    method Bool2 (line 44) | [Benchmark] public bool Bool2() => false;
    method Bool3 (line 45) | [Benchmark] public bool Bool3() => false;
    method Bool4 (line 46) | [Benchmark] public bool Bool4() => false;
    method Char1 (line 48) | [Benchmark] public char Char1() => 'a';
    method Char2 (line 49) | [Benchmark] public char Char2() => 'a';
    method Char3 (line 50) | [Benchmark] public char Char3() => 'a';
    method Char4 (line 51) | [Benchmark] public char Char4() => 'a';
    method Float1 (line 53) | [Benchmark] public float Float1() => 0f;
    method Float2 (line 54) | [Benchmark] public float Float2() => 0f;
    method Float3 (line 55) | [Benchmark] public float Float3() => 0f;
    method Float4 (line 56) | [Benchmark] public float Float4() => 0f;
    method Double1 (line 58) | [Benchmark] public double Double1() => 0d;
    method Double2 (line 59) | [Benchmark] public double Double2() => 0d;
    method Double3 (line 60) | [Benchmark] public double Double3() => 0d;
    method Double4 (line 61) | [Benchmark] public double Double4() => 0d;
    method Long1 (line 63) | [Benchmark] public long Long1() => 0L;
    method Long2 (line 64) | [Benchmark] public long Long2() => 0L;
    method Long3 (line 65) | [Benchmark] public long Long3() => 0L;
    method Long4 (line 66) | [Benchmark] public long Long4() => 0L;
    method Ulong1 (line 68) | [Benchmark] public ulong Ulong1() => 0uL;
    method Ulong2 (line 69) | [Benchmark] public ulong Ulong2() => 0uL;
    method Ulong3 (line 70) | [Benchmark] public ulong Ulong3() => 0uL;
    method Ulong4 (line 71) | [Benchmark] public ulong Ulong4() => 0uL;
    method String1 (line 73) | [Benchmark] public string String1() => "";
    method String2 (line 74) | [Benchmark] public string String2() => "";
    method String3 (line 75) | [Benchmark] public string String3() => "";
    method String4 (line 76) | [Benchmark] public string String4() => "";
    method Object1 (line 78) | [Benchmark] public object? Object1() => null;
    method Object2 (line 79) | [Benchmark] public object? Object2() => null;
    method Object3 (line 80) | [Benchmark] public object? Object3() => null;
    method Object4 (line 81) | [Benchmark] public object? Object4() => null;

FILE: samples/BenchmarkDotNet.Samples/IntroSmokeIncrements.cs
  class IntroSmokeIncrements (line 5) | public class IntroSmokeIncrements
    method Increment01 (line 9) | [Benchmark]
    method Increment02 (line 15) | [Benchmark]
    method Increment03 (line 22) | [Benchmark]
    method Increment04 (line 30) | [Benchmark]
    method Increment05 (line 39) | [Benchmark]
    method Increment06 (line 49) | [Benchmark]
    method Increment07 (line 60) | [Benchmark]
    method Increment08 (line 72) | [Benchmark]
    method Increment09 (line 85) | [Benchmark]
    method Increment10 (line 99) | [Benchmark]
    method Increment20 (line 114) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroSmokeStringBuilder.cs
  class IntroSmokeStringBuilder (line 6) | [MemoryDiagnoser(false)]
    method Append_Strings (line 9) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroSmokeValueTypes.cs
  class IntroSmokeValueTypes (line 8) | [MemoryDiagnoser, DisassemblyDiagnoser]
    method ReturnEnum (line 11) | [Benchmark] public Jit ReturnEnum() => Jit.RyuJit;
    method ReturnDateTime (line 13) | [Benchmark] public DateTime ReturnDateTime() => new DateTime();
    method ReturnNullableDateTime (line 15) | [Benchmark] public DateTime? ReturnNullableDateTime() => new DateTime();
    method ReturnNullableInt (line 16) | [Benchmark] public int? ReturnNullableInt() => 0;
    type StructWithReferencesOnly (line 18) | public struct StructWithReferencesOnly { public object _ref; }
    method ReturnStructWithReferencesOnly (line 19) | [Benchmark] public StructWithReferencesOnly ReturnStructWithReferences...
    type EmptyStruct (line 21) | public struct EmptyStruct { }
    method ReturnEmptyStruct (line 22) | [Benchmark] public EmptyStruct ReturnEmptyStruct() => new EmptyStruct();
    method ReturnGenericStructOfValueType (line 24) | [Benchmark] public ValueTuple<int> ReturnGenericStructOfValueType() =>...
    method ReturnGenericStructOfReferenceType (line 25) | [Benchmark] public ValueTuple<object?> ReturnGenericStructOfReferenceT...
    method ReturnValueTaskOfValueType (line 27) | [Benchmark] public ValueTask<int> ReturnValueTaskOfValueType() => new ...
    method ReturnValueTaskOfReferenceType (line 28) | [Benchmark] public ValueTask<object?> ReturnValueTaskOfReferenceType()...
    method ReturnByte (line 30) | [Benchmark] public byte ReturnByte() => 0;
    type Byte1 (line 31) | public struct Byte1 { public byte _1; }
    method ReturnByte1 (line 32) | [Benchmark] public Byte1 ReturnByte1() => new Byte1();
    type Byte2 (line 33) | public struct Byte2 { public byte _1, _2; }
    method ReturnByte2 (line 34) | [Benchmark] public Byte2 ReturnByte2() => new Byte2();
    type Byte3 (line 35) | public struct Byte3 { public byte _1, _2, _3; }
    method ReturnByte3 (line 36) | [Benchmark] public Byte3 ReturnByte3() => new Byte3();
    type Byte4 (line 37) | public struct Byte4 { public byte _1, _2, _3, _4; }
    method ReturnByte4 (line 38) | [Benchmark] public Byte4 ReturnByte4() => new Byte4();
    method ReturnShort (line 40) | [Benchmark] public short ReturnShort() => 0;
    type Short1 (line 41) | public struct Short1 { public short _1; }
    method ReturnShort1 (line 42) | [Benchmark] public Short1 ReturnShort1() => new Short1();
    type Short2 (line 43) | public struct Short2 { public short _1, _2; }
    method ReturnShort2 (line 44) | [Benchmark] public Short2 ReturnShort2() => new Short2();
    type Short3 (line 45) | public struct Short3 { public short _1, _2, _3; }
    method ReturnShort3 (line 46) | [Benchmark] public Short3 ReturnShort3() => new Short3();
    type Short4 (line 47) | public struct Short4 { public short _1, _2, _3, _4; }
    method ReturnShort4 (line 48) | [Benchmark] public Short4 ReturnShort4() => new Short4();
    method ReturnInt (line 50) | [Benchmark] public int ReturnInt() => 0;
    type Int1 (line 51) | public struct Int1 { public int _1; }
    method ReturnInt1 (line 52) | [Benchmark] public Int1 ReturnInt1() => new Int1();
    type Int2 (line 53) | public struct Int2 { public int _1, _2; }
    method ReturnInt2 (line 54) | [Benchmark] public Int2 ReturnInt2() => new Int2();
    type Int3 (line 55) | public struct Int3 { public int _1, _2, _3; }
    method ReturnInt3 (line 56) | [Benchmark] public Int3 ReturnInt3() => new Int3();
    type Int4 (line 57) | public struct Int4 { public int _1, _2, _3, _4; }
    method ReturnInt4 (line 58) | [Benchmark] public Int4 ReturnInt4() => new Int4();
    method ReturnLong (line 60) | [Benchmark] public long ReturnLong() => 0;
    type Long1 (line 61) | public struct Long1 { public long _1; }
    method ReturnLong1 (line 62) | [Benchmark] public Long1 ReturnLong1() => new Long1();
    type Long2 (line 63) | public struct Long2 { public long _1, _2; }
    method ReturnLong2 (line 64) | [Benchmark] public Long2 ReturnLong2() => new Long2();
    type Long3 (line 65) | public struct Long3 { public long _1, _2, _3; }
    method ReturnLong3 (line 66) | [Benchmark] public Long3 ReturnLong3() => new Long3();
    type Long4 (line 67) | public struct Long4 { public long _1, _2, _3, _4; }
    method ReturnLong4 (line 68) | [Benchmark] public Long4 ReturnLong4() => new Long4();

FILE: samples/BenchmarkDotNet.Samples/IntroStaThread.cs
  class IntroStaThread (line 6) | public class IntroStaThread
    method CheckForSTA (line 8) | [Benchmark, System.STAThread]

FILE: samples/BenchmarkDotNet.Samples/IntroStatisticalTesting.cs
  class IntroStatisticalTesting (line 6) | [StatisticalTestColumn("500us")]
    method Sleep50 (line 11) | [Benchmark] public void Sleep50() => Thread.Sleep(50);
    method Sleep97 (line 12) | [Benchmark] public void Sleep97() => Thread.Sleep(97);
    method Sleep99 (line 13) | [Benchmark] public void Sleep99() => Thread.Sleep(99);
    method Sleep100 (line 14) | [Benchmark(Baseline = true)] public void Sleep100() => Thread.Sleep(100);
    method Sleep101 (line 15) | [Benchmark] public void Sleep101() => Thread.Sleep(101);
    method Sleep103 (line 16) | [Benchmark] public void Sleep103() => Thread.Sleep(103);
    method Sleep150 (line 17) | [Benchmark] public void Sleep150() => Thread.Sleep(150);

FILE: samples/BenchmarkDotNet.Samples/IntroStatisticsColumns.cs
  class IntroStatisticsColumns (line 7) | [MediumRunJob, SkewnessColumn, KurtosisColumn]
    method IntroStatisticsColumns (line 16) | public IntroStatisticsColumns()
    method Md5A (line 22) | [Benchmark(Baseline = true)]
    method Md5B (line 25) | [Benchmark]
    method Sha256 (line 28) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroStopOnFirstError.cs
  class IntroStopOnFirstError (line 6) | [StopOnFirstError]
    method FirstMethod (line 9) | [Benchmark(Baseline = true)]
    method SecondMethod (line 12) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroSummaryStyle.cs
  class IntroSummaryStyle (line 10) | [Config(typeof(Config))]
    class Config (line 13) | private class Config : ManualConfig
      method Config (line 15) | public Config()
    method Sleep (line 36) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroTagColumn.cs
  class IntroTagColumn (line 10) | [Config(typeof(Config))]
    class Config (line 13) | private class Config : ManualConfig
      method Config (line 15) | public Config()
    method Foo1 (line 23) | [Benchmark]
    method Foo12 (line 26) | [Benchmark]
    method Bar3 (line 29) | [Benchmark]
    method Bar34 (line 32) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroTailcall.cs
  class IntroTailcall (line 5) | [Diagnostics.Windows.Configs.TailCallDiagnoser]
    method Calc (line 9) | [Benchmark]
    method FactorialWithoutTailing (line 13) | private static long FactorialWithoutTailing(int depth)
    method FactorialWithTailing (line 16) | private static long FactorialWithTailing(int pos, int depth)
    method FactorialWithTailing (line 19) | private static long FactorialWithTailing(int depth)

FILE: samples/BenchmarkDotNet.Samples/IntroThreadingDiagnoser.cs
  class IntroThreadingDiagnoser (line 6) | [ThreadingDiagnoser] // ENABLE the diagnoser
    method CompleteOneWorkItem (line 9) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroUnicode.cs
  class IntroUnicode (line 10) | [UnicodeConsoleLogger]
    method Foo (line 13) | [Benchmark]
  class IntroUnicodeObjectStyle (line 23) | [Config(typeof(Config))]
    class Config (line 26) | private class Config : ManualConfig
      method Config (line 28) | public Config() => AddLogger(ConsoleLogger.Unicode);
    method Foo (line 31) | [Benchmark]
  class IntroUnicodeFluentConfig (line 41) | public class IntroUnicodeFluentConfig
    method Run (line 43) | public static void Run()
    method Foo (line 50) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroVisualStudioDiagnoser.cs
  class IntroVisualStudioProfiler (line 9) | [CPUUsageDiagnoser]
    method BurnCPU (line 14) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroWakeLock.cs
  class IntroWakeLock (line 12) | [WakeLock(WakeLockType.Display)]
    method LongRunning (line 15) | [Benchmark]
  class IntroWakeLockObjectStyle (line 20) | [Config(typeof(Config))]
    class Config (line 23) | private class Config : ManualConfig
      method Config (line 25) | public Config() => WakeLock = WakeLockType.System;
    method LongRunning (line 28) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/IntroWasm.cs
  class IntroWasmCmdConfig (line 12) | public class IntroWasmCmdConfig
    method Run (line 20) | public static void Run(string[] args) => BenchmarkSwitcher.FromAssembl...
    method Foo (line 22) | [Benchmark]
  class IntroWasmFluentConfig (line 30) | public class IntroWasmFluentConfig
    method Run (line 32) | public static void Run()
    method Foo (line 47) | [Benchmark]

FILE: samples/BenchmarkDotNet.Samples/Program.cs
  class Program (line 12) | public class Program
    method Main (line 14) | public static int Main(string[] args)
    method GetConfig (line 39) | private static IConfig? GetConfig(ref string[] args)

FILE: src/BenchmarkDotNet.Analyzers/AnalyzerHelper.cs
  class AnalyzerHelper (line 12) | internal static class AnalyzerHelper
    method GetResourceString (line 16) | public static LocalizableResourceString GetResourceString(string name)
    method GetBenchmarkAttributeTypeSymbol (line 19) | public static INamedTypeSymbol? GetBenchmarkAttributeTypeSymbol(Compil...
    method AttributeListsContainAttribute (line 22) | public static bool AttributeListsContainAttribute(INamedTypeSymbol? at...
    method AttributeListContainsAttribute (line 49) | public static bool AttributeListContainsAttribute(string attributeName...
    method AttributeListContainsAttribute (line 52) | public static bool AttributeListContainsAttribute(INamedTypeSymbol? at...
    method GetAttributes (line 62) | public static ImmutableArray<AttributeSyntax> GetAttributes(string att...
    method GetAttributes (line 65) | public static ImmutableArray<AttributeSyntax> GetAttributes(INamedType...
    method NormalizeTypeName (line 94) | public static string NormalizeTypeName(INamedTypeSymbol namedTypeSymbol)
    method Deconstruct (line 114) | public static void Deconstruct<T1, T2>(this KeyValuePair<T1, T2> tuple...
    method GetLocation (line 120) | public static Location GetLocation(this AttributeData attributeData)
    method IsAssignable (line 124) | public static bool IsAssignable(TypedConstant constant, ExpressionSynt...
    method GetAttributeParamsArgumentExpression (line 165) | public static ExpressionSyntax GetAttributeParamsArgumentExpression(th...

FILE: src/BenchmarkDotNet.Analyzers/Attributes/ArgumentsAttributeAnalyzer.cs
  class ArgumentsAttributeAnalyzer (line 13) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 59) | public override void Initialize(AnalysisContext analysisContext)
    method AnalyzeMethodSymbol (line 77) | private static void AnalyzeMethodSymbol(SymbolAnalysisContext context)

FILE: src/BenchmarkDotNet.Analyzers/Attributes/GeneralArgumentAttributesAnalyzer.cs
  class GeneralArgumentAttributesAnalyzer (line 9) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 26) | public override void Initialize(AnalysisContext analysisContext)
    method AnalyzeMethodDeclaration (line 44) | private static void AnalyzeMethodDeclaration(SyntaxNodeAnalysisContext...

FILE: src/BenchmarkDotNet.Analyzers/Attributes/GeneralParameterAttributesAnalyzer.cs
  class GeneralParameterAttributesAnalyzer (line 11) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 107) | public override void Initialize(AnalysisContext analysisContext)
    method Analyze (line 125) | private static void Analyze(SyntaxNodeAnalysisContext context)
    method AnalyzeFieldOrPropertySymbol (line 223) | private static void AnalyzeFieldOrPropertySymbol(
    method AnalyzeParamsSourceWriteOnlyProperty (line 334) | private static void AnalyzeParamsSourceWriteOnlyProperty(
    method ExtractNameFromExpression (line 435) | private static string? ExtractNameFromExpression(ExpressionSyntax expr...
    method GetContainingType (line 467) | private static INamedTypeSymbol? GetContainingType(AttributeSyntax att...
    method AllAttributeTypeSymbolsExist (line 484) | private static bool AllAttributeTypeSymbolsExist(

FILE: src/BenchmarkDotNet.Analyzers/Attributes/ParamsAllValuesAttributeAnalyzer.cs
  class ParamsAllValuesAttributeAnalyzer (line 10) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 36) | public override void Initialize(AnalysisContext analysisContext)
    method Analyze (line 53) | private static void Analyze(SyntaxNodeAnalysisContext context)
    method AnalyzeFieldOrPropertyTypeSyntax (line 93) | private static void AnalyzeFieldOrPropertyTypeSyntax(SyntaxNodeAnalysi...
    method GetParamsAllValuesAttributeTypeSymbol (line 128) | private static INamedTypeSymbol? GetParamsAllValuesAttributeTypeSymbol...

FILE: src/BenchmarkDotNet.Analyzers/Attributes/ParamsAttributeAnalyzer.cs
  class ParamsAttributeAnalyzer (line 9) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 44) | public override void Initialize(AnalysisContext analysisContext)
    method Analyze (line 62) | private void Analyze(SymbolAnalysisContext context)
    method GetParamsAttributeTypeSymbol (line 149) | private static INamedTypeSymbol? GetParamsAttributeTypeSymbol(Compilat...

FILE: src/BenchmarkDotNet.Analyzers/BenchmarkDotNetAnalyzerResources.Designer.cs
  class BenchmarkDotNetAnalyzerResources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method BenchmarkDotNetAnalyzerResources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: src/BenchmarkDotNet.Analyzers/BenchmarkRunner/RunAnalyzer.cs
  class RunAnalyzer (line 9) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 66) | public override void Initialize(AnalysisContext analysisContext)
    method Analyze (line 84) | private static void Analyze(SyntaxNodeAnalysisContext context)

FILE: src/BenchmarkDotNet.Analyzers/DiagnosticIds.cs
  class DiagnosticIds (line 3) | public static class DiagnosticIds

FILE: src/BenchmarkDotNet.Analyzers/General/BenchmarkClassAnalyzer.cs
  class BenchmarkClassAnalyzer (line 12) | [DiagnosticAnalyzer(LanguageNames.CSharp)]
    method Initialize (line 96) | public override void Initialize(AnalysisContext analysisContext)
    method AnalyzeClassDeclaration (line 115) | private static void AnalyzeClassDeclaration(SyntaxNodeAnalysisContext ...
    method AnalyzeAttributeSyntax (line 528) | private static void AnalyzeAttributeSyntax(SyntaxNodeAnalysisContext c...
    method GetBenchmarkCategoryAttributeTypeSymbol (line 553) | private static INamedTypeSymbol? GetBenchmarkCategoryAttributeTypeSymb...
    method FormatBenchmarkCategory (line 555) | private static string FormatBenchmarkCategory(List<string?> benchmarkC...

FILE: src/BenchmarkDotNet.Annotations/Attributes/ArgumentsAttribute.cs
  class ArgumentsAttribute (line 6) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    method ArgumentsAttribute (line 12) | [PublicAPI]
    method ArgumentsAttribute (line 15) | public ArgumentsAttribute(params object?[]? values)

FILE: src/BenchmarkDotNet.Annotations/Attributes/ArgumentsSourceAttribute.cs
  class ArgumentsSourceAttribute (line 5) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method ArgumentsSourceAttribute (line 11) | public ArgumentsSourceAttribute(string name)
    method ArgumentsSourceAttribute (line 17) | public ArgumentsSourceAttribute(Type type, string name)

FILE: src/BenchmarkDotNet.Annotations/Attributes/BenchmarkAttribute.cs
  class BenchmarkAttribute (line 7) | [AttributeUsage(AttributeTargets.Method)]
    method BenchmarkAttribute (line 11) | public BenchmarkAttribute([CallerLineNumber] int sourceCodeLineNumber ...

FILE: src/BenchmarkDotNet.Annotations/Attributes/BenchmarkCategoryAttribute.cs
  class BenchmarkCategoryAttribute (line 6) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | Attri...
    method BenchmarkCategoryAttribute (line 12) | [PublicAPI] protected BenchmarkCategoryAttribute() => Categories = [];
    method BenchmarkCategoryAttribute (line 14) | public BenchmarkCategoryAttribute(params string[] categories) => Categ...

FILE: src/BenchmarkDotNet.Annotations/Attributes/GenericTypeArgumentsAttribute.cs
  class GenericTypeArgumentsAttribute (line 6) | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    method GenericTypeArgumentsAttribute (line 11) | public GenericTypeArgumentsAttribute([DynamicallyAccessedMembers(Dynam...
    method GenericTypeArgumentsAttribute (line 14) | public GenericTypeArgumentsAttribute(
    method GenericTypeArgumentsAttribute (line 19) | public GenericTypeArgumentsAttribute(

FILE: src/BenchmarkDotNet.Annotations/Attributes/GlobalCleanupAttribute.cs
  class GlobalCleanupAttribute (line 10) | [AttributeUsage(AttributeTargets.Method)]

FILE: src/BenchmarkDotNet.Annotations/Attributes/GlobalSetupAttribute.cs
  class GlobalSetupAttribute (line 10) | [AttributeUsage(AttributeTargets.Method)]

FILE: src/BenchmarkDotNet.Annotations/Attributes/IterationCleanupAttribute.cs
  class IterationCleanupAttribute (line 9) | [AttributeUsage(AttributeTargets.Method)]

FILE: src/BenchmarkDotNet.Annotations/Attributes/IterationSetupAttribute.cs
  class IterationSetupAttribute (line 9) | [AttributeUsage(AttributeTargets.Method)]

FILE: src/BenchmarkDotNet.Annotations/Attributes/ParamsAllValuesAttribute.cs
  class ParamsAllValuesAttribute (line 4) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]

FILE: src/BenchmarkDotNet.Annotations/Attributes/ParamsAttribute.cs
  class ParamsAttribute (line 5) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
    method ParamsAttribute (line 11) | public ParamsAttribute() => Values = [];
    method ParamsAttribute (line 13) | public ParamsAttribute(params object?[]? values)

FILE: src/BenchmarkDotNet.Annotations/Attributes/ParamsSourceAttribute.cs
  class ParamsSourceAttribute (line 5) | [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
    method ParamsSourceAttribute (line 11) | public ParamsSourceAttribute(string name)
    method ParamsSourceAttribute (line 17) | public ParamsSourceAttribute(Type type, string name)

FILE: src/BenchmarkDotNet.Annotations/Attributes/PriorityAttribute.cs
  class PriorityAttribute (line 5) | public abstract class PriorityAttribute : Attribute

FILE: src/BenchmarkDotNet.Annotations/Attributes/TargetedAttribute.cs
  class TargetedAttribute (line 10) | public abstract class TargetedAttribute : Attribute
    method Match (line 23) | public bool Match(MethodInfo method) => Targets.Length == 0 || Targets...

FILE: src/BenchmarkDotNet.Annotations/Jobs/RuntimeMoniker.cs
  type RuntimeMoniker (line 5) | public enum RuntimeMoniker

FILE: src/BenchmarkDotNet.Diagnostics.Windows/ConcurrencyVisualizerProfiler.cs
  class ConcurrencyVisualizerProfiler (line 26) | public class ConcurrencyVisualizerProfiler : IProfiler
    method ConcurrencyVisualizerProfiler (line 39) | [PublicAPI] // parameterless ctor required by DiagnosersLoader to supp...
    method ConcurrencyVisualizerProfiler (line 42) | [PublicAPI]
    method DisplayResults (line 53) | public void DisplayResults(ILogger logger)
    method Handle (line 63) | public void Handle(HostSignal signal, DiagnoserActionParameters parame...
    method GetRunMode (line 74) | public RunMode GetRunMode(BenchmarkCase benchmarkCase) => etwProfiler....
    method ProcessResults (line 76) | public IEnumerable<Metric> ProcessResults(DiagnoserResults results) =>...
    method Validate (line 78) | public IEnumerable<ValidationError> Validate(ValidationParameters vali...
    method CreateDefaultConfig (line 80) | private static EtwProfilerConfig CreateDefaultConfig()
    method CreateCvTraceFile (line 121) | private string CreateCvTraceFile(DiagnoserActionParameters parameters)
    method GenerateCodeInfo (line 181) | private string GenerateCodeInfo(DiagnoserActionParameters parameters)

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/ConcurrencyVisualizerProfilerAttribute.cs
  class ConcurrencyVisualizerProfilerAttribute (line 7) | [PublicAPI]
    method ConcurrencyVisualizerProfilerAttribute (line 11) | public ConcurrencyVisualizerProfilerAttribute() => Config = ManualConf...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/EtwProfilerAttribute.cs
  class EtwProfilerAttribute (line 7) | [PublicAPI]
    method EtwProfilerAttribute (line 13) | public EtwProfilerAttribute(bool performExtraBenchmarksRun = true, int...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/InliningDiagnoserAttribute.cs
  class InliningDiagnoserAttribute (line 6) | [AttributeUsage(AttributeTargets.Class)]
    method InliningDiagnoserAttribute (line 11) | public InliningDiagnoserAttribute(bool logFailuresOnly = true, bool fi...
    method InliningDiagnoserAttribute (line 16) | public InliningDiagnoserAttribute(bool logFailuresOnly = true, string[...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/JitStatsDiagnoserAttribute.cs
  class JitStatsDiagnoserAttribute (line 7) | [PublicAPI]
    method JitStatsDiagnoserAttribute (line 11) | public JitStatsDiagnoserAttribute()

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/NativeMemoryProfilerAttribute.cs
  class NativeMemoryProfilerAttribute (line 7) | [PublicAPI]
    method NativeMemoryProfilerAttribute (line 11) | public NativeMemoryProfilerAttribute()

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Configs/TailCallDiagnoserAttribute.cs
  class TailCallDiagnoserAttribute (line 6) | [AttributeUsage(AttributeTargets.Class)]
    method TailCallDiagnoserAttribute (line 13) | public TailCallDiagnoserAttribute(bool logFailuresOnly = true, bool fi...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/EtwDiagnoser.cs
  class EtwDiagnoser (line 19) | public abstract class EtwDiagnoser<TStats> : DisposeAtProcessTermination...
    method GetRunMode (line 25) | public virtual RunMode GetRunMode(BenchmarkCase benchmarkCase) => RunM...
    method Start (line 36) | protected void Start(DiagnoserActionParameters parameters)
    method GetInitializedStats (line 61) | protected virtual TStats GetInitializedStats(DiagnoserActionParameters...
    method CreateSession (line 63) | protected virtual TraceEventSession CreateSession(BenchmarkCase benchm...
    method EnableProvider (line 66) | protected virtual void EnableProvider()
    method AttachToEvents (line 74) | protected abstract void AttachToEvents(TraceEventSession traceEventSes...
    method Stop (line 76) | protected void Stop()
    method Dispose (line 82) | public override void Dispose()
    method Clear (line 88) | private void Clear()
    method GetSessionName (line 94) | private static string GetSessionName(string prefix, BenchmarkCase benc...
    method WaitUntilStarted (line 101) | private static void WaitUntilStarted(Task task)
    method WaitForDelayedEvents (line 117) | private static void WaitForDelayedEvents()

FILE: src/BenchmarkDotNet.Diagnostics.Windows/EtwProfiler.cs
  class EtwProfiler (line 22) | public class EtwProfiler : IDiagnoser, IHardwareCountersDiagnoser, IProf...
    method EtwProfiler (line 33) | [PublicAPI] // parameterless ctor required by DiagnosersLoader to supp...
    method EtwProfiler (line 36) | [PublicAPI]
    method GetRunMode (line 60) | public RunMode GetRunMode(BenchmarkCase benchmarkCase) => runMode;
    method Validate (line 62) | public IEnumerable<ValidationError> Validate(ValidationParameters vali...
    method Handle (line 65) | public void Handle(HostSignal signal, DiagnoserActionParameters parame...
    method ProcessResults (line 74) | public IEnumerable<Metric> ProcessResults(DiagnoserResults results)
    method DisplayResults (line 86) | public void DisplayResults(ILogger logger)
    method Start (line 95) | private void Start(DiagnoserActionParameters parameters)
    method Stop (line 122) | private void Stop(DiagnoserActionParameters parameters)
    method GetInterval (line 136) | private static int GetInterval(ProfileSourceInfo info) => Math.Min(inf...
    method WaitForDelayedEvents (line 142) | private static void WaitForDelayedEvents() => Thread.Sleep(TimeSpan.Fr...
    method BuildPmcStats (line 144) | private IReadOnlyDictionary<BenchmarkCase, PmcStats> BuildPmcStats()

FILE: src/BenchmarkDotNet.Diagnostics.Windows/EtwProfilerConfig.cs
  class EtwProfilerConfig (line 10) | public class EtwProfilerConfig
    method EtwProfilerConfig (line 38) | public EtwProfilerConfig(

FILE: src/BenchmarkDotNet.Diagnostics.Windows/HardwareCounters.cs
  class HardwareCounters (line 13) | public static class HardwareCounters
    method Validate (line 33) | public static IEnumerable<ValidationError> Validate(ValidationParamete...
    method FromCounter (line 76) | internal static PreciseMachineCounter FromCounter(HardwareCounter coun...
    method Enable (line 83) | internal static void Enable(IEnumerable<PreciseMachineCounter> counters)

FILE: src/BenchmarkDotNet.Diagnostics.Windows/InliningDiagnoser.cs
  class InliningDiagnoser (line 10) | public class InliningDiagnoser : JitDiagnoser<object>, IProfiler
    method InliningDiagnoser (line 20) | public InliningDiagnoser() { }
    method InliningDiagnoser (line 27) | public InliningDiagnoser(bool logFailuresOnly = true, bool filterByNam...
    method InliningDiagnoser (line 38) | public InliningDiagnoser(bool logFailuresOnly = true, string[]? allowe...
    method AttachToEvents (line 49) | protected override void AttachToEvents(TraceEventSession session, Benc...
    method ShouldPrintEventInfo (line 103) | private bool ShouldPrintEventInfo(string inlinerNamespace, string inli...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs
  class JitDiagnoser (line 15) | public abstract class JitDiagnoser<TStats> : EtwDiagnoser<TStats>, IDiag...
    method GetRunMode (line 21) | public override RunMode GetRunMode(BenchmarkCase benchmarkCase) => Run...
    method Handle (line 25) | public void Handle(HostSignal signal, DiagnoserActionParameters parame...
    method ProcessResults (line 33) | public virtual IEnumerable<Metric> ProcessResults(DiagnoserResults res...
    method Validate (line 35) | public IEnumerable<ValidationError> Validate(ValidationParameters vali...
    method DisplayResults (line 43) | public void DisplayResults(ILogger outputLogger)

FILE: src/BenchmarkDotNet.Diagnostics.Windows/JitStatsDiagnoser.cs
  class JitStatsDiagnoser (line 13) | public class JitStatsDiagnoser : JitDiagnoser<JitStats>, IProfiler
    method ProcessResults (line 21) | public override IEnumerable<Metric> ProcessResults(DiagnoserResults re...
    method AttachToEvents (line 34) | protected override void AttachToEvents(TraceEventSession session, Benc...
    class MethodsJittedDescriptor (line 61) | private sealed class MethodsJittedDescriptor : IMetricDescriptor
      method GetIsAvailable (line 73) | public bool GetIsAvailable(Metric metric) => true;
    class MethodsTieredDescriptor (line 76) | private sealed class MethodsTieredDescriptor : IMetricDescriptor
      method GetIsAvailable (line 88) | public bool GetIsAvailable(Metric metric) => true;
    class JitAllocatedMemoryDescriptor (line 91) | private sealed class JitAllocatedMemoryDescriptor : IMetricDescriptor
      method GetIsAvailable (line 103) | public bool GetIsAvailable(Metric metric) => true;
  class JitStats (line 107) | public sealed class JitStats

FILE: src/BenchmarkDotNet.Diagnostics.Windows/NativeMemoryProfiler.cs
  class NativeMemoryProfiler (line 18) | public class NativeMemoryProfiler : IProfiler
    method NativeMemoryProfiler (line 26) | [PublicAPI] // parameterless ctor required by DiagnosersLoader to supp...
    method DisplayResults (line 35) | public void DisplayResults(ILogger resultLogger)
    method Handle (line 47) | public void Handle(HostSignal signal, DiagnoserActionParameters parame...
    method GetRunMode (line 49) | public RunMode GetRunMode(BenchmarkCase benchmarkCase) => etwProfiler....
    method ProcessResults (line 51) | public IEnumerable<Metric> ProcessResults(DiagnoserResults results)
    method Validate (line 59) | public IEnumerable<ValidationError> Validate(ValidationParameters vali...
    method CreateDefaultConfig (line 61) | private static EtwProfilerConfig CreateDefaultConfig()

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Sessions.cs
  class HeapSession (line 18) | internal class HeapSession : Session
    method HeapSession (line 20) | public HeapSession(DiagnoserActionParameters details, EtwProfilerConfi...
    method EnableProviders (line 27) | internal override Session EnableProviders()
  class UserSession (line 35) | internal class UserSession : Session
    method UserSession (line 37) | public UserSession(DiagnoserActionParameters details, EtwProfilerConfi...
    method EnableProviders (line 44) | internal override Session EnableProviders()
  class KernelSession (line 57) | internal class KernelSession : Session
    method KernelSession (line 59) | public KernelSession(DiagnoserActionParameters details, EtwProfilerCon...
    method EnableProviders (line 66) | internal override Session EnableProviders()
  class Session (line 93) | internal abstract class Session : DisposeAtProcessTermination
    method Session (line 107) | protected Session(string sessionName, DiagnoserActionParameters detail...
    method Dispose (line 119) | public override void Dispose()
    method EnableProviders (line 125) | internal abstract Session EnableProviders();
    method GetSessionName (line 127) | protected static string GetSessionName(BenchmarkCase benchmarkCase)

FILE: src/BenchmarkDotNet.Diagnostics.Windows/TailCallDiagnoser.cs
  class TailCallDiagnoser (line 13) | public class TailCallDiagnoser : JitDiagnoser<object>, IProfiler
    method TailCallDiagnoser (line 21) | public TailCallDiagnoser() { }
    method TailCallDiagnoser (line 28) | public TailCallDiagnoser(bool logFailuresOnly = true, bool filterByNam...
    method AttachToEvents (line 38) | protected override void AttachToEvents(TraceEventSession traceEventSes...
    method ShouldPrintEventInfo (line 89) | private bool ShouldPrintEventInfo(string callerNamespace, string calle...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Tracing/BenchmarkEvent.cs
  class BenchmarkEvent (line 7) | public sealed class BenchmarkEvent : TraceEvent
    method BenchmarkEvent (line 13) | internal BenchmarkEvent(Action<BenchmarkEvent> target, int eventID, in...
    method ToXml (line 27) | public override StringBuilder ToXml(StringBuilder sb)
    method PayloadValue (line 36) | public override object? PayloadValue(int index) => index == 0 ? Benchm...
    method Dispatch (line 38) | protected override void Dispatch() => target?.Invoke(this);

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Tracing/EngineEventLogParser.cs
  class EngineEventLogParser (line 9) | public sealed class EngineEventLogParser : TraceEventParser
    method EngineEventLogParser (line 13) | public EngineEventLogParser(TraceEventSource source, bool dontRegister...
    method GetProviderName (line 115) | protected override string GetProviderName() { return ProviderName; }
    method BenchmarkStartTemplate (line 117) | private static IterationEvent BenchmarkStartTemplate(Action<IterationE...
    method BenchmarkStopTemplate (line 122) | private static IterationEvent BenchmarkStopTemplate(Action<IterationEv...
    method OverheadJittingStartTemplate (line 127) | private static IterationEvent OverheadJittingStartTemplate(Action<Iter...
    method OverheadJittingStopTemplate (line 130) | private static IterationEvent OverheadJittingStopTemplate(Action<Itera...
    method WorkloadJittingStartTemplate (line 133) | private static IterationEvent WorkloadJittingStartTemplate(Action<Iter...
    method WorkloadJittingStopTemplate (line 136) | private static IterationEvent WorkloadJittingStopTemplate(Action<Itera...
    method WorkloadPilotStartTemplate (line 139) | private static IterationEvent WorkloadPilotStartTemplate(Action<Iterat...
    method WorkloadPilotStopTemplate (line 142) | private static IterationEvent WorkloadPilotStopTemplate(Action<Iterati...
    method OverheadWarmupStartTemplate (line 145) | private static IterationEvent OverheadWarmupStartTemplate(Action<Itera...
    method OverheadWarmupStopTemplate (line 148) | private static IterationEvent OverheadWarmupStopTemplate(Action<Iterat...
    method WorkloadWarmupStartTemplate (line 151) | private static IterationEvent WorkloadWarmupStartTemplate(Action<Itera...
    method WorkloadWarmupStopTemplate (line 154) | private static IterationEvent WorkloadWarmupStopTemplate(Action<Iterat...
    method OverheadActualStartTemplate (line 157) | private static IterationEvent OverheadActualStartTemplate(Action<Itera...
    method OverheadActualStopTemplate (line 160) | private static IterationEvent OverheadActualStopTemplate(Action<Iterat...
    method WorkloadActualStartTemplate (line 163) | private static IterationEvent WorkloadActualStartTemplate(Action<Itera...
    method WorkloadActualStopTemplate (line 166) | private static IterationEvent WorkloadActualStopTemplate(Action<Iterat...
    method CreateIterationStartTemplate (line 169) | private static IterationEvent CreateIterationStartTemplate(Action<Iter...
    method CreateIterationStopTemplate (line 174) | private static IterationEvent CreateIterationStopTemplate(Action<Itera...
    method EnumerateTemplates (line 179) | protected override void EnumerateTemplates(Func<string, string, EventF...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Tracing/IterationEvent.cs
  class IterationEvent (line 8) | public sealed class IterationEvent : TraceEvent
    method IterationEvent (line 14) | internal IterationEvent(Action<IterationEvent>? target, int eventId, i...
    method ToXml (line 28) | public override StringBuilder ToXml(StringBuilder sb)
    method PayloadValue (line 37) | public override object? PayloadValue(int index) => index == 0 ? TotalO...
    method Dispatch (line 39) | protected override void Dispatch() => target?.Invoke(this);
    method Validate (line 41) | protected override void Validate() => Debug.Assert(!(Version == 0 && G...

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Tracing/NativeMemoryLogParser.cs
  class NativeMemoryLogParser (line 19) | [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1121:UseBuiltInT...
    method NativeMemoryLogParser (line 34) | public NativeMemoryLogParser(string etlFilePath, BenchmarkCase benchma...
    method Parse (line 49) | public IEnumerable<Metric> Parse()
    method Parse (line 67) | private IEnumerable<Metric> Parse(TraceLog traceLog)
    method CreateHeapCache (line 278) | private static Dictionary<Address, long> CreateHeapCache(

FILE: src/BenchmarkDotNet.Diagnostics.Windows/Tracing/TraceLogParser.cs
  class TraceLogParser (line 14) | public class TraceLogParser
    method Parse (line 19) | public static IEnumerable<Metric> Parse(string etlFilePath, PreciseMac...
    method Parse (line 38) | private IEnumerable<Metric> Parse(TraceLogEventSource traceLogEventSou...
    method OnOverheadActualStart (line 59) | private void OnOverheadActualStart(IterationEvent obj) => HandleIterat...
    method OnOverheadActualStop (line 61) | private void OnOverheadActualStop(IterationEvent obj) => HandleIterati...
    method OnWorkloadActualStart (line 63) | private void OnWorkloadActualStart(IterationEvent obj) => HandleIterat...
    method OnWorkloadActualStop (line 65) | private void OnWorkloadActualStop(IterationEvent obj) => HandleIterati...
    method HandleIterationEvent (line 67) | private void HandleIterationEvent(int processId, double timeStampRelat...
    method OnPmcIntervalChange (line 76) | private void OnPmcIntervalChange(SampledProfileIntervalTraceData data)
    method OnPmcEvent (line 84) | private void OnPmcEvent(PMCCounterProfTraceData data)
  class ProcessMetrics (line 94) | public class ProcessMetrics
    method HandleIterationEvent (line 104) | public void HandleIterationEvent(double timeStamp, IterationMode itera...
    method HandleNewSample (line 121) | public void HandleNewSample(double timeStamp, ulong instructionPointer...
    method CalculateMetrics (line 124) | public IEnumerable<Metric> CalculateMetrics(Dictionary<int, int> profi...
    method CreateIterationData (line 161) | private IterationData[] CreateIterationData(List<double> startStopTime...
    method SumCountersPerIterations (line 175) | private void SumCountersPerIterations(Dictionary<int, int> profileSour...
    method Sum (line 201) | private static Dictionary<int, ulong> Sum(IterationData[] iterations)
  class IterationData (line 221) | public class IterationData
    method IterationData (line 227) | public IterationData(double startTimestamp, double stopTimestamp)
    method TryHandle (line 234) | public bool TryHandle(double timeStamp, int profileSource, int interval)

FILE: src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoser.cs
  class DotMemoryDiagnoser (line 11) | public class DotMemoryDiagnoser(Uri? nugetUrl = null, string? downloadTo...
    method InitTool (line 15) | protected override void InitTool(Progress progress)
    method AttachToCurrentProcess (line 20) | protected override void AttachToCurrentProcess(string snapshotFile)
    method AttachToProcessByPid (line 25) | protected override void AttachToProcessByPid(int pid, string snapshotF...
    method TakeSnapshot (line 34) | protected override void TakeSnapshot()
    method Detach (line 39) | protected override void Detach()
    method CreateSnapshotFilePath (line 44) | protected override string CreateSnapshotFilePath(DiagnoserActionParame...
    method GetRunnerPath (line 49) | protected override string GetRunnerPath()
    method IsSupported (line 71) | internal override bool IsSupported(RuntimeMoniker runtimeMoniker)

FILE: src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoserAttribute.cs
  class DotMemoryDiagnoserAttribute (line 6) | [AttributeUsage(AttributeTargets.Class)]
    method DotMemoryDiagnoserAttribute (line 11) | public DotMemoryDiagnoserAttribute()
    method DotMemoryDiagnoserAttribute (line 17) | public DotMemoryDiagnoserAttribute(Uri? nugetUrl, string? downloadTo =...

FILE: src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoser.cs
  class DotTraceDiagnoser (line 11) | public class DotTraceDiagnoser(Uri? nugetUrl = null, string? downloadTo ...
    method InitTool (line 15) | protected override void InitTool(Progress progress)
    method AttachToCurrentProcess (line 20) | protected override void AttachToCurrentProcess(string snapshotFile)
    method AttachToProcessByPid (line 26) | protected override void AttachToProcessByPid(int pid, string snapshotF...
    method TakeSnapshot (line 36) | protected override void TakeSnapshot()
    method Detach (line 42) | protected override void Detach()
    method CreateSnapshotFilePath (line 47) | protected override string CreateSnapshotFilePath(DiagnoserActionParame...
    method GetRunnerPath (line 52) | protected override string GetRunnerPath()
    method IsSupported (line 74) | internal override bool IsSupported(RuntimeMoniker runtimeMoniker)

FILE: src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoserAttribute.cs
  class DotTraceDiagnoserAttribute (line 6) | [AttributeUsage(AttributeTargets.Class)]
    method DotTraceDiagnoserAttribute (line 11) | public DotTraceDiagnoserAttribute()
    method DotTraceDiagnoserAttribute (line 17) | public DotTraceDiagnoserAttribute(Uri? nugetUrl, string? downloadTo = ...

FILE: src/BenchmarkDotNet.Disassembler/Program.cs
  class Program (line 10) | internal static class Program
    method Main (line 17) | public static void Main(string[] args)
    method SaveToFile (line 47) | private static void SaveToFile(DisassemblyResult disassemblyResult, st...

FILE: src/BenchmarkDotNet.Exporters.Plotting/ScottPlotExporter.cs
  class ScottPlotExporter (line 17) | public class ScottPlotExporter : IExporter
    method ScottPlotExporter (line 34) | public ScottPlotExporter(int width = 1920, int height = 1080)
    method ExportToLog (line 87) | public void ExportToLog(Summary summary, ILogger logger)
    method ExportToFiles (line 98) | public IEnumerable<string> ExportToFiles(Summary summary, ILogger cons...
    method StandardError (line 158) | private static double StandardError(IReadOnlyList<double> values)
    method GetTimeUnit (line 171) | private (string Unit, double ScaleFactor) GetTimeUnit(IEnumerable<Meas...
    method CreateBarPlot (line 192) | private string CreateBarPlot(string title, string fileName, string yLa...
    method CreateBoxPlot (line 267) | private string CreateBoxPlot(string title, string fileName, string yLa...
    method GetAnnotations (line 355) | private IReadOnlyList<Annotation> GetAnnotations(string version)
    class ChartStats (line 374) | private class ChartStats
      method ChartStats (line 376) | public ChartStats(string Target, string JobId, IReadOnlyList<double>...
      method CalculateMedian (line 398) | private static (int MidPoint, double Median) CalculateMedian(ReadOnl...
      method CalculateBoxPlotStatistics (line 413) | public (double Min, double Q1, double Median, double Q3, double Max,...

FILE: src/BenchmarkDotNet.TestAdapter/BenchmarkCaseExtensions.cs
  class BenchmarkCaseExtensions (line 15) | internal static class BenchmarkCaseExtensions
    method ToVsTestCase (line 24) | internal static TestCase ToVsTestCase(this BenchmarkCase benchmarkCase...
    method GetUnrandomizedJobDisplayInfo (line 76) | internal static string GetUnrandomizedJobDisplayInfo(this BenchmarkCas...
    method GetTestCaseId (line 94) | internal static Guid GetTestCaseId(this BenchmarkCase benchmarkCase)

FILE: src/BenchmarkDotNet.TestAdapter/BenchmarkEnumerator.cs
  class BenchmarkEnumerator (line 15) | internal static class BenchmarkEnumerator
    method GetBenchmarksFromAssemblyPath (line 22) | public static BenchmarkRunInfo[] GetBenchmarksFromAssemblyPath(string ...

FILE: src/BenchmarkDotNet.TestAdapter/BenchmarkExecutor.cs
  class BenchmarkExecutor (line 16) | internal class BenchmarkExecutor
    method RunBenchmarks (line 29) | public void RunBenchmarks(string assemblyPath, TestExecutionRecorderWr...
    method Cancel (line 86) | public void Cancel()

FILE: src/BenchmarkDotNet.TestAdapter/Remoting/BenchmarkEnumeratorWrapper.cs
  class BenchmarkEnumeratorWrapper (line 10) | internal class BenchmarkEnumeratorWrapper : MarshalByRefObject
    method GetTestCasesFromAssemblyPathSerialized (line 18) | public List<string> GetTestCasesFromAssemblyPathSerialized(string asse...

FILE: src/BenchmarkDotNet.TestAdapter/Remoting/BenchmarkExecutorWrapper.cs
  class BenchmarkExecutorWrapper (line 9) | internal class BenchmarkExecutorWrapper : MarshalByRefObject
    method RunBenchmarks (line 13) | public void RunBenchmarks(string assemblyPath, TestExecutionRecorderWr...
    method Cancel (line 18) | public void Cancel()

FILE: src/BenchmarkDotNet.TestAdapter/Remoting/MessageLoggerWrapper.cs
  class MessageLoggerWrapper (line 9) | internal class MessageLoggerWrapper : MarshalByRefObject, IMessageLogger
    method MessageLoggerWrapper (line 13) | public MessageLoggerWrapper(IMessageLogger logger)
    method SendMessage (line 18) | public void SendMessage(TestMessageLevel testMessageLevel, string mess...

FILE: src/BenchmarkDotNet.TestAdapter/Remoting/SerializationHelpers.cs
  class SerializationHelpers (line 8) | internal static class SerializationHelpers
    method Serialize (line 16) | public static string Serialize<T>(T data)
    method Deserialize (line 21) | public static T Deserialize<T>(string data)

FILE: src/BenchmarkDotNet.TestAdapter/Remoting/TestExecutionRecorderWrapper.cs
  class TestExecutionRecorderWrapper (line 10) | internal class TestExecutionRecorderWrapper : MarshalByRefObject
    method TestExecutionRecorderWrapper (line 14) | public TestExecutionRecorderWrapper(ITestExecutionRecorder testExecuti...
    method GetLogger (line 19) | public MessageLoggerWrapper GetLogger()
    method RecordStart (line 24) | internal void RecordStart(string serializedTestCase)
    method RecordEnd (line 29) | internal void RecordEnd(string serializedTestCase, TestOutcome testOut...
    method RecordResult (line 34) | internal void RecordResult(string serializedTestResult)

FILE: src/BenchmarkDotNet.TestAdapter/Utility/LoggerHelper.cs
  class LoggerHelper (line 7) | internal class LoggerHelper
    method LoggerHelper (line 9) | public LoggerHelper(IMessageLogger logger, Stopwatch stopwatch)
    method Log (line 19) | public void Log(string format, params object[] args)
    method LogWithSource (line 24) | public void LogWithSource(string source, string format, params object[...
    method LogError (line 29) | public void LogError(string format, params object[] args)
    method LogErrorWithSource (line 34) | public void LogErrorWithSource(string source, string format, params ob...
    method LogWarning (line 39) | public void LogWarning(string format, params object[] args)
    method LogWarningWithSource (line 44) | public void LogWarningWithSource(string source, string format, params ...
    method SendMessage (line 49) | private void SendMessage(TestMessageLevel level, string? assemblyName,...

FILE: src/BenchmarkDotNet.TestAdapter/Utility/TestCaseFilter.cs
  class TestCaseFilter (line 12) | internal class TestCaseFilter
    method TestCaseFilter (line 23) | public TestCaseFilter(IDiscoveryContext discoveryContext, LoggerHelper...
    method TestCaseFilter (line 32) | public TestCaseFilter(IRunContext runContext, LoggerHelper logger, str...
    method GetTestCaseFilterValue (line 39) | public string GetTestCaseFilterValue()
    method MatchTestCase (line 46) | public bool MatchTestCase(TestCase testCase)
    method PropertyProvider (line 62) | public object? PropertyProvider(TestCase testCase, string name)
    method GetTestCaseFilterExpression (line 91) | private bool GetTestCaseFilterExpression(IRunContext runContext, Logge...
    method GetTestCaseFilterExpressionFromDiscoveryContext (line 107) | private bool GetTestCaseFilterExpressionFromDiscoveryContext(IDiscover...
    method GetSupportedPropertyNames (line 148) | private List<string> GetSupportedPropertyNames()
    method GetTraits (line 161) | private static IEnumerable<KeyValuePair<string, string>> GetTraits(Tes...

FILE: src/BenchmarkDotNet.TestAdapter/VSTestAdapter.cs
  class VsTestAdapter (line 18) | [ExtensionUri(ExecutorUriString)]
    method DiscoverTests (line 40) | public void DiscoverTests(
    method RunTests (line 69) | public void RunTests(IEnumerable<TestCase>? tests, IRunContext? runCon...
    method RunTests (line 95) | public void RunTests(IEnumerable<string>? sources, IRunContext? runCon...
    method Cancel (line 136) | public void Cancel()
    method GetVsTestCasesFromAssembly (line 147) | private static List<TestCase> GetVsTestCasesFromAssembly(string assemb...
    method RunBenchmarks (line 186) | private void RunBenchmarks(string source, IFrameworkHandle frameworkHa...
    method CreateIsolatedType (line 215) | private static object CreateIsolatedType(Type type, string assemblyPath)
    method ValidateSourceIsAssemblyOrThrow (line 236) | private static void ValidateSourceIsAssemblyOrThrow(string source)

FILE: src/BenchmarkDotNet.TestAdapter/VSTestEventProcessor.cs
  class VsTestEventProcessor (line 23) | internal class VsTestEventProcessor : EventProcessor
    method VsTestEventProcessor (line 32) | public VsTestEventProcessor(
    method OnValidationError (line 42) | public override void OnValidationError(ValidationError validationError)
    method OnBuildComplete (line 72) | public override void OnBuildComplete(BuildPartition buildPartition, Bu...
    method OnStartRunBenchmark (line 99) | public override void OnStartRunBenchmark(BenchmarkCase benchmarkCase)
    method OnEndRunBenchmark (line 112) | public override void OnEndRunBenchmark(BenchmarkCase benchmarkCase, Be...
    method SendUnsentTestResults (line 152) | public void SendUnsentTestResults()
    method GetOrCreateTestResult (line 168) | private TestResult GetOrCreateTestResult(TestCase testCase)
    method RecordStart (line 183) | private void RecordStart(TestCase testCase)
    method RecordEnd (line 188) | private void RecordEnd(TestCase testCase, TestOutcome testOutcome)
    method RecordResult (line 193) | private void RecordResult(TestResult testResult)

FILE: src/BenchmarkDotNet.TestAdapter/VSTestLogger.cs
  class VsTestLogger (line 10) | internal sealed class VsTestLogger : ILogger
    method VsTestLogger (line 16) | public VsTestLogger(IMessageLogger logger)
    method Flush (line 25) | public void Flush()
    method Write (line 30) | public void Write(LogKind logKind, string text)
    method WriteLine (line 44) | public void WriteLine()
    method WriteLine (line 56) | public void WriteLine(LogKind logKind, string text)

FILE: src/BenchmarkDotNet.TestAdapter/VSTestProperties.cs
  class VsTestProperties (line 9) | internal static class VsTestProperties

FILE: src/BenchmarkDotNet.TestAdapter/entrypoints/EntryPoint.cs
  class __AutoGeneratedEntryPointClass (line 8) | public class __AutoGeneratedEntryPointClass
    method Main (line 10) | public static void Main(string[] args) => BenchmarkSwitcher.FromAssemb...

FILE: src/BenchmarkDotNet.Weaver/src/ReferencePathAssemblyResolver.cs
  class ReferencePathAssemblyResolver (line 8) | internal sealed class ReferencePathAssemblyResolver : IAssemblyResolver
    method ReferencePathAssemblyResolver (line 12) | public ReferencePathAssemblyResolver(string[] referencePaths)
    method Resolve (line 24) | public ResolutionStatus Resolve(AssemblyDescriptor assembly, ModuleDef...

FILE: src/BenchmarkDotNet.Weaver/src/WeaveAssemblyTask.cs
  class WeaveAssemblyTask (line 19) | public sealed class WeaveAssemblyTask : Task
    method Execute (line 37) | public override bool Execute()
    method IsBenchmarkAttribute (line 105) | private static bool IsBenchmarkAttribute(CustomAttribute attribute, Ru...

FILE: src/BenchmarkDotNet/Analysers/AnalyserBase.cs
  class AnalyserBase (line 8) | public abstract class AnalyserBase : IAnalyser
    method Analyse (line 12) | public IEnumerable<Conclusion> Analyse(Summary summary)
    method AnalyseSummary (line 21) | [PublicAPI] protected virtual IEnumerable<Conclusion> AnalyseSummary(S...
    method AnalyseReport (line 22) | [PublicAPI] protected virtual IEnumerable<Conclusion> AnalyseReport(Be...
    method CreateHint (line 24) | protected Conclusion CreateHint(string message, BenchmarkReport? repor...
    method CreateWarning (line 26) | protected Conclusion CreateWarning(string message, BenchmarkReport? re...
    method CreateError (line 28) | protected Conclusion CreateError(string message, BenchmarkReport? repo...

FILE: src/BenchmarkDotNet/Analysers/BaselineCustomAnalyzer.cs
  class BaselineCustomAnalyzer (line 9) | public class BaselineCustomAnalyzer : AnalyserBase
    method AnalyseSummary (line 15) | protected override IEnumerable<Conclusion> AnalyseSummary(Summary summ...

FILE: src/BenchmarkDotNet/Analysers/CompositeAnalyser.cs
  class CompositeAnalyser (line 8) | public class CompositeAnalyser : IAnalyser
    method CompositeAnalyser (line 12) | public CompositeAnalyser(ImmutableHashSet<IAnalyser> analysers) => thi...
    method Analyse (line 16) | public IEnumerable<Conclusion> Analyse(Summary summary)

FILE: src/BenchmarkDotNet/Analysers/Conclusion.cs
  class Conclusion (line 7) | public sealed class Conclusion : IEquatable<Conclusion>
    method Conclusion (line 19) | private Conclusion(string analyserId,
    method CreateHint (line 32) | public static Conclusion CreateHint(string analyserId, string message,...
    method CreateWarning (line 35) | public static Conclusion CreateWarning(string analyserId, string messa...
    method CreateError (line 38) | public static Conclusion CreateError(string analyserId, string message...
    method Equals (line 41) | public bool Equals(Conclusion? other)
    method Equals (line 52) | public override bool Equals(object? obj)
    method GetHashCode (line 61) | public override int GetHashCode()

FILE: src/BenchmarkDotNet/Analysers/ConclusionHelper.cs
  class ConclusionHelper (line 8) | public static class ConclusionHelper
    method Print (line 10) | public static void Print(ILogger logger, IEnumerable<Conclusion> concl...
    method PrintFiltered (line 17) | private static void PrintFiltered(IEnumerable<Conclusion> conclusions,...
    method GetTitle (line 35) | private static string GetTitle(Conclusion conclusion)

FILE: src/BenchmarkDotNet/Analysers/ConclusionKind.cs
  type ConclusionKind (line 3) | public enum ConclusionKind

FILE: src/BenchmarkDotNet/Analysers/EnvironmentAnalyser.cs
  class EnvironmentAnalyser (line 14) | public class EnvironmentAnalyser : AnalyserBase
    method EnvironmentAnalyser (line 19) | private EnvironmentAnalyser()
    method AnalyseReport (line 23) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...
    method AnalyseSummary (line 29) | protected override IEnumerable<Conclusion> AnalyseSummary(Summary summ...
    method CreateWarningAboutAntivirus (line 50) | private static string CreateWarningAboutAntivirus(ICollection<Antiviru...

FILE: src/BenchmarkDotNet/Analysers/HideColumnsAnalyser.cs
  class HideColumnsAnalyser (line 8) | public class HideColumnsAnalyser : AnalyserBase
    method AnalyseSummary (line 14) | protected override IEnumerable<Conclusion> AnalyseSummary(Summary summ...

FILE: src/BenchmarkDotNet/Analysers/IAnalyser.cs
  type IAnalyser (line 7) | public interface IAnalyser
    method Analyse (line 10) | [PublicAPI] IEnumerable<Conclusion> Analyse(Summary summary);

FILE: src/BenchmarkDotNet/Analysers/MinIterationTimeAnalyser.cs
  class MinIterationTimeAnalyser (line 10) | public class MinIterationTimeAnalyser : AnalyserBase
    method MinIterationTimeAnalyser (line 17) | private MinIterationTimeAnalyser()
    method AnalyseReport (line 21) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...

FILE: src/BenchmarkDotNet/Analysers/MultimodalDistributionAnalyzer.cs
  class MultimodalDistributionAnalyzer (line 9) | public class MultimodalDistributionAnalyzer : AnalyserBase
    method MultimodalDistributionAnalyzer (line 13) | private MultimodalDistributionAnalyzer() { }
    method AnalyseReport (line 17) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...
    method Create (line 32) | private Conclusion Create(string kind, double mValue, BenchmarkReport?...

FILE: src/BenchmarkDotNet/Analysers/OutliersAnalyser.cs
  class OutliersAnalyser (line 14) | public class OutliersAnalyser : AnalyserBase
    method OutliersAnalyser (line 19) | private OutliersAnalyser() { }
    method AnalyseReport (line 21) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...
    method GetMessage (line 45) | [PublicAPI, Pure]
    method GetRangeMessage (line 70) | private static string? GetRangeMessage(double[] values)

FILE: src/BenchmarkDotNet/Analysers/RuntimeErrorAnalyser.cs
  class RuntimeErrorAnalyser (line 7) | public class RuntimeErrorAnalyser : AnalyserBase
    method RuntimeErrorAnalyser (line 12) | private RuntimeErrorAnalyser()
    method AnalyseReport (line 16) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...

FILE: src/BenchmarkDotNet/Analysers/ZeroMeasurementAnalyser.cs
  class ZeroMeasurementAnalyser (line 10) | public class ZeroMeasurementAnalyser : AnalyserBase
    method ZeroMeasurementAnalyser (line 18) | private ZeroMeasurementAnalyser() { }
    method AnalyseReport (line 20) | protected override IEnumerable<Conclusion> AnalyseReport(BenchmarkRepo...

FILE: src/BenchmarkDotNet/Analysers/ZeroMeasurementHelper.cs
  class ZeroMeasurementHelper (line 14) | internal static class ZeroMeasurementHelper
    method IsNegligible (line 16) | public static bool IsNegligible(Sample results, double threshold) => C...
    method IsNoticeable (line 17) | public static bool IsNoticeable(Sample results, double threshold) => !...
    method AreIndistinguishable (line 19) | public static bool AreIndistinguishable(double[] workload, double[] ov...
    method AreIndistinguishable (line 26) | public static bool AreIndistinguishable(Sample workload, Sample overhe...
    method AreDistinguishable (line 35) | public static bool AreDistinguishable(double[] workload, double[] over...
    method AreDistinguishable (line 38) | public static bool AreDistinguishable(Sample workload, Sample overhead...

FILE: src/BenchmarkDotNet/Attributes/ArtifactsPathAttribute.cs
  class ArtifactsPathAttribute (line 7) | [PublicAPI]
    method ArtifactsPathAttribute (line 14) | public ArtifactsPathAttribute(string value)

FILE: src/BenchmarkDotNet/Attributes/CategoryDiscovererAttribute.cs
  class CategoryDiscovererAttribute (line 7) | [AttributeUsage(AttributeTargets.Class)]
    method CategoryDiscovererAttribute (line 10) | public CategoryDiscovererAttribute(bool inherit = true)

FILE: src/BenchmarkDotNet/Attributes/Columns/AllStatisticsColumnAttribute.cs
  class AllStatisticsColumnAttribute (line 6) | [PublicAPI]
    method AllStatisticsColumnAttribute (line 9) | public AllStatisticsColumnAttribute() : base(StatisticColumn.AllStatis...

FILE: src/BenchmarkDotNet/Attributes/Columns/BaselineColumnAttribute.cs
  class BaselineColumnAttribute (line 5) | public class BaselineColumnAttribute : ColumnConfigBaseAttribute
    method BaselineColumnAttribute (line 7) | public BaselineColumnAttribute() : base(BaselineColumn.Default) { }

FILE: src/BenchmarkDotNet/Attributes/Columns/CategoriesColumnAttribute.cs
  class CategoriesColumnAttribute (line 5) | public class CategoriesColumnAttribute : ColumnConfigBaseAttribute
    method CategoriesColumnAttribute (line 7) | public CategoriesColumnAttribute() : base(CategoriesColumn.Default) { }

FILE: src/BenchmarkDotNet/Attributes/Columns/ColumnConfigBaseAttribute.cs
  class ColumnConfigBaseAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method ColumnConfigBaseAttribute (line 12) | [PublicAPI]
    method ColumnConfigBaseAttribute (line 18) | protected ColumnConfigBaseAttribute(params IColumn[] columns)

FILE: src/BenchmarkDotNet/Attributes/Columns/ConfidenceIntervalErrorColumnAttribute.cs
  class ConfidenceIntervalErrorColumnAttribute (line 7) | [PublicAPI]
    method ConfidenceIntervalErrorColumnAttribute (line 10) | public ConfidenceIntervalErrorColumnAttribute() : base(StatisticColumn...
    method ConfidenceIntervalErrorColumnAttribute (line 11) | public ConfidenceIntervalErrorColumnAttribute(ConfidenceLevel level) :...

FILE: src/BenchmarkDotNet/Attributes/Columns/IterationsColumnAttribute.cs
  class IterationsColumnAttribute (line 6) | [PublicAPI]
    method IterationsColumnAttribute (line 9) | public IterationsColumnAttribute() : base(StatisticColumn.Iterations) { }

FILE: src/BenchmarkDotNet/Attributes/Columns/KurtosisColumnAttribute.cs
  class KurtosisColumnAttribute (line 5) | public class KurtosisColumnAttribute : ColumnConfigBaseAttribute
    method KurtosisColumnAttribute (line 7) | public KurtosisColumnAttribute() : base(StatisticColumn.Kurtosis)

FILE: src/BenchmarkDotNet/Attributes/Columns/LogicalGroupColumnAttribute.cs
  class LogicalGroupColumnAttribute (line 5) | public class LogicalGroupColumnAttribute : ColumnConfigBaseAttribute
    method LogicalGroupColumnAttribute (line 7) | public LogicalGroupColumnAttribute() : base(LogicalGroupColumn.Default...

FILE: src/BenchmarkDotNet/Attributes/Columns/MValueColumnAttribute.cs
  class MValueColumnAttribute (line 10) | [PublicAPI]
    method MValueColumnAttribute (line 13) | public MValueColumnAttribute() : base(StatisticColumn.MValue)

FILE: src/BenchmarkDotNet/Attributes/Columns/MaxColumnAttribute.cs
  class MaxColumnAttribute (line 5) | public class MaxColumnAttribute : ColumnConfigBaseAttribute
    method MaxColumnAttribute (line 7) | public MaxColumnAttribute() : base(StatisticColumn.Max)

FILE: src/BenchmarkDotNet/Attributes/Columns/MeanColumnAttribute.cs
  class MeanColumnAttribute (line 5) | public class MeanColumnAttribute : ColumnConfigBaseAttribute
    method MeanColumnAttribute (line 7) | public MeanColumnAttribute() : base(StatisticColumn.Mean)

FILE: src/BenchmarkDotNet/Attributes/Columns/MedianColumnAttribute.cs
  class MedianColumnAttribute (line 5) | public class MedianColumnAttribute : ColumnConfigBaseAttribute
    method MedianColumnAttribute (line 7) | public MedianColumnAttribute() : base(StatisticColumn.Median)

FILE: src/BenchmarkDotNet/Attributes/Columns/MinColumnAttribute.cs
  class MinColumnAttribute (line 5) | public class MinColumnAttribute : ColumnConfigBaseAttribute
    method MinColumnAttribute (line 7) | public MinColumnAttribute() : base(StatisticColumn.Min)

FILE: src/BenchmarkDotNet/Attributes/Columns/NamespaceColumnAttribute.cs
  class NamespaceColumnAttribute (line 9) | [PublicAPI]
    method NamespaceColumnAttribute (line 12) | public NamespaceColumnAttribute() : base(TargetMethodColumn.Namespace)

FILE: src/BenchmarkDotNet/Attributes/Columns/OperationsPerSecondAttribute.cs
  class OperationsPerSecondAttribute (line 6) | public class OperationsPerSecondAttribute : ColumnConfigBaseAttribute
    method OperationsPerSecondAttribute (line 8) | public OperationsPerSecondAttribute() : base(StatisticColumn.Operation...

FILE: src/BenchmarkDotNet/Attributes/Columns/Q1ColumnAttribute.cs
  class Q1ColumnAttribute (line 5) | public class Q1ColumnAttribute : ColumnConfigBaseAttribute
    method Q1ColumnAttribute (line 7) | public Q1ColumnAttribute() : base(StatisticColumn.Q1)

FILE: src/BenchmarkDotNet/Attributes/Columns/Q3ColumnAttribute.cs
  class Q3ColumnAttribute (line 5) | public class Q3ColumnAttribute : ColumnConfigBaseAttribute
    method Q3ColumnAttribute (line 7) | public Q3ColumnAttribute() : base(StatisticColumn.Q3)

FILE: src/BenchmarkDotNet/Attributes/Columns/RankColumnAttribute.cs
  class RankColumnAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method RankColumnAttribute (line 10) | public RankColumnAttribute(NumeralSystem system = NumeralSystem.Arabic...

FILE: src/BenchmarkDotNet/Attributes/Columns/SkewnessColumnAttribute.cs
  class SkewnessColumnAttribute (line 5) | public class SkewnessColumnAttribute : ColumnConfigBaseAttribute
    method SkewnessColumnAttribute (line 7) | public SkewnessColumnAttribute() : base(StatisticColumn.Skewness)

FILE: src/BenchmarkDotNet/Attributes/Columns/StdDevColumnAttribute.cs
  class StdDevColumnAttribute (line 6) | [PublicAPI]
    method StdDevColumnAttribute (line 9) | public StdDevColumnAttribute() : base(StatisticColumn.StdDev)

FILE: src/BenchmarkDotNet/Attributes/Columns/StdErrorColumnAttribute.cs
  class StdErrorColumnAttribute (line 6) | [PublicAPI]

FILE: src/BenchmarkDotNet/Attributes/Columns/WelchTTestPValueColumnAttribute.cs
  class StatisticalTestColumnAttribute (line 8) | [PublicAPI]
    method StatisticalTestColumnAttribute (line 12) | public StatisticalTestColumnAttribute() : base(StatisticalTestColumn.C...
    method StatisticalTestColumnAttribute (line 14) | public StatisticalTestColumnAttribute(string threshold) : base(Statist...
    method StatisticalTestColumnAttribute (line 16) | public StatisticalTestColumnAttribute(string threshold, SignificanceLe...

FILE: src/BenchmarkDotNet/Attributes/ConfigAttribute.cs
  class ConfigAttribute (line 6) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method ConfigAttribute (line 11) | public ConfigAttribute(Type type) => Config = (IConfig)Activator.Creat...

FILE: src/BenchmarkDotNet/Attributes/DisassemblyDiagnoserAttribute.cs
  class DisassemblyDiagnoserAttribute (line 7) | [AttributeUsage(AttributeTargets.Class)]
    method DisassemblyDiagnoserAttribute (line 23) | public DisassemblyDiagnoserAttribute(
    method DisassemblyDiagnoserAttribute (line 51) | protected DisassemblyDiagnoserAttribute()

FILE: src/BenchmarkDotNet/Attributes/EventPipeProfilerAttribute.cs
  class EventPipeProfilerAttribute (line 7) | [AttributeUsage(AttributeTargets.Class)]
    method EventPipeProfilerAttribute (line 12) | public EventPipeProfilerAttribute(EventPipeProfile profile)

FILE: src/BenchmarkDotNet/Attributes/ExceptionDiagnoserAttribute.cs
  class ExceptionDiagnoserAttribute (line 7) | [AttributeUsage(AttributeTargets.Class)]
    method ExceptionDiagnoserAttribute (line 13) | public ExceptionDiagnoserAttribute(bool displayExceptionsIfZeroValue =...

FILE: src/BenchmarkDotNet/Attributes/ExceptionDiagnoserConfig.cs
  class ExceptionDiagnoserConfig (line 8) | public class ExceptionDiagnoserConfig
    method ExceptionDiagnoserConfig (line 12) | [PublicAPI]

FILE: src/BenchmarkDotNet/Attributes/Exporters/AsciiDocExporterAttribute.cs
  class AsciiDocExporterAttribute (line 5) | public class AsciiDocExporterAttribute : ExporterConfigBaseAttribute
    method AsciiDocExporterAttribute (line 7) | public AsciiDocExporterAttribute() : base(DefaultExporters.AsciiDoc)

FILE: src/BenchmarkDotNet/Attributes/Exporters/CsvExporterAttribute.cs
  class CsvExporterAttribute (line 5) | public class CsvExporterAttribute : ExporterConfigBaseAttribute
    method CsvExporterAttribute (line 7) | public CsvExporterAttribute(CsvSeparator separator = CsvSeparator.Curr...

FILE: src/BenchmarkDotNet/Attributes/Exporters/CsvMeasurementsExporterAttribute.cs
  class CsvMeasurementsExporterAttribute (line 5) | public class CsvMeasurementsExporterAttribute : ExporterConfigBaseAttribute
    method CsvMeasurementsExporterAttribute (line 7) | public CsvMeasurementsExporterAttribute(CsvSeparator separator = CsvSe...

FILE: src/BenchmarkDotNet/Attributes/Exporters/ExporterConfigBaseAttribute.cs
  class ExporterConfigBaseAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method ExporterConfigBaseAttribute (line 12) | [PublicAPI]
    method ExporterConfigBaseAttribute (line 18) | protected ExporterConfigBaseAttribute(params IExporter[] exporters)

FILE: src/BenchmarkDotNet/Attributes/Exporters/HtmlExporterAttribute.cs
  class HtmlExporterAttribute (line 5) | public class HtmlExporterAttribute : ExporterConfigBaseAttribute
    method HtmlExporterAttribute (line 7) | public HtmlExporterAttribute() : base(DefaultExporters.Html)

FILE: src/BenchmarkDotNet/Attributes/Exporters/JsonExporterAttribute.cs
  class JsonExporterAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method JsonExporterAttribute (line 10) | private JsonExporterAttribute(IExporter exporter) : base(exporter)
    method JsonExporterAttribute (line 14) | public JsonExporterAttribute(string fileNameSuffix = "", bool indentJs...
    class BriefAttribute (line 19) | public class BriefAttribute : JsonExporterAttribute
      method BriefAttribute (line 21) | public BriefAttribute() : base(JsonExporter.Brief)
    class Full (line 26) | public class Full : JsonExporterAttribute
      method Full (line 28) | public Full() : base(JsonExporter.Full)
    class BriefCompressed (line 33) | public class BriefCompressed : JsonExporterAttribute
      method BriefCompressed (line 35) | public BriefCompressed() : base(JsonExporter.BriefCompressed)
    class FullCompressed (line 40) | public class FullCompressed : JsonExporterAttribute
      method FullCompressed (line 42) | public FullCompressed() : base(JsonExporter.FullCompressed)

FILE: src/BenchmarkDotNet/Attributes/Exporters/MarkdownExporterAttribute.cs
  class MarkdownExporterAttribute (line 7) | [PublicAPI]
    method MarkdownExporterAttribute (line 10) | public MarkdownExporterAttribute() : base(MarkdownExporter.Default)
    class Default (line 14) | public class Default : ExporterConfigBaseAttribute
      method Default (line 16) | public Default() : base(MarkdownExporter.Default)
    class GitHub (line 21) | public class GitHub : ExporterConfigBaseAttribute
      method GitHub (line 23) | public GitHub() : base(MarkdownExporter.GitHub)
    class StackOverflow (line 28) | public class StackOverflow : ExporterConfigBaseAttribute
      method StackOverflow (line 30) | public StackOverflow() : base(MarkdownExporter.StackOverflow)
    class Atlassian (line 35) | public class Atlassian : ExporterConfigBaseAttribute
      method Atlassian (line 37) | public Atlassian() : base(MarkdownExporter.Atlassian)

FILE: src/BenchmarkDotNet/Attributes/Exporters/OpenMetricsExporterAttribute.cs
  class OpenMetricsExporterAttribute (line 7) | [PublicAPI]
    method OpenMetricsExporterAttribute (line 10) | public OpenMetricsExporterAttribute() : base(OpenMetricsExporter.Default)

FILE: src/BenchmarkDotNet/Attributes/Exporters/PlainExporterAttribute.cs
  class PlainExporterAttribute (line 5) | public class PlainExporterAttribute : ExporterConfigBaseAttribute
    method PlainExporterAttribute (line 7) | public PlainExporterAttribute() : base(DefaultExporters.Plain)

FILE: src/BenchmarkDotNet/Attributes/Exporters/RPlotExporterAttribute.cs
  class RPlotExporterAttribute (line 5) | public class RPlotExporterAttribute : ExporterConfigBaseAttribute
    method RPlotExporterAttribute (line 7) | public RPlotExporterAttribute() : base(DefaultExporters.RPlot)

FILE: src/BenchmarkDotNet/Attributes/Exporters/XmlExporterAttribute.cs
  class XmlExporterAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method XmlExporterAttribute (line 10) | private XmlExporterAttribute(IExporter exporter) : base(exporter)
    method XmlExporterAttribute (line 14) | public XmlExporterAttribute(string fileNameSuffix = "", bool indentXml...
    class Brief (line 19) | public class Brief : XmlExporterAttribute
      method Brief (line 21) | public Brief() : base(XmlExporter.Brief)
    class Full (line 26) | public class Full : XmlExporterAttribute
      method Full (line 28) | public Full() : base(XmlExporter.Full)
    class BriefCompressed (line 33) | public class BriefCompressed : XmlExporterAttribute
      method BriefCompressed (line 35) | public BriefCompressed() : base(XmlExporter.BriefCompressed)
    class FullCompressed (line 40) | public class FullCompressed : XmlExporterAttribute
      method FullCompressed (line 42) | public FullCompressed() : base(XmlExporter.FullCompressed)

FILE: src/BenchmarkDotNet/Attributes/Filters/AllCategoriesFilterAttribute.cs
  class AllCategoriesFilterAttribute (line 6) | [PublicAPI]
    method AllCategoriesFilterAttribute (line 10) | public AllCategoriesFilterAttribute() { }
    method AllCategoriesFilterAttribute (line 12) | public AllCategoriesFilterAttribute(params string[] targetCategories) ...

FILE: src/BenchmarkDotNet/Attributes/Filters/AnyCategoriesFilterAttribute.cs
  class AnyCategoriesFilterAttribute (line 6) | public class AnyCategoriesFilterAttribute : FilterConfigBaseAttribute
    method AnyCategoriesFilterAttribute (line 9) | [PublicAPI]
    method AnyCategoriesFilterAttribute (line 12) | public AnyCategoriesFilterAttribute(params string[] targetCategories) ...

FILE: src/BenchmarkDotNet/Attributes/Filters/AotFilterAttribute.cs
  class AotFilterAttribute (line 5) | public class AotFilterAttribute : FilterConfigBaseAttribute
    method AotFilterAttribute (line 7) | public AotFilterAttribute(string? reason = null)

FILE: src/BenchmarkDotNet/Attributes/Filters/FilterConfigBaseAttribute.cs
  class FilterConfigBaseAttribute (line 7) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | Attri...
    method FilterConfigBaseAttribute (line 11) | protected FilterConfigBaseAttribute()
    method FilterConfigBaseAttribute (line 16) | protected FilterConfigBaseAttribute(params IFilter[] filters)

FILE: src/BenchmarkDotNet/Attributes/Filters/OperatingSystemsArchitectureFilterAttribute.cs
  class OperatingSystemsArchitectureFilterAttribute (line 8) | [PublicAPI]
    method OperatingSystemsArchitectureFilterAttribute (line 12) | public OperatingSystemsArchitectureFilterAttribute() { }
    method OperatingSystemsArchitectureFilterAttribute (line 16) | public OperatingSystemsArchitectureFilterAttribute(bool allowed, param...

FILE: src/BenchmarkDotNet/Attributes/Filters/OperatingSystemsFilterAttribute.cs
  type OS (line 9) | public enum OS : byte
  class OperatingSystemsFilterAttribute (line 20) | [PublicAPI]
    method OperatingSystemsFilterAttribute (line 26) | public OperatingSystemsFilterAttribute() { }
    method OperatingSystemsFilterAttribute (line 30) | public OperatingSystemsFilterAttribute(bool allowed, params OS[] platf...
    method Map (line 41) | private static OSPlatform Map(OS platform)

FILE: src/BenchmarkDotNet/Attributes/GroupBenchmarksByAttribute.cs
  class GroupBenchmarksByAttribute (line 7) | [PublicAPI]
    method GroupBenchmarksByAttribute (line 14) | protected GroupBenchmarksByAttribute()
    method GroupBenchmarksByAttribute (line 19) | public GroupBenchmarksByAttribute(params BenchmarkLogicalGroupRule[] r...

FILE: src/BenchmarkDotNet/Attributes/HardwareCountersAttribute.cs
  class HardwareCountersAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method HardwareCountersAttribute (line 12) | [PublicAPI]
    method HardwareCountersAttribute (line 18) | public HardwareCountersAttribute(params HardwareCounter[] counters)

FILE: src/BenchmarkDotNet/Attributes/HideColumnsAttribute.cs
  class HideColumnsAttribute (line 7) | [PublicAPI]
    method HideColumnsAttribute (line 14) | protected HideColumnsAttribute() => Config = ManualConfig.CreateEmpty();
    method HideColumnsAttribute (line 16) | public HideColumnsAttribute(params string[] names) => Config = ManualC...

FILE: src/BenchmarkDotNet/Attributes/Jobs/DryJobAttribute.cs
  class DryJobAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method DryJobAttribute (line 10) | public DryJobAttribute() : base(Job.Dry)
    method DryJobAttribute (line 18) | public DryJobAttribute(RuntimeMoniker runtimeMoniker)
    method DryJobAttribute (line 29) | public DryJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, Platfor...

FILE: src/BenchmarkDotNet/Attributes/Jobs/InProcessAttribute.cs
  type InProcessToolchainType (line 11) | public enum InProcessToolchainType
  class InProcessAttribute (line 18) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method GetJob (line 24) | private static Job GetJob(InProcessToolchainType toolchainType, bool e...
    method GetJob (line 27) | internal static Job GetJob(Job baseJob, InProcessToolchainType toolcha...

FILE: src/BenchmarkDotNet/Attributes/Jobs/JobConfigbaseAttribute.cs
  class JobConfigBaseAttribute (line 10) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method JobConfigBaseAttribute (line 14) | [PublicAPI]
    method JobConfigBaseAttribute (line 17) | protected JobConfigBaseAttribute(Job job) => Config = ManualConfig.Cre...
    method GetJob (line 21) | protected static Job GetJob(Job sourceJob, RuntimeMoniker runtimeMonik...

FILE: src/BenchmarkDotNet/Attributes/Jobs/LegacyJitX64JobAttribute.cs
  class LegacyJitX64JobAttribute (line 6) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method LegacyJitX64JobAttribute (line 9) | public LegacyJitX64JobAttribute() : base(Job.LegacyJitX64)

FILE: src/BenchmarkDotNet/Attributes/Jobs/LegacyJitX86JobAttribute.cs
  class LegacyJitX86JobAttribute (line 6) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method LegacyJitX86JobAttribute (line 9) | public LegacyJitX86JobAttribute() : base(Job.LegacyJitX86)

FILE: src/BenchmarkDotNet/Attributes/Jobs/LongRunJobAttribute.cs
  class LongRunJobAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method LongRunJobAttribute (line 10) | public LongRunJobAttribute() : base(Job.LongRun)
    method LongRunJobAttribute (line 18) | public LongRunJobAttribute(RuntimeMoniker runtimeMoniker)
    method LongRunJobAttribute (line 29) | public LongRunJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, Pla...

FILE: src/BenchmarkDotNet/Attributes/Jobs/MediumRunJobAttribute.cs
  class MediumRunJobAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method MediumRunJobAttribute (line 10) | public MediumRunJobAttribute() : base(Job.MediumRun)
    method MediumRunJobAttribute (line 18) | public MediumRunJobAttribute(RuntimeMoniker runtimeMoniker)
    method MediumRunJobAttribute (line 29) | public MediumRunJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, P...

FILE: src/BenchmarkDotNet/Attributes/Jobs/MonoJobAttribute.cs
  class MonoJobAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method MonoJobAttribute (line 11) | public MonoJobAttribute(bool baseline = false) : base(Job.Default.With...
    method MonoJobAttribute (line 15) | public MonoJobAttribute(RuntimeMoniker runtimeMoniker, bool baseline =...
    method MonoJobAttribute (line 19) | public MonoJobAttribute(string name, string path, bool baseline = false)

FILE: src/BenchmarkDotNet/Attributes/Jobs/RyuJitX64JobAttribute.cs
  class RyuJitX64JobAttribute (line 6) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method RyuJitX64JobAttribute (line 9) | public RyuJitX64JobAttribute() : base(Job.RyuJitX64)

FILE: src/BenchmarkDotNet/Attributes/Jobs/RyuJitX86JobAttribute.cs
  class RyuJitX86JobAttribute (line 7) | [PublicAPI]
    method RyuJitX86JobAttribute (line 11) | public RyuJitX86JobAttribute() : base(Job.RyuJitX86)

FILE: src/BenchmarkDotNet/Attributes/Jobs/ShortRunJobAttribute.cs
  class ShortRunJobAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method ShortRunJobAttribute (line 10) | public ShortRunJobAttribute() : base(Job.ShortRun)
    method ShortRunJobAttribute (line 18) | public ShortRunJobAttribute(RuntimeMoniker runtimeMoniker)
    method ShortRunJobAttribute (line 29) | public ShortRunJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit, Pl...

FILE: src/BenchmarkDotNet/Attributes/Jobs/SimpleJobAttribute.cs
  class SimpleJobAttribute (line 10) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method SimpleJobAttribute (line 15) | [PublicAPI]
    method SimpleJobAttribute (line 25) | [PublicAPI]
    method SimpleJobAttribute (line 36) | [PublicAPI]
    method SimpleJobAttribute (line 47) | [PublicAPI]
    method CreateJob (line 59) | private static Job CreateJob(string id, int launchCount, int warmupCou...

FILE: src/BenchmarkDotNet/Attributes/Jobs/VeryLongRunJobAttribute.cs
  class VeryLongRunJobAttribute (line 8) | [PublicAPI]
    method VeryLongRunJobAttribute (line 12) | public VeryLongRunJobAttribute() : base(Job.VeryLongRun)
    method VeryLongRunJobAttribute (line 20) | public VeryLongRunJobAttribute(RuntimeMoniker runtimeMoniker)
    method VeryLongRunJobAttribute (line 31) | public VeryLongRunJobAttribute(RuntimeMoniker runtimeMoniker, Jit jit,...

FILE: src/BenchmarkDotNet/Attributes/KeepBenchmarkFilesAttribute.cs
  class KeepBenchmarkFilesAttribute (line 10) | [PublicAPI]
    method KeepBenchmarkFilesAttribute (line 16) | public KeepBenchmarkFilesAttribute(bool value = true)

FILE: src/BenchmarkDotNet/Attributes/MemoryDiagnoserAttribute.cs
  class MemoryDiagnoserAttribute (line 7) | [AttributeUsage(AttributeTargets.Class)]
    method MemoryDiagnoserAttribute (line 13) | public MemoryDiagnoserAttribute(bool displayGenColumns = true)

FILE: src/BenchmarkDotNet/Attributes/Mutators/EvaluateOverheadAttribute.cs
  class EvaluateOverheadAttribute (line 11) | [PublicAPI]
    method EvaluateOverheadAttribute (line 15) | public EvaluateOverheadAttribute(bool value = true) : base(Job.Default...

FILE: src/BenchmarkDotNet/Attributes/Mutators/GcConcurrentAttribute.cs
  class GcConcurrentAttribute (line 11) | [PublicAPI]
    method GcConcurrentAttribute (line 14) | public GcConcurrentAttribute(bool value = true) : base(Job.Default.Wit...

FILE: src/BenchmarkDotNet/Attributes/Mutators/GcForceAttribute.cs
  class GcForceAttribute (line 11) | [PublicAPI]
    method GcForceAttribute (line 14) | public GcForceAttribute(bool value = true) : base(Job.Default.WithGcFo...

FILE: src/BenchmarkDotNet/Attributes/Mutators/GcServerAttribute.cs
  class GcServerAttribute (line 11) | [PublicAPI]
    method GcServerAttribute (line 14) | public GcServerAttribute(bool value = false) : base(Job.Default.WithGc...

FILE: src/BenchmarkDotNet/Attributes/Mutators/InnerIterationCountAttribute.cs
  class InnerIterationCountAttribute (line 10) | [PublicAPI]
    method InnerIterationCountAttribute (line 13) | public InnerIterationCountAttribute(int invocationCount)

FILE: src/BenchmarkDotNet/Attributes/Mutators/InvocationCountAttribute.cs
  class InvocationCountAttribute (line 11) | [PublicAPI]
    method InvocationCountAttribute (line 14) | public InvocationCountAttribute(int invocationCount, int unrollFactor ...

FILE: src/BenchmarkDotNet/Attributes/Mutators/IterationCountAttribute.cs
  class IterationCountAttribute (line 11) | [PublicAPI]
    method IterationCountAttribute (line 14) | public IterationCountAttribute(int targetIterationCount) : base(Job.De...

FILE: src/BenchmarkDotNet/Attributes/Mutators/IterationTimeAttribute.cs
  class IterationTimeAttribute (line 11) | [PublicAPI]
    method IterationTimeAttribute (line 14) | public IterationTimeAttribute(double milliseconds) : base(Job.Default....

FILE: src/BenchmarkDotNet/Attributes/Mutators/JobMutatorConfigBaseAttribute.cs
  class JobMutatorConfigBaseAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowM...
    method JobMutatorConfigBaseAttribute (line 12) | [PublicAPI]
    method JobMutatorConfigBaseAttribute (line 15) | protected JobMutatorConfigBaseAttribute(Job job) => Config = ManualCon...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MaxAbsoluteErrorAttribute.cs
  class MaxAbsoluteErrorAttribute (line 12) | [PublicAPI]
    method MaxAbsoluteErrorAttribute (line 15) | public MaxAbsoluteErrorAttribute(double nanoseconds) : base(Job.Defaul...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MaxIterationCountAttribute.cs
  class MaxIterationCountAttribute (line 11) | public class MaxIterationCountAttribute : JobMutatorConfigBaseAttribute
    method MaxIterationCountAttribute (line 13) | public MaxIterationCountAttribute(int maxTargetIterationCount) : base(...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MaxRelativeErrorAttribute.cs
  class MaxRelativeErrorAttribute (line 11) | [PublicAPI]
    method MaxRelativeErrorAttribute (line 14) | public MaxRelativeErrorAttribute(double maxRelativeError) : base(Job.D...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MaxWarmupCountAttribute.cs
  class MaxWarmupCountAttribute (line 10) | public class MaxWarmupCountAttribute : JobMutatorConfigBaseAttribute
    method MaxWarmupCountAttribute (line 14) | public MaxWarmupCountAttribute(int maxWarmupCount, bool forceAutoWarmu...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MemoryRandomizationAttribute.cs
  class MemoryRandomizationAttribute (line 10) | public class MemoryRandomizationAttribute : JobMutatorConfigBaseAttribute
    method MemoryRandomizationAttribute (line 12) | public MemoryRandomizationAttribute(bool enable = true, OutlierMode ou...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MinInvokeCountAttribute.cs
  class MinInvokeCountAttribute (line 10) | [PublicAPI]
    method MinInvokeCountAttribute (line 13) | public MinInvokeCountAttribute(int minInvokeCount) : base(Job.Default....

FILE: src/BenchmarkDotNet/Attributes/Mutators/MinIterationCountAttribute.cs
  class MinIterationCountAttribute (line 12) | [PublicAPI]
    method MinIterationCountAttribute (line 15) | public MinIterationCountAttribute(int minTargetIterationCount) : base(...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MinIterationTimeAttribute.cs
  class MinIterationTimeAttribute (line 11) | [PublicAPI]
    method MinIterationTimeAttribute (line 14) | public MinIterationTimeAttribute(double milliseconds) : base(Job.Defau...

FILE: src/BenchmarkDotNet/Attributes/Mutators/MinWarmupCountAttribute.cs
  class MinWarmupCountAttribute (line 10) | public class MinWarmupCountAttribute : JobMutatorConfigBaseAttribute
    method MinWarmupCountAttribute (line 14) | public MinWarmupCountAttribute(int minWarmupCount, bool forceAutoWarmu...

FILE: src/BenchmarkDotNet/Attributes/Mutators/OutliersAttribute.cs
  class OutliersAttribute (line 9) | public class OutliersAttribute : JobMutatorConfigBaseAttribute
    method OutliersAttribute (line 11) | public OutliersAttribute(OutlierMode outlierMode) : base(Job.Default.W...

FILE: src/BenchmarkDotNet/Attributes/Mutators/ProcessCountAttribute.cs
  class ProcessCountAttribute (line 9) | [PublicAPI]
    method ProcessCountAttribute (line 12) | public ProcessCountAttribute(int processLaunchCount) : base(Job.Defaul...

FILE: src/BenchmarkDotNet/Attributes/Mutators/RunOncePerIterationAttribute.cs
  class RunOncePerIterationAttribute (line 8) | public class RunOncePerIterationAttribute : JobMutatorConfigBaseAttribute
    method RunOncePerIterationAttribute (line 10) | public RunOncePerIterationAttribute() : base(Job.Default.RunOncePerIte...

FILE: src/BenchmarkDotNet/Attributes/Mutators/WarmupCountAttribute.cs
  class WarmupCountAttribute (line 9) | [PublicAPI]
    method WarmupCountAttribute (line 12) | public WarmupCountAttribute(int warmupCount) : base(Job.Default.WithWa...

FILE: src/BenchmarkDotNet/Attributes/OrdererAttribute.cs
  class OrdererAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method OrdererAttribute (line 10) | public OrdererAttribute(

FILE: src/BenchmarkDotNet/Attributes/PerfCollectProfilerAttribute.cs
  class PerfCollectProfilerAttribute (line 7) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method PerfCollectProfilerAttribute (line 12) | public PerfCollectProfilerAttribute(bool performExtraBenchmarksRun = f...

FILE: src/BenchmarkDotNet/Attributes/StopOnFirstErrorAttribute.cs
  class StopOnFirstErrorAttribute (line 10) | [PublicAPI]
    method StopOnFirstErrorAttribute (line 16) | public StopOnFirstErrorAttribute(bool value = true)

FILE: src/BenchmarkDotNet/Attributes/ThreadingDiagnoserAttribute.cs
  class ThreadingDiagnoserAttribute (line 8) | [AttributeUsage(AttributeTargets.Class)]
    method ThreadingDiagnoserAttribute (line 18) | [PublicAPI]

FILE: src/BenchmarkDotNet/Attributes/UnicodeConsoleLoggerAttribute.cs
  class UnicodeConsoleLoggerAttribute (line 10) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method UnicodeConsoleLoggerAttribute (line 13) | public UnicodeConsoleLoggerAttribute()

FILE: src/BenchmarkDotNet/Attributes/Validators/ExecutionValidatorAttribute.cs
  class ExecutionValidatorAttribute (line 6) | [PublicAPI]
    method ExecutionValidatorAttribute (line 9) | public ExecutionValidatorAttribute()
    method ExecutionValidatorAttribute (line 12) | public ExecutionValidatorAttribute(bool failOnError)

FILE: src/BenchmarkDotNet/Attributes/Validators/ReturnValueValidatorAttribute.cs
  class ReturnValueValidatorAttribute (line 6) | [PublicAPI]
    method ReturnValueValidatorAttribute (line 9) | public ReturnValueValidatorAttribute()
    method ReturnValueValidatorAttribute (line 12) | public ReturnValueValidatorAttribute(bool failOnError)

FILE: src/BenchmarkDotNet/Attributes/Validators/ValidatorConfigBaseAttribute.cs
  class ValidatorConfigBaseAttribute (line 8) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly)]
    method ValidatorConfigBaseAttribute (line 12) | [PublicAPI]
    method ValidatorConfigBaseAttribute (line 18) | protected ValidatorConfigBaseAttribute(params IValidator[] validators)

FILE: src/BenchmarkDotNet/Attributes/WakeLockAttribute.cs
  class WakeLockAttribute (line 10) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class)]
    method WakeLockAttribute (line 13) | public WakeLockAttribute(WakeLockType wakeLockType) =>

FILE: src/BenchmarkDotNet/Characteristics/Characteristic.cs
  class Characteristic (line 7) | public abstract class Characteristic
    method Create (line 11) | public static Characteristic<T> Create<TOwner, [DynamicallyAccessedMem...
    method Create (line 19) | public static Characteristic<T> Create<TOwner, [DynamicallyAccessedMem...
    method Create (line 27) | public static Characteristic<T> Create<TOwner, [DynamicallyAccessedMem...
    method CreateHidden (line 35) | public static Characteristic<T> CreateHidden<TOwner, [DynamicallyAcces...
    method CreateIgnoreOnApply (line 43) | public static Characteristic<T> CreateIgnoreOnApply<TOwner, [Dynamical...
    method Characteristic (line 51) | protected Characteristic(
    method ResolveValueCore (line 92) | internal virtual object? ResolveValueCore(CharacteristicObject obj, ob...
    method ToString (line 95) | public override string ToString() => Id;

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicHelper.cs
  class CharacteristicHelper (line 11) | public static class CharacteristicHelper
    method IsCharacteristicObjectSubclass (line 14) | internal static bool IsCharacteristicObjectSubclass(Type type) =>
    method IsCharacteristicSubclass (line 17) | private static bool IsCharacteristicSubclass(Type type) =>
    method AssertHasValue (line 20) | private static Characteristic AssertHasValue(MemberInfo member, Charac...
    method IsPresentableCharacteristic (line 30) | public static bool IsPresentableCharacteristic(this Characteristic c, ...
    method GetThisTypeCharacteristics (line 40) | [PublicAPI] public static IReadOnlyList<Characteristic> GetThisTypeCha...
    method GetThisTypeCharacteristics (line 43) | public static IReadOnlyList<Characteristic> GetThisTypeCharacteristics(
    method GetThisTypeCharacteristicsCore (line 51) | private static IReadOnlyList<Characteristic> GetThisTypeCharacteristic...
    method GetAllCharacteristics (line 76) | public static IReadOnlyList<Characteristic> GetAllCharacteristics(this...
    method GetAllCharacteristics (line 79) | public static IReadOnlyList<Characteristic> GetAllCharacteristics(
    method GetAllCharacteristicsCore (line 87) | private static IReadOnlyList<Characteristic> GetAllCharacteristicsCore(
    method FillAllCharacteristicsCore (line 97) | private static void FillAllCharacteristicsCore(
    method GetAllPresentableCharacteristics (line 122) | public static IReadOnlyList<Characteristic> GetAllPresentableCharacter...

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicObject.cs
  class CharacteristicObject (line 12) | [DynamicallyAccessedMembers(CharacteristicMemberTypes)]
    method ResolveId (line 21) | protected static string ResolveId(CharacteristicObject obj, string? ac...
    method CharacteristicObject (line 42) | protected CharacteristicObject()
    method CharacteristicObject (line 48) | protected CharacteristicObject(string id) : this()
    method AssertNotFrozen (line 59) | private void AssertNotFrozen()
    method AssertIsRoot (line 67) | private void AssertIsRoot()
    method AssertIsNonFrozenRoot (line 77) | private void AssertIsNonFrozenRoot()
    method AssertIsAssignable (line 83) | private static void AssertIsAssignable(Characteristic characteristic, ...
    method GetCharacteristicsWithValues (line 114) | public IEnumerable<Characteristic> GetCharacteristicsWithValues() =>
    method GetCharacteristicsToApply (line 119) | private IEnumerable<Characteristic> GetCharacteristicsToApply() =>
    method GetCharacteristicsToApply (line 124) | private IEnumerable<Characteristic> GetCharacteristicsToApply(Characte...
    method HasValue (line 136) | public bool HasValue(Characteristic characteristic)
    method GetValue (line 144) | internal T? GetValue<[DynamicallyAccessedMembers(CharacteristicMemberT...
    method GetValue (line 149) | internal object? GetValue(Characteristic characteristic)
    method ResolveCore (line 157) | private object? ResolveCore(Characteristic characteristic, object result)
    method ResolveValue (line 164) | public T? ResolveValue<[DynamicallyAccessedMembers(CharacteristicMembe...
    method ResolveValue (line 169) | public T? ResolveValue<[DynamicallyAccessedMembers(CharacteristicMembe...
    method ResolveValue (line 174) | public object? ResolveValue(Characteristic characteristic, IResolver r...
    method ResolveValue (line 179) | public object? ResolveValue(Characteristic characteristic, IResolver r...
    method ResolveValue (line 184) | public T? ResolveValue<[DynamicallyAccessedMembers(CharacteristicObjec...
    method ResolveValue (line 189) | [PublicAPI]
    method ResolveValueAsNullable (line 195) | public T? ResolveValueAsNullable<[DynamicallyAccessedMembers(Character...
    method SetValue (line 202) | internal void SetValue<[DynamicallyAccessedMembers(CharacteristicMembe...
    method SetValue (line 207) | internal void SetValue(Characteristic characteristic, object? value)
    method SetValueCore (line 230) | private void SetValueCore(Characteristic characteristic, object? value)
    method SetOwnerCore (line 259) | private void SetOwnerCore(CharacteristicObject newOwner)
    method DetachFromOwner (line 269) | private void DetachFromOwner(Characteristic thisCharacteristic)
    method AttachToOwner (line 295) | private void AttachToOwner(CharacteristicObject newOwner, Characterist...
    method SetValueOnAttach (line 313) | private void SetValueOnAttach(Characteristic characteristic, object va...
    method Apply (line 331) | [PublicAPI]
    method ApplyCore (line 334) | protected CharacteristicObject ApplyCore(CharacteristicObject other) =>
    method ApplyCore (line 339) | private CharacteristicObject ApplyCore(
    method Freeze (line 378) | [PublicAPI]
    method FreezeCore (line 381) | protected CharacteristicObject FreezeCore()
    method UnfreezeCopy (line 391) | [PublicAPI]
    method UnfreezeCopyCore (line 394) | protected CharacteristicObject UnfreezeCopyCore()
    method ToString (line 413) | public override string ToString() => Id;

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicObject`1.cs
  class CharacteristicObject (line 6) | public abstract class CharacteristicObject<T> : CharacteristicObject
    method CharacteristicObject (line 9) | protected CharacteristicObject() { }
    method CharacteristicObject (line 11) | protected CharacteristicObject(string id) : base(id) { }
    method Apply (line 13) | public new T Apply(CharacteristicObject other) => (T)ApplyCore(other);
    method Apply (line 15) | [PublicAPI]
    method ApplyAndFreeze (line 26) | [PublicAPI]
    method ApplyAndFreeze (line 29) | [PublicAPI]
    method Freeze (line 32) | public new T Freeze() => (T)FreezeCore();
    method UnfreezeCopy (line 34) | public new T UnfreezeCopy() => (T)UnfreezeCopyCore();
    method CreateCharacteristic (line 36) | protected static Characteristic<TC> CreateCharacteristic<[DynamicallyA...
    method CreateHiddenCharacteristic (line 38) | protected static Characteristic<TC> CreateHiddenCharacteristic<[Dynami...
    method CreateIgnoreOnApplyCharacteristic (line 40) | protected static Characteristic<TC> CreateIgnoreOnApplyCharacteristic<...

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicPresenter.cs
  class CharacteristicPresenter (line 10) | public abstract class CharacteristicPresenter
    method ToPresentation (line 17) | public abstract string ToPresentation(CharacteristicObject obj, Charac...
    method ToPresentation (line 19) | public abstract string ToPresentation(object? characteristicValue, Cha...
    class DefaultCharacteristicPresenter (line 21) | private class DefaultCharacteristicPresenter : CharacteristicPresenter
      method ToPresentation (line 23) | public override string ToPresentation(CharacteristicObject obj, Char...
      method ToPresentation (line 33) | public override string ToPresentation(object? value, Characteristic ...
      method ToPresentation (line 50) | private static string ToPresentation(IEnumerable collection)
      method ToPresentation (line 70) | private static string ToPresentation(object? value)
    class SourceCodeCharacteristicPresenter (line 76) | private class SourceCodeCharacteristicPresenter : CharacteristicPresenter
      method ToPresentation (line 78) | public override string ToPresentation(CharacteristicObject obj, Char...
      method ToPresentation (line 81) | public override string ToPresentation(object? characteristicValue, C...
    class FolderCharacteristicPresenter (line 91) | private class FolderCharacteristicPresenter : CharacteristicPresenter
      method ToPresentation (line 93) | public override string ToPresentation(CharacteristicObject obj, Char...
      method ToPresentation (line 98) | public override string ToPresentation(object? characteristicValue, C...

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicSet.cs
  class CharacteristicSet (line 5) | public sealed class CharacteristicSet : CharacteristicObject<Characteris...
    method CharacteristicSet (line 7) | [PublicAPI] public CharacteristicSet() => Apply();
    method CharacteristicSet (line 8) | [PublicAPI] public CharacteristicSet(CharacteristicObject other) => Ap...
    method CharacteristicSet (line 9) | [PublicAPI] public CharacteristicSet(params CharacteristicObject[] oth...

FILE: src/BenchmarkDotNet/Characteristics/CharacteristicSetPresenter.cs
  class CharacteristicSetPresenter (line 12) | public abstract class CharacteristicSetPresenter
    method ToPresentation (line 19) | public abstract string ToPresentation(CharacteristicObject obj);
    method GetPresentableCharacteristics (line 21) | protected virtual IEnumerable<Characteristic> GetPresentableCharacteri...
    class DefaultPresenter (line 26) | private class DefaultPresenter : CharacteristicSetPresenter
      method ToPresentation (line 31) | public override string ToPresentation(CharacteristicObject obj)
    class FolderPresenter (line 39) | private class FolderPresenter : CharacteristicSetPresenter
      method ToPresentation (line 45) | public override string ToPresentation(CharacteristicObject obj)
    class DisplayPresenter (line 53) | private class DisplayPresenter : CharacteristicSetPresenter
      method ToPresentation (line 58) | public override string ToPresentation(CharacteristicObject obj)
    class SourceCodePresenter (line 68) | private class SourceCodePresenter : CharacteristicSetPresenter
      method ToPresentation (line 81) | public override string ToPresentation(CharacteristicObject obj)
      method GetPresentableCharacteristics (line 86) | protected override IEnumerable<Characteristic> GetPresentableCharact...

FILE: src/BenchmarkDotNet/Characteristics/Characteristic`1.cs
  class Characteristic (line 6) | public class Characteristic<[DynamicallyAccessedMembers(CharacteristicOb...
    method Characteristic (line 8) | internal Characteristic(
    method ResolveValueCore (line 31) | internal override object? ResolveValueCore(CharacteristicObject obj, o...

FILE: src/BenchmarkDotNet/Characteristics/CompositeResolver.cs
  class CompositeResolver (line 7) | public class CompositeResolver : IResolver
    method CompositeResolver (line 11) | public CompositeResolver(params IResolver[] resolvers)
    method CanResolve (line 16) | public bool CanResolve(Characteristic characteristic) => resolvers.Any...
    method Resolve (line 18) | public object? Resolve(CharacteristicObject obj, Characteristic charac...
    method Resolve (line 29) | public T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Cha...
    method Resolve (line 40) | public object? Resolve(CharacteristicObject obj, Characteristic charac...
    method Resolve (line 51) | public T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Cha...

FILE: src/BenchmarkDotNet/Characteristics/IResolver.cs
  type IResolver (line 8) | public interface IResolver
    method CanResolve (line 10) | bool CanResolve(Characteristic characteristic);
    method Resolve (line 12) | object? Resolve(CharacteristicObject obj, Characteristic characteristic);
    method Resolve (line 14) | T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Characteri...
    method Resolve (line 16) | object? Resolve(CharacteristicObject obj, Characteristic characteristi...
    method Resolve (line 18) | T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Characteri...

FILE: src/BenchmarkDotNet/Characteristics/Resolver.cs
  class Resolver (line 7) | public class Resolver : IResolver
    method Register (line 11) | protected void Register<[DynamicallyAccessedMembers(CharacteristicObje...
    method Register (line 14) | protected void Register<[DynamicallyAccessedMembers(CharacteristicObje...
    method CanResolve (line 17) | public bool CanResolve(Characteristic characteristic) => resolvers.Con...
    method Resolve (line 19) | public object? Resolve(CharacteristicObject obj, Characteristic charac...
    method Resolve (line 29) | public T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Cha...
    method Resolve (line 39) | public object? Resolve(CharacteristicObject obj, Characteristic charac...
    method Resolve (line 50) | public T? Resolve<[DynamicallyAccessedMembers(CharacteristicObject.Cha...

FILE: src/BenchmarkDotNet/Code/ArrayParam.cs
  class ArrayParam (line 10) | internal static class ArrayParam
    method GetDisplayString (line 12) | private static (string BaseElementTypeRepr, string InnerDimensions) Ge...
    method GetDisplayString (line 26) | public static string GetDisplayString(Array array)
    method ArrayParam (line 43) | private ArrayParam(T[] array, Func<T, string>? toSourceCode = null)
    method ToSourceCode (line 53) | public string ToSourceCode()
    method ForPrimitives (line 59) | public static ArrayParam<T> ForPrimitives(T[] array) => new ArrayParam...
    method ForComplexTypes (line 68) | [PublicAPI] public static ArrayParam<T> ForComplexTypes(T[] array, Fun...
    method FromObject (line 70) | internal static IParam? FromObject(object array)
  class ArrayParam (line 38) | public class ArrayParam<T> : IParam
    method GetDisplayString (line 12) | private static (string BaseElementTypeRepr, string InnerDimensions) Ge...
    method GetDisplayString (line 26) | public static string GetDisplayString(Array array)
    method ArrayParam (line 43) | private ArrayParam(T[] array, Func<T, string>? toSourceCode = null)
    method ToSourceCode (line 53) | public string ToSourceCode()
    method ForPrimitives (line 59) | public static ArrayParam<T> ForPrimitives(T[] array) => new ArrayParam...
    method ForComplexTypes (line 68) | [PublicAPI] public static ArrayParam<T> ForComplexTypes(T[] array, Fun...
    method FromObject (line 70) | internal static IParam? FromObject(object array)

FILE: src/BenchmarkDotNet/Code/CodeGenBenchmarkRunCallType.cs
  type CodeGenBenchmarkRunCallType (line 6) | public enum CodeGenBenchmarkRunCallType

FILE: src/BenchmarkDotNet/Code/CodeGenerator.cs
  class CodeGenerator (line 22) | internal static class CodeGenerator
    method Generate (line 24) | internal static string Generate(BuildPartition buildPartition, CodeGen...
    method AddNonEmptyUnique (line 76) | private static void AddNonEmptyUnique(HashSet<string> items, string va...
    method GetShadowCopySettings (line 82) | private static (bool, string) GetShadowCopySettings()
    method Unroll (line 100) | private static string Unroll(string text, int factor)
    method GetJobsSetDefinition (line 119) | private static string GetJobsSetDefinition(BenchmarkCase benchmarkCase)
    method GetDeclarationsProvider (line 126) | private static DeclarationsProvider GetDeclarationsProvider(Descriptor...
    method GetParamsContent (line 151) | internal static string GetParamsContent(BenchmarkCase benchmarkCase)
    method GetArgumentsDefinition (line 158) | private static string GetArgumentsDefinition(BenchmarkCase benchmarkCase)
    method GetDeclareArgumentFields (line 164) | private static string GetDeclareArgumentFields(BenchmarkCase benchmark...
    method GetInitializeArgumentFields (line 170) | private static string GetInitializeArgumentFields(BenchmarkCase benchm...
    method GetLoadArguments (line 176) | private static string GetLoadArguments(BenchmarkCase benchmarkCase)
    method GetPassArguments (line 182) | private static string GetPassArguments(BenchmarkCase benchmarkCase)
    method GetExtraAttributes (line 188) | private static string GetExtraAttributes(Descriptor descriptor)
    method GetEngineFactoryTypeName (line 191) | private static string GetEngineFactoryTypeName(BenchmarkCase benchmark...
    method GetInProcessDiagnoserRouters (line 204) | private static string GetInProcessDiagnoserRouters(BenchmarkBuildInfo ...
    method GetParameterModifier (line 229) | private static string GetParameterModifier(ParameterInfo parameterInfo)
    method GetBenchmarkRunCall (line 245) | private static string GetBenchmarkRunCall(BuildPartition buildPartitio...
    method GetFieldType (line 271) | private static Type GetFieldType(Type argumentType, ParameterInstance ...
    class SmartStringBuilder (line 280) | private class SmartStringBuilder
      method SmartStringBuilder (line 285) | public SmartStringBuilder(string text)
      method Replace (line 291) | public SmartStringBuilder Replace(string oldValue, string? newValue)
      method ToString (line 300) | public override string ToString() => builder.ToString();

FILE: src/BenchmarkDotNet/Code/DeclarationsProvider.cs
  class DeclarationsProvider (line 8) | internal abstract class DeclarationsProvider
    method DeclarationsProvider (line 15) | internal DeclarationsProvider(Descriptor descriptor) => Descriptor = d...
    method GetWorkloadMethodCall (line 29) | public abstract string GetWorkloadMethodCall(string passArguments);
    method GetMethodPrefix (line 31) | protected static string GetMethodPrefix(MethodInfo method)
    method GetMethodName (line 34) | private string GetMethodName(MethodInfo? method)
  class SyncDeclarationsProvider (line 54) | internal class SyncDeclarationsProvider(Descriptor descriptor) : Declara...
    method GetWorkloadMethodCall (line 56) | public override string GetWorkloadMethodCall(string passArguments)
  class AsyncDeclarationsProvider (line 60) | internal class AsyncDeclarationsProvider(Descriptor descriptor) : Declar...
    method GetWorkloadMethodCall (line 62) | public override string GetWorkloadMethodCall(string passArguments)

FILE: src/BenchmarkDotNet/Code/EnumParam.cs
  class EnumParam (line 7) | public class EnumParam : IParam
    method EnumParam (line 14) | private EnumParam(object value, Type type)
    method ToSourceCode (line 24) | public string ToSourceCode() =>
    method FromObject (line 27) | internal static IParam FromObject(object value, Type? type = null)
    method ToInvariantCultureString (line 36) | private string ToInvariantCultureString()

FILE: src/BenchmarkDotNet/Code/IParam.cs
  type IParam (line 3) | public interface IParam
    method ToSourceCode (line 21) | string ToSourceCode();

FILE: src/BenchmarkDotNet/Columns/BaselineAllocationRatioColumn.cs
  class BaselineAllocationRatioColumn (line 12) | public class BaselineAllocationRatioColumn : BaselineCustomColumn
    method BaselineAllocationRatioColumn (line 20) | private BaselineAllocationRatioColumn() { }
    method GetValue (line 22) | public override string GetValue(Summary summary, BenchmarkCase benchma...
    method IsNonBaselinesPrecise (line 58) | private static bool IsNonBaselinesPrecise(Summary summary, IReadOnlyDi...
    method GetAllocationRatio (line 66) | private static double? GetAllocationRatio(
    method GetAllocatedBytes (line 82) | private static double? GetAllocatedBytes(IReadOnlyDictionary<string, M...

FILE: src/BenchmarkDotNet/Columns/BaselineColumn.cs
  class BaselineColumn (line 7) | public class BaselineColumn : IColumn
    method GetValue (line 14) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method GetValue (line 15) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsDefault (line 16) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 17) | public bool IsAvailable(Summary summary) => true;

FILE: src/BenchmarkDotNet/Columns/BaselineCustomColumn.cs
  class BaselineCustomColumn (line 10) | public abstract class BaselineCustomColumn : IColumn
    method GetValue (line 15) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
    method GetValue (line 35) | [PublicAPI]
    method IsAvailable (line 39) | public bool IsAvailable(Summary summary) => summary.HasBaselines();
    method GetValue (line 46) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method ToString (line 47) | public override string ToString() => ColumnName;
    method IsDefault (line 48) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method ResultsAreInvalid (line 50) | internal static bool ResultsAreInvalid(Summary summary, BenchmarkCase ...

FILE: src/BenchmarkDotNet/Columns/BaselineRatioColumn.cs
  class BaselineRatioColumn (line 10) | public class BaselineRatioColumn : BaselineCustomColumn
    type RatioMetric (line 12) | public enum RatioMetric
    method BaselineRatioColumn (line 23) | private BaselineRatioColumn(RatioMetric metric)
    method GetValue (line 46) | public override string GetValue(Summary summary, BenchmarkCase benchma...
    method IsNonBaselinesPrecise (line 113) | private static bool IsNonBaselinesPrecise(Summary summary, Statistics ...
    method GetRatioStatistics (line 120) | private static RatioStatistics? GetRatioStatistics(Statistics? current...

FILE: src/BenchmarkDotNet/Columns/CategoriesColumn.cs
  class CategoriesColumn (line 8) | public class CategoriesColumn : IColumn
    method GetValue (line 14) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method GetValue (line 15) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsDefault (line 16) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 17) | public bool IsAvailable(Summary summary) => summary.BenchmarksCases.An...

FILE: src/BenchmarkDotNet/Columns/Column.cs
  class Column (line 6) | [PublicAPI] // this type is public, so the users can do things like [Hid...

FILE: src/BenchmarkDotNet/Columns/ColumnCategory.cs
  type ColumnCategory (line 3) | public enum ColumnCategory

FILE: src/BenchmarkDotNet/Columns/ColumnExtensions.cs
  class ColumnExtensions (line 3) | public static class ColumnExtensions
    method ToProvider (line 5) | public static IColumnProvider ToProvider(this IColumn column) => new S...

FILE: src/BenchmarkDotNet/Columns/ColumnHidingByIdRule.cs
  class ColumnHidingByIdRule (line 6) | [PublicAPI]
    method ColumnHidingByIdRule (line 11) | public ColumnHidingByIdRule(IColumn column) => Id = column.Id;
    method NeedToHide (line 13) | public bool NeedToHide(IColumn column) => column.Id == Id;
    method Equals (line 15) | public bool Equals(ColumnHidingByIdRule? other)
    method Equals (line 24) | public override bool Equals(object? obj)
    method GetHashCode (line 27) | public override int GetHashCode()

FILE: src/BenchmarkDotNet/Columns/ColumnHidingByNameRule.cs
  class ColumnHidingByNameRule (line 6) | [PublicAPI]
    method ColumnHidingByNameRule (line 11) | public ColumnHidingByNameRule(string name) => Name = name;
    method NeedToHide (line 13) | public bool NeedToHide(IColumn column) => column.ColumnName == Name;
    method Equals (line 15) | public bool Equals(ColumnHidingByNameRule? other)
    method Equals (line 25) | public override bool Equals(object? obj)
    method GetHashCode (line 28) | public override int GetHashCode()

FILE: src/BenchmarkDotNet/Columns/CompositeColumnProvider.cs
  class CompositeColumnProvider (line 7) | public class CompositeColumnProvider : IColumnProvider
    method CompositeColumnProvider (line 11) | public CompositeColumnProvider(params IColumnProvider[] providers)
    method GetColumns (line 16) | public IEnumerable<IColumn> GetColumns(Summary summary) => providers.S...

FILE: src/BenchmarkDotNet/Columns/DefaultColumnProvider.cs
  class DefaultColumnProviders (line 12) | public static class DefaultColumnProviders
    class DescriptorColumnProvider (line 22) | private class DescriptorColumnProvider : IColumnProvider
      method GetColumns (line 24) | public IEnumerable<IColumn> GetColumns(Summary summary)
    class JobColumnProvider (line 34) | private class JobColumnProvider : IColumnProvider
      method GetColumns (line 36) | public IEnumerable<IColumn> GetColumns(Summary summary) => JobCharac...
    class StatisticsColumnProvider (line 39) | private class StatisticsColumnProvider : IColumnProvider
      method GetColumns (line 41) | public IEnumerable<IColumn> GetColumns(Summary summary)
      method NeedToShow (line 74) | private static bool NeedToShow(Summary summary, Func<Statistics, boo...
      method HasMemoryDiagnoser (line 79) | private static bool HasMemoryDiagnoser(Summary summary)
    class ParamsColumnProvider (line 85) | private class ParamsColumnProvider : IColumnProvider
      method GetColumns (line 87) | public IEnumerable<IColumn> GetColumns(Summary summary) => summary
    class MetricsColumnProvider (line 94) | private class MetricsColumnProvider : IColumnProvider
      method GetColumns (line 96) | public IEnumerable<IColumn> GetColumns(Summary summary) => summary

FILE: src/BenchmarkDotNet/Columns/EmptyColumnProvider.cs
  class EmptyColumnProvider (line 7) | public class EmptyColumnProvider : IColumnProvider
    method EmptyColumnProvider (line 11) | private EmptyColumnProvider()
    method GetColumns (line 15) | public IEnumerable<IColumn> GetColumns(Summary summary) => [];

FILE: src/BenchmarkDotNet/Columns/IColumn.cs
  type IColumn (line 6) | public interface IColumn
    method GetValue (line 22) | string GetValue(Summary summary, BenchmarkCase benchmarkCase);
    method GetValue (line 27) | string GetValue(Summary summary, BenchmarkCase benchmarkCase, SummaryS...
    method IsDefault (line 29) | bool IsDefault(Summary summary, BenchmarkCase benchmarkCase);
    method IsAvailable (line 31) | bool IsAvailable(Summary summary);

FILE: src/BenchmarkDotNet/Columns/IColumnHidingRule.cs
  type IColumnHidingRule (line 3) | public interface IColumnHidingRule
    method NeedToHide (line 5) | bool NeedToHide(IColumn column);

FILE: src/BenchmarkDotNet/Columns/IColumnProvider.cs
  type IColumnProvider (line 6) | public interface IColumnProvider
    method GetColumns (line 8) | IEnumerable<IColumn> GetColumns(Summary summary);

FILE: src/BenchmarkDotNet/Columns/JobCharacteristicColumn.cs
  class JobCharacteristicColumn (line 11) | public class JobCharacteristicColumn : IColumn
    method JobCharacteristicColumn (line 17) | private JobCharacteristicColumn(Characteristic characteristic)
    method GetValue (line 36) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsDefault (line 38) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 40) | public bool IsAvailable(Summary summary)
    method GetValue (line 57) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)

FILE: src/BenchmarkDotNet/Columns/LogicalGroupColumn.cs
  class LogicalGroupColumn (line 7) | public class LogicalGroupColumn : IColumn
    method GetValue (line 14) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method GetValue (line 15) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsDefault (line 16) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 17) | public bool IsAvailable(Summary summary) => true;

FILE: src/BenchmarkDotNet/Columns/MetricColumn.cs
  class MetricColumn (line 11) | public class MetricColumn : IColumn
    method MetricColumn (line 17) | public MetricColumn(IMetricDescriptor metricDescriptor) => descriptor ...
    method IsDefault (line 28) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 30) | public bool IsAvailable(Summary summary) => summary.Reports.Any(report =>
    method GetValue (line 34) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method GetValue (line 36) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method ToString (line 72) | public override string ToString() => descriptor.DisplayName;

FILE: src/BenchmarkDotNet/Columns/ParamColumn.cs
  class ParamColumn (line 8) | public class ParamColumn : IColumn
    method ParamColumn (line 13) | public ParamColumn(string columnName, int priorityInCategory = 0)
    method IsDefault (line 19) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method GetValue (line 20) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =>
    method IsAvailable (line 24) | public bool IsAvailable(Summary summary) => true;
    method ToString (line 28) | public override string ToString() => ColumnName;
    method GetValue (line 31) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...

FILE: src/BenchmarkDotNet/Columns/RankColumn.cs
  class RankColumn (line 11) | public class RankColumn : IColumn
    method RankColumn (line 15) | public RankColumn(NumeralSystem system) => numeralSystem = system;
    method GetValue (line 24) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
    method IsDefault (line 40) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method IsAvailable (line 41) | public bool IsAvailable(Summary summary) => true;
    method GetValue (line 46) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method ToString (line 48) | public override string ToString() => ColumnName;

FILE: src/BenchmarkDotNet/Columns/RatioColumnStyle.cs
  type RatioStyle (line 3) | public enum RatioStyle

FILE: src/BenchmarkDotNet/Columns/SimpleColumnProvider.cs
  class SimpleColumnProvider (line 8) | public class SimpleColumnProvider : IColumnProvider, IEquatable<SimpleCo...
    method SimpleColumnProvider (line 12) | public SimpleColumnProvider(params IColumn[] columns)
    method GetColumns (line 17) | public IEnumerable<IColumn> GetColumns(Summary summary) => columns.Whe...
    method Equals (line 19) | public bool Equals(SimpleColumnProvider? other)
    method Equals (line 29) | public override bool Equals(object? obj)
    method GetHashCode (line 32) | public override int GetHashCode()

FILE: src/BenchmarkDotNet/Columns/StatisticColumn.cs
  type IStatisticColumn (line 17) | public interface IStatisticColumn : IColumn
    method GetAllValues (line 19) | List<double> GetAllValues(Summary summary, SummaryStyle style);
  class StatisticColumn (line 22) | public class StatisticColumn : IStatisticColumn
    type Priority (line 24) | private enum Priority
    method CiLower (line 86) | [PublicAPI]
    method CiUpper (line 91) | [PublicAPI]
    method CiError (line 96) | [PublicAPI]
    method StatisticColumn (line 110) | private StatisticColumn(string columnName, string legend, Func<Statist...
    method GetValue (line 121) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
    method GetValue (line 124) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsAvailable (line 127) | public bool IsAvailable(Summary summary) => true;
    method GetAllValues (line 136) | public List<double> GetAllValues(Summary summary, SummaryStyle style)
    method Format (line 146) | private string Format(Summary summary, ImmutableConfig config, Statist...
    method ToString (line 165) | public override string ToString() => ColumnName;
    method IsDefault (line 167) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method CreatePercentileColumn (line 169) | private static IColumn CreatePercentileColumn(int percentiles, string ...

FILE: src/BenchmarkDotNet/Columns/StatisticalTestColumn.cs
  class StatisticalTestColumn (line 14) | public class StatisticalTestColumn(Threshold threshold, SignificanceLeve...
    method CreateDefault (line 18) | public static StatisticalTestColumn CreateDefault() => new(new Percent...
    method Create (line 20) | public static StatisticalTestColumn Create(Threshold threshold, Signif...
    method Create (line 22) | public static StatisticalTestColumn Create(string threshold, Significa...
    method GetValue (line 35) | public override string GetValue(Summary summary, BenchmarkCase benchma...

FILE: src/BenchmarkDotNet/Columns/TagColumn.cs
  class TagColumn (line 7) | public class TagColumn : IColumn
    method TagColumn (line 14) | public TagColumn(string columnName, Func<string, string> getTag)
    method IsDefault (line 21) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method GetValue (line 22) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method IsAvailable (line 24) | public bool IsAvailable(Summary summary) => true;
    method GetValue (line 31) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method ToString (line 32) | public override string ToString() => ColumnName;

FILE: src/BenchmarkDotNet/Columns/TargetMethodColumn.cs
  class TargetMethodColumn (line 8) | public class TargetMethodColumn : IColumn
    method GetValue (line 17) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase) =...
    method IsAvailable (line 18) | public bool IsAvailable(Summary summary) => true;
    method GetValue (line 25) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method TargetMethodColumn (line 27) | private TargetMethodColumn(string columnName, Func<BenchmarkCase, stri...
    method ToString (line 34) | public override string ToString() => ColumnName;
    method IsDefault (line 36) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...

FILE: src/BenchmarkDotNet/Columns/UnitType.cs
  type UnitType (line 4) | public enum UnitType

FILE: src/BenchmarkDotNet/Configs/BenchmarkLogicalGroupRule.cs
  type BenchmarkLogicalGroupRule (line 3) | public enum BenchmarkLogicalGroupRule

FILE: src/BenchmarkDotNet/Configs/ConfigExtensions.cs
  class ConfigExtensions (line 22) | public static class ConfigExtensions
    method AddColumn (line 24) | [PublicAPI] public static ManualConfig AddColumn(this IConfig config, ...
    method AddColumnProvider (line 26) | [PublicAPI] public static ManualConfig AddColumnProvider(this IConfig ...
    method AddLogger (line 28) | [PublicAPI] public static ManualConfig AddLogger(this IConfig config, ...
    method AddExporter (line 30) | [PublicAPI] public static ManualConfig AddExporter(this IConfig config...
    method AddDiagnoser (line 32) | [PublicAPI] public static ManualConfig AddDiagnoser(this IConfig confi...
    method AddAnalyser (line 34) | [PublicAPI] public static ManualConfig AddAnalyser(this IConfig config...
    method AddValidator (line 36) | [PublicAPI] public static ManualConfig AddValidator(this IConfig confi...
    method AddJob (line 38) | [PublicAPI] public static ManualConfig AddJob(this IConfig config, Job...
    method WithOrderer (line 40) | [PublicAPI] public static ManualConfig WithOrderer(this IConfig config...
    method AddHardwareCounters (line 42) | [PublicAPI] public static ManualConfig AddHardwareCounters(this IConfi...
    method AddFilter (line 44) | [PublicAPI] public static ManualConfig AddFilter(this IConfig config, ...
    method WithSummaryStyle (line 46) | [PublicAPI] public static ManualConfig WithSummaryStyle(this IConfig c...
    method WithArtifactsPath (line 48) | [PublicAPI] public static ManualConfig WithArtifactsPath(this IConfig ...
    method WithUnionRule (line 49) | [PublicAPI] public static ManualConfig WithUnionRule(this IConfig conf...
    method WithCultureInfo (line 50) | [PublicAPI] public static ManualConfig WithCultureInfo(this IConfig co...
    method KeepBenchmarkFiles (line 55) | [PublicAPI] public static IConfig KeepBenchmarkFiles(this IConfig conf...
    method DontOverwriteResults (line 61) | [PublicAPI] public static IConfig DontOverwriteResults(this IConfig co...
    method StopOnFirstError (line 66) | [PublicAPI] public static IConfig StopOnFirstError(this IConfig config...
    method WithOption (line 71) | [PublicAPI] public static ManualConfig WithOption(this IConfig config,...
    method WithOptions (line 76) | [PublicAPI] public static ManualConfig WithOptions(this IConfig config...
    method AddLogicalGroupRules (line 78) | [PublicAPI] public static ManualConfig AddLogicalGroupRules(this IConf...
    method AddEventProcessor (line 79) | [PublicAPI] public static ManualConfig AddEventProcessor(this IConfig ...
    method HideColumns (line 81) | [PublicAPI] public static ManualConfig HideColumns(this IConfig config...
    method HideColumns (line 82) | [PublicAPI] public static ManualConfig HideColumns(this IConfig config...
    method HideColumns (line 83) | [PublicAPI] public static ManualConfig HideColumns(this IConfig config...
    method CreateImmutableConfig (line 85) | public static ImmutableConfig CreateImmutableConfig(this IConfig confi...
    method GetNonNullCompositeLogger (line 87) | internal static ILogger GetNonNullCompositeLogger(this IConfig config)
    method With (line 96) | private static ManualConfig With(this IConfig config, Action<ManualCon...

FILE: src/BenchmarkDotNet/Configs/ConfigOptions.cs
  type ConfigOptions (line 5) | [Flags]
  class ConfigOptionsExtensions (line 58) | internal static class ConfigOptionsExtensions
    method IsSet (line 60) | internal static bool IsSet(this ConfigOptions currentValue, ConfigOpti...
    method Set (line 62) | internal static ConfigOptions Set(this ConfigOptions currentValue, boo...

FILE: src/BenchmarkDotNet/Configs/ConfigUnionRule.cs
  type ConfigUnionRule (line 3) | public enum ConfigUnionRule

FILE: src/BenchmarkDotNet/Configs/DebugConfig.cs
  class DebugInProcessConfig (line 25) | [PublicAPI]
    method GetJobs (line 28) | public override IEnumerable<Job> GetJobs() =>
  class DebugBuildConfig (line 38) | [PublicAPI]
    method GetJobs (line 41) | public override IEnumerable<Job> GetJobs() =>
  class DebugConfig (line 48) | public abstract class DebugConfig : IConfig
    method GetJobs (line 51) | public abstract IEnumerable<Job> GetJobs();
    method GetValidators (line 53) | public IEnumerable<IValidator> GetValidators() => [];
    method GetColumnProviders (line 54) | public IEnumerable<IColumnProvider> GetColumnProviders() => DefaultCol...
    method GetExporters (line 55) | public IEnumerable<IExporter> GetExporters() => [];
    method GetLoggers (line 56) | public IEnumerable<ILogger> GetLoggers() => [ConsoleLogger.Default];
    method GetDiagnosers (line 57) | public IEnumerable<IDiagnoser> GetDiagnosers() => [];
    method GetAnalysers (line 58) | public IEnumerable<IAnalyser> GetAnalysers() => [];
    method GetHardwareCounters (line 59) | public IEnumerable<HardwareCounter> GetHardwareCounters() => [];
    method GetEventProcessors (line 60) | public IEnumerable<EventProcessor> GetEventProcessors() => [];
    method GetFilters (line 61) | public IEnumerable<IFilter> GetFilters() => [];
    method GetColumnHidingRules (line 62) | public IEnumerable<IColumnHidingRule> GetColumnHidingRules() => [];
    method GetLogicalGroupRules (line 74) | public IEnumerable<BenchmarkLogicalGroupRule> GetLogicalGroupRules() =...

FILE: src/BenchmarkDotNet/Configs/DefaultConfig.cs
  class DefaultConfig (line 24) | public class DefaultConfig : IConfig
    method DefaultConfig (line 34) | private DefaultConfig()
    method SetCustomConfig (line 38) | public static void SetCustomConfig(ImmutableConfig? config)
    method GetColumnProviders (line 43) | public IEnumerable<IColumnProvider> GetColumnProviders() => DefaultCol...
    method GetExporters (line 45) | public IEnumerable<IExporter> GetExporters()
    method GetLoggers (line 54) | public IEnumerable<ILogger> GetLoggers()
    method GetAnalysers (line 62) | public IEnumerable<IAnalyser> GetAnalysers()
    method GetValidators (line 74) | public IEnumerable<IValidator> GetValidators()
    method GetJobs (line 125) | public IEnumerable<Job> GetJobs() => [];
    method GetLogicalGroupRules (line 127) | public IEnumerable<BenchmarkLogicalGroupRule> GetLogicalGroupRules() =...
    method GetDiagnosers (line 129) | public IEnumerable<IDiagnoser> GetDiagnosers() => [];
    method GetHardwareCounters (line 131) | public IEnumerable<HardwareCounter> GetHardwareCounters() => [];
    method GetFilters (line 133) | public IEnumerable<IFilter> GetFilters() => [];
    method GetEventProcessors (line 135) | public IEnumerable<EventProcessor> GetEventProcessors() => [];
    method GetColumnHidingRules (line 137) | public IEnumerable<IColumnHidingRule> GetColumnHidingRules() => [];

FILE: src/BenchmarkDotNet/Configs/IConfig.cs
  type IConfig (line 19) | public interface IConfig
    method GetColumnProviders (line 21) | IEnumerable<IColumnProvider> GetColumnProviders();
    method GetExporters (line 22) | IEnumerable<IExporter> GetExporters();
    method GetLoggers (line 23) | IEnumerable<ILogger> GetLoggers();
    method GetDiagnosers (line 24) | IEnumerable<IDiagnoser> GetDiagnosers();
    method GetAnalysers (line 25) | IEnumerable<IAnalyser> GetAnalysers();
    method GetJobs (line 26) | IEnumerable<Job> GetJobs();
    method GetValidators (line 27) | IEnumerable<IValidator> GetValidators();
    method GetHardwareCounters (line 28) | IEnumerable<HardwareCounter> GetHardwareCounters();
    method GetFilters (line 29) | IEnumerable<IFilter> GetFilters();
    method GetLogicalGroupRules (line 30) | IEnumerable<BenchmarkLogicalGroupRule> GetLogicalGroupRules();
    method GetEventProcessors (line 31) | IEnumerable<EventProcessor> GetEventProcessors();
    method GetColumnHidingRules (line 32) | IEnumerable<IColumnHidingRule> GetColumnHidingRules();

FILE: src/BenchmarkDotNet/Configs/IConfigSource.cs
  type IConfigSource (line 3) | public interface IConfigSource

FILE: src/BenchmarkDotNet/Configs/ImmutableConfig.cs
  class ImmutableConfig (line 22) | public sealed class ImmutableConfig : IConfig
    method ImmutableConfig (line 38) | internal ImmutableConfig(
    method GetColumnProviders (line 96) | public IEnumerable<IColumnProvider> GetColumnProviders() => columnProv...
    method GetExporters (line 97) | public IEnumerable<IExporter> GetExporters() => exporters;
    method GetLoggers (line 98) | public IEnumerable<ILogger> GetLoggers() => loggers;
    method GetDiagnosers (line 99) | public IEnumerable<IDiagnoser> GetDiagnosers() => diagnosers;
    method GetAnalysers (line 100) | public IEnumerable<IAnalyser> GetAnalysers() => analysers;
    method GetJobs (line 101) | public IEnumerable<Job> GetJobs() => jobs;
    method GetValidators (line 102) | public IEnumerable<IValidator> GetValidators() => validators;
    method GetHardwareCounters (line 103) | public IEnumerable<HardwareCounter> GetHardwareCounters() => hardwareC...
    method GetFilters (line 104) | public IEnumerable<IFilter> GetFilters() => filters;
    method GetLogicalGroupRules (line 105) | public IEnumerable<BenchmarkLogicalGroupRule> GetLogicalGroupRules() =...
    method GetEventProcessors (line 106) | public IEnumerable<EventProcessor> GetEventProcessors() => eventProces...
    method GetColumnHidingRules (line 107) | public IEnumerable<IColumnHidingRule> GetColumnHidingRules() => column...
    method GetCompositeLogger (line 109) | public ILogger GetCompositeLogger() => new CompositeLogger(loggers);
    method GetCompositeExporter (line 110) | public IExporter GetCompositeExporter() => new CompositeExporter(expor...
    method GetCompositeValidator (line 111) | public IValidator GetCompositeValidator() => new CompositeValidator(va...
    method GetCompositeAnalyser (line 112) | public IAnalyser GetCompositeAnalyser() => new CompositeAnalyser(analy...
    method GetCompositeDiagnoser (line 113) | public IDiagnoser GetCompositeDiagnoser() => new CompositeDiagnoser(di...
    method HasMemoryDiagnoser (line 115) | public bool HasMemoryDiagnoser() => diagnosers.OfType<MemoryDiagnoser>...
    method HasPerfCollectProfiler (line 117) | internal bool HasPerfCollectProfiler() => diagnosers.OfType<PerfCollec...
    method HasDisassemblyDiagnoser (line 119) | internal bool HasDisassemblyDiagnoser() => diagnosers.OfType<Disassemb...
    method HasExtraIterationDiagnoser (line 121) | public bool HasExtraIterationDiagnoser(BenchmarkCase benchmarkCase) =>...
    method GetCompositeDiagnoser (line 123) | public IDiagnoser? GetCompositeDiagnoser(BenchmarkCase benchmarkCase, ...

FILE: src/BenchmarkDotNet/Configs/ImmutableConfigBuilder.cs
  class ImmutableConfigBuilder (line 19) | public static class ImmutableConfigBuilder
    method Create (line 39) | public static ImmutableConfig Create(IConfig source)
    method GetDiagnosers (line 85) | private static ImmutableHashSet<IDiagnoser> GetDiagnosers(IEnumerable<...
    method GetExporters (line 105) | private static ImmutableArray<IExporter> GetExporters(IEnumerable<IExp...
    method GetAnalysers (line 184) | private static ImmutableHashSet<IAnalyser> GetAnalysers(IEnumerable<IA...
    method GetValidators (line 200) | private static ImmutableHashSet<IValidator> GetValidators(IEnumerable<...
    method GetRunnableJobs (line 223) | private static IReadOnlyList<Job> GetRunnableJobs(IEnumerable<Job> jobs)
    class TypeComparer (line 252) | private class TypeComparer<TInterface> : IEqualityComparer<TInterface>
      method Equals (line 255) | public bool Equals(TInterface? x, TInterface? y)
      method GetHashCode (line 265) | public int GetHashCode(TInterface obj) => obj?.GetType().GetHashCode...

FILE: src/BenchmarkDotNet/Configs/ManualConfig.cs
  class ManualConfig (line 24) | public class ManualConfig : IConfig
    method GetColumnProviders (line 41) | public IEnumerable<IColumnProvider> GetColumnProviders() => columnProv...
    method GetExporters (line 42) | public IEnumerable<IExporter> GetExporters() => exporters;
    method GetLoggers (line 43) | public IEnumerable<ILogger> GetLoggers() => loggers;
    method GetDiagnosers (line 44) | public IEnumerable<IDiagnoser> GetDiagnosers() => diagnosers;
    method GetAnalysers (line 45) | public IEnumerable<IAnalyser> GetAnalysers() => analysers;
    method GetValidators (line 46) | public IEnumerable<IValidator> GetValidators() => validators;
    method GetJobs (line 47) | public IEnumerable<Job> GetJobs() => jobs;
    method GetHardwareCounters (line 48) | public IEnumerable<HardwareCounter> GetHardwareCounters() => hardwareC...
    method GetFilters (line 49) | public IEnumerable<IFilter> GetFilters() => filters;
    method GetLogicalGroupRules (line 50) | public IEnumerable<BenchmarkLogicalGroupRule> GetLogicalGroupRules() =...
    method GetEventProcessors (line 51) | public IEnumerable<EventProcessor> GetEventProcessors() => eventProces...
    method GetColumnHidingRules (line 52) | public IEnumerable<IColumnHidingRule> GetColumnHidingRules() => column...
    method WithOption (line 66) | public ManualConfig WithOption(ConfigOptions option, bool value)
    method WithOptions (line 72) | public ManualConfig WithOptions(ConfigOptions options)
    method WithUnionRule (line 78) | public ManualConfig WithUnionRule(ConfigUnionRule unionRule)
    method WithArtifactsPath (line 84) | public ManualConfig WithArtifactsPath(string artifactsPath)
    method WithSummaryStyle (line 90) | public ManualConfig WithSummaryStyle(SummaryStyle summaryStyle)
    method WithOrderer (line 96) | public ManualConfig WithOrderer(IOrderer orderer)
    method WithCategoryDiscoverer (line 102) | public ManualConfig WithCategoryDiscoverer(ICategoryDiscoverer categor...
    method WithBuildTimeout (line 108) | public ManualConfig WithBuildTimeout(TimeSpan buildTimeout)
    method WithWakeLock (line 114) | public ManualConfig WithWakeLock(WakeLockType wakeLockType)
    method AddColumn (line 120) | public ManualConfig AddColumn(params IColumn[] newColumns)
    method AddColumnProvider (line 126) | public ManualConfig AddColumnProvider(params IColumnProvider[] newColu...
    method AddExporter (line 132) | public ManualConfig AddExporter(params IExporter[] newExporters)
    method AddLogger (line 138) | public ManualConfig AddLogger(params ILogger[] newLoggers)
    method AddDiagnoser (line 144) | public ManualConfig AddDiagnoser(params IDiagnoser[] newDiagnosers)
    method AddAnalyser (line 150) | public ManualConfig AddAnalyser(params IAnalyser[] newAnalysers)
    method AddValidator (line 156) | public ManualConfig AddValidator(params IValidator[] newValidators)
    method AddJob (line 162) | public ManualConfig AddJob(params Job[] newJobs)
    method AddHardwareCounters (line 168) | public ManualConfig AddHardwareCounters(params HardwareCounter[] newHa...
    method AddFilter (line 174) | public ManualConfig AddFilter(params IFilter[] newFilters)
    method AddLogicalGroupRules (line 180) | public ManualConfig AddLogicalGroupRules(params BenchmarkLogicalGroupR...
    method AddEventProcessor (line 186) | public ManualConfig AddEventProcessor(params EventProcessor[] newEvent...
    method HideColumns (line 192) | [PublicAPI]
    method HideColumns (line 199) | [PublicAPI]
    method HideColumns (line 206) | [PublicAPI]
    method Add (line 213) | [PublicAPI]
    method CreateEmpty (line 242) | public static ManualConfig CreateEmpty() => new ManualConfig();
    method CreateMinimumViable (line 247) | public static ManualConfig CreateMinimumViable()
    method Create (line 252) | public static ManualConfig Create(IConfig config)
    method Union (line 259) | public static ManualConfig Union(IConfig globalConfig, IConfig localCo...
    method RemoveLoggersOfType (line 282) | internal ManualConfig RemoveLoggersOfType<T>()
    method RemoveAllJobs (line 288) | internal void RemoveAllJobs() => jobs.Clear();
    method RemoveAllDiagnosers (line 290) | internal void RemoveAllDiagnosers() => diagnosers.Clear();
    method GetBuildTimeout (line 292) | private static TimeSpan GetBuildTimeout(TimeSpan current, TimeSpan other)
    method GetWakeLock (line 297) | private static WakeLockType GetWakeLock(WakeLockType current, WakeLock...

FILE: src/BenchmarkDotNet/Configs/WakeLockType.cs
  type WakeLockType (line 3) | public enum WakeLockType

FILE: src/BenchmarkDotNet/ConsoleArguments/CommandLineOptions.cs
  class CommandLineOptions (line 19) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
    method Escape (line 271) | private static string Escape(string input) => UserInteractionHelper.Es...

FILE: src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs
  class ConfigParser (line 37) | public static class ConfigParser
    method Parse (line 75) | public static (bool isSuccess, IConfig? config, CommandLineOptions? op...
    method ExpandResponseFile (line 97) | private static (bool Success, string[] ExpandedTokens) ExpandResponseF...
    method ConsumeTokens (line 136) | private static IEnumerable<string> ConsumeTokens(string line)
    method TryUpdateArgs (line 198) | internal static bool TryUpdateArgs(string[] args, out string[]? update...
    method CreateParser (line 223) | private static Parser CreateParser(ILogger logger)
    method Validate (line 234) | private static bool Validate(CommandLineOptions options, ILogger logger)
    method CreateConfig (line 331) | private static IConfig CreateConfig(CommandLineOptions options, IConfi...
    method GetBaseJob (line 404) | private static Job GetBaseJob(CommandLineOptions options, IConfig? glo...
    method Expand (line 468) | private static IEnumerable<Job> Expand(Job baseJob, CommandLineOptions...
    method CreateJobForGivenRuntime (line 511) | private static Job CreateJobForGivenRuntime(Job baseJob, string runtim...
    method CreateAotJob (line 637) | private static Job CreateAotJob(Job baseJob, CommandLineOptions option...
    method MakeMonoJob (line 659) | private static Job MakeMonoJob(Job baseJob, CommandLineOptions options...
    method MakeMonoAOTLLVMJob (line 671) | private static Job MakeMonoAOTLLVMJob(Job baseJob, CommandLineOptions ...
    method CreateR2RJob (line 689) | private static Job CreateR2RJob(Job baseJob, CommandLineOptions option...
    method MakeWasmJob (line 701) | private static Job MakeWasmJob(Job baseJob, CommandLineOptions options...
    method GetFilters (line 725) | private static IEnumerable<IFilter> GetFilters(CommandLineOptions opti...
    method GetMaximumDisplayWidth (line 737) | private static int GetMaximumDisplayWidth()
    method CreateCoreRunJob (line 749) | private static Job CreateCoreRunJob(Job baseJob, CommandLineOptions op...
    method CreateCoreJobWithCli (line 762) | private static Job CreateCoreJobWithCli(Job baseJob, CommandLineOption...
    method GetCoreRunToolchainDisplayName (line 783) | private static string GetCoreRunToolchainDisplayName(IReadOnlyList<Fil...
    method TryParse (line 808) | internal static bool TryParse(string runtime, out RuntimeMoniker runti...

FILE: src/BenchmarkDotNet/ConsoleArguments/CorrectionsSuggester.cs
  class CorrectionsSuggester (line 11) | public class CorrectionsSuggester
    method CorrectionsSuggester (line 18) | public CorrectionsSuggester(IReadOnlyList<Type> types)
    method SuggestFor (line 34) | public string[] SuggestFor(string userInput)
    method GetAllBenchmarkNames (line 48) | public string[] GetAllBenchmarkNames() => actualFullBenchmarkNames.ToA...
    method GetAllPartialNames (line 55) | private static IEnumerable<string> GetAllPartialNames(string[] nameParts)

FILE: src/BenchmarkDotNet/ConsoleArguments/LevenshteinDistanceCalculator.cs
  class LevenshteinDistanceCalculator (line 5) | internal class LevenshteinDistanceCalculator
    method Calculate (line 7) | public int Calculate(string string1, string string2)

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/BenchmarkCasesPrinter.cs
  class BenchmarkCasesPrinter (line 10) | internal class BenchmarkCasesPrinter : IBenchmarkCasesPrinter
    method BenchmarkCasesPrinter (line 14) | public BenchmarkCasesPrinter(ListBenchmarkCaseMode listBenchmarkCaseMode)
    method PrintList (line 21) | public static void PrintList(ILogger nonNullLogger, IConfig effectiveC...
    method Print (line 33) | public void Print(IEnumerable<string> testNames, ILogger logger) => pr...

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/FlatBenchmarkCasesPrinter.cs
  class FlatBenchmarkCasesPrinter (line 6) | internal class FlatBenchmarkCasesPrinter : IBenchmarkCasesPrinter
    method Print (line 8) | public void Print(IEnumerable<string> testNames, ILogger logger)

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/IBenchmarkCasesPrinter.cs
  type IBenchmarkCasesPrinter (line 6) | internal interface IBenchmarkCasesPrinter
    method Print (line 8) | void Print(IEnumerable<string> testNames, ILogger logger);

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/ListBechnmarkCaseMode.cs
  type ListBenchmarkCaseMode (line 3) | public enum ListBenchmarkCaseMode

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/Node.cs
  class Node (line 5) | internal class Node

FILE: src/BenchmarkDotNet/ConsoleArguments/ListBenchmarks/TreeBenchmarkCasesPrinter.cs
  class TreeBenchmarkCasesPrinter (line 7) | internal class TreeBenchmarkCasesPrinter : IBenchmarkCasesPrinter
    method Print (line 15) | public void Print(IEnumerable<string> testNames, ILogger logger)
    method PrepareNodeTree (line 31) | private static void PrepareNodeTree(List<Node> nodes, string[] partsOf...
    method PrintNode (line 46) | private void PrintNode(Node node, string indent, ILogger logger)
    method PrintChildNode (line 62) | private void PrintChildNode(Node node, string indent, bool isLast, ILo...

FILE: src/BenchmarkDotNet/ConsoleArguments/LoggerWrapper.cs
  class LoggerWrapper (line 7) | internal class LoggerWrapper : TextWriter
    method LoggerWrapper (line 11) | public LoggerWrapper(ILogger logger) => this.logger = logger;
    method Write (line 15) | public override void Write(string? value)

FILE: src/BenchmarkDotNet/ConsoleArguments/RuntimeFlavor.cs
  type RuntimeFlavor (line 6) | public enum RuntimeFlavor

FILE: src/BenchmarkDotNet/Detectors/Cpu/HardwareIntrinsics.cs
  class HardwareIntrinsics (line 15) | internal static class HardwareIntrinsics
    method GetVectorSize (line 17) | internal static string GetVectorSize() => Vector.IsHardwareAccelerated...
    method GetShortInfo (line 19) | internal static string GetShortInfo()
    method GetFullInfo (line 50) | internal static string GetFullInfo(Platform platform)
    method GetIsSupported (line 282) | private static bool GetIsSupported([DynamicallyAccessedMembers(Dynamic...

FILE: src/BenchmarkDotNet/Detectors/Cpu/ICpuDetector.cs
  type ICpuDetector (line 8) | public interface ICpuDetector
    method IsApplicable (line 10) | bool IsApplicable();
    method Detect (line 11) | CpuInfo? Detect();

FILE: src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuDetector.cs
  class LinuxCpuDetector (line 11) | internal class LinuxCpuDetector : ICpuDetector
    method IsApplicable (line 13) | public bool IsApplicable() => OsDetector.IsLinux();
    method Detect (line 15) | public CpuInfo? Detect()

FILE: src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuInfoParser.cs
  class LinuxCpuInfoParser (line 13) | internal static class LinuxCpuInfoParser
    class ProcCpu (line 15) | private static class ProcCpu
    class Lscpu (line 25) | private static class Lscpu
    method Parse (line 34) | internal static CpuInfo Parse(string cpuInfo, string lscpu)
    method ParseFrequencyFromBrandString (line 148) | internal static Frequency? ParseFrequencyFromBrandString(string brandS...

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/MosCpuDetector.cs
  class MosCpuDetector (line 13) | internal class MosCpuDetector : ICpuDetector
    method IsApplicable (line 15) | [SupportedOSPlatform("windows")]
    method Detect (line 20) | [SupportedOSPlatform("windows")]

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/PowershellWmiCpuDetector.cs
  class PowershellWmiCpuDetector (line 17) | internal class PowershellWmiCpuDetector : ICpuDetector
    method IsApplicable (line 23) | public bool IsApplicable() => OsDetector.IsWindows();
    method Detect (line 25) | [SupportedOSPlatform("windows")]

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/PowershellWmiCpuInfoParser.cs
  class PowershellWmiCpuInfoParser (line 10) | internal static class PowershellWmiCpuInfoParser
    method Parse (line 12) | internal static CpuInfo Parse(string powershellWmiOutput)

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuDetector.cs
  class WmicCpuDetector (line 15) | internal class WmicCpuDetector : ICpuDetector
    method IsApplicable (line 19) | public bool IsApplicable() => OsDetector.IsWindows();
    method Detect (line 21) | public CpuInfo? Detect()

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoKeyNames.cs
  class WmicCpuInfoKeyNames (line 3) | internal static class WmicCpuInfoKeyNames

FILE: src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoParser.cs
  class WmicCpuInfoParser (line 10) | internal static class WmicCpuInfoParser
    method Parse (line 16) | internal static CpuInfo Parse(string wmicOutput)

FILE: src/BenchmarkDotNet/Detectors/Cpu/macOS/MacOsCpuDetector.cs
  class MacOsCpuDetector (line 10) | internal class MacOsCpuDetector : ICpuDetector
    method IsApplicable (line 12) | public bool IsApplicable() => OsDetector.IsMacOS();
    method Detect (line 14) | public CpuInfo? Detect()

FILE: src/BenchmarkDotNet/Detectors/Cpu/macOS/SysctlCpuInfoParser.cs
  class SysctlCpuInfoParser (line 9) | internal static class SysctlCpuInfoParser
    class Sysctl (line 11) | private static class Sysctl
    method Parse (line 22) | [SuppressMessage("ReSharper", "StringLiteralTypo")]
    method PositiveIntValue (line 43) | private static int? PositiveIntValue(Dictionary<string, string> sysctl...
    method PositiveLongValue (line 52) | private static long? PositiveLongValue(Dictionary<string, string> sysc...

FILE: src/BenchmarkDotNet/Detectors/CpuDetector.cs
  class CpuDetector (line 12) | public class CpuDetector(params ICpuDetector[] detectors) : ICpuDetector
    method IsApplicable (line 22) | public bool IsApplicable() => detectors.Any(loader => loader.IsApplica...
    method Detect (line 24) | public CpuInfo? Detect() => detectors

FILE: src/BenchmarkDotNet/Detectors/OsDetector.cs
  class OsDetector (line 15) | public class OsDetector
    method OsDetector (line 18) | private OsDetector() { }
    method GetOs (line 24) | public static OsInfo GetOs() => Instance.os.Value;
    method ResolveOs (line 26) | private static OsInfo ResolveOs()
    method IsUnderWsl (line 74) | private static bool IsUnderWsl()
    method GetWindowsUbr (line 94) | private static int? GetWindowsUbr()
    method IsWindows (line 117) | [SupportedOSPlatformGuard("windows")]
    method IsLinux (line 127) | internal static bool IsLinux() =>
    method IsMacOS (line 136) | internal static bool IsMacOS() =>
    method IsAndroid (line 144) | internal static bool IsAndroid() =>
    method IsIOS (line 153) | internal static bool IsIOS() =>
    method IsTvOS (line 162) | internal static bool IsTvOS() =>

FILE: src/BenchmarkDotNet/Diagnosers/AllocatedMemoryMetricDescriptor.cs
  class AllocatedMemoryMetricDescriptor (line 8) | internal class AllocatedMemoryMetricDescriptor : IMetricDescriptor
    method GetIsAvailable (line 20) | public bool GetIsAvailable(Metric metric) => true;

FILE: src/BenchmarkDotNet/Diagnosers/AllocatedNativeMemoryDescriptor.cs
  class AllocatedNativeMemoryDescriptor (line 7) | internal class AllocatedNativeMemoryDescriptor : IMetricDescriptor
    method GetIsAvailable (line 19) | public bool GetIsAvailable(Metric metric) => true;
  class NativeMemoryLeakDescriptor (line 22) | internal class NativeMemoryLeakDescriptor : IMetricDescriptor
    method GetIsAvailable (line 34) | public bool GetIsAvailable(Metric metric) => true;

FILE: src/BenchmarkDotNet/Diagnosers/CompositeDiagnoser.cs
  class CompositeDiagnoser (line 19) | public sealed class CompositeDiagnoser : IDiagnoser
    method CompositeDiagnoser (line 23) | public CompositeDiagnoser(ImmutableHashSet<IDiagnoser> diagnosers)
    method GetRunMode (line 26) | public RunMode GetRunMode(BenchmarkCase benchmarkCase)
    method Handle (line 38) | [MethodImpl(CodeGenHelper.AggressiveOptimizationOption)]
    method ProcessResults (line 45) | public IEnumerable<Metric> ProcessResults(DiagnoserResults
Condensed preview — 1333 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,150K chars).
[
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 292,
    "preview": "# Code of Conduct\n\nThis project has adopted the code of conduct defined by the [Contributor Covenant](http://contributor"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 810,
    "preview": "# Contributions are welcome!\n\nBenchmarkDotNet is already a stable full-featured library which allows performing performa"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 23,
    "preview": "github: AndreyAkinshin\n"
  },
  {
    "path": ".github/workflows/generate-changelog.yaml",
    "chars": 919,
    "preview": "name: generate-changelog\nrun-name: Generate changelog / ${{ github.event.head_commit.message }}\n\non:\n  push:\n    branche"
  },
  {
    "path": ".github/workflows/generate-coverage-report.yaml",
    "chars": 6227,
    "preview": "name: generate-coverage-report\nrun-name: Generate coverage coverage report  ${{ github.event.head_commit.message }}\n\non:"
  },
  {
    "path": ".github/workflows/generate-gh-pages.yaml",
    "chars": 1551,
    "preview": "name: generate-gh-pages\nrun-name: Generate gh-pages / ${{ github.event.head_commit.message }}\n\non:\n  push:\n    branches:"
  },
  {
    "path": ".github/workflows/publish-nightly.yaml",
    "chars": 891,
    "preview": "name: publish-nightly\nrun-name: Publish nightly nupkg / ${{ github.event.head_commit.message }}\n\non:\n  push:\n    branche"
  },
  {
    "path": ".github/workflows/release.yaml",
    "chars": 4310,
    "preview": "name: release\nrun-name: Release new version\n\non:\n  workflow_dispatch:\n\nenv:\n  DOTNET_VERSION: \"8.0.410\"\n\njobs:\n  release"
  },
  {
    "path": ".github/workflows/run-tests-selected.yaml",
    "chars": 3500,
    "preview": "name: run-tests-selected\nrun-name: Run selected tests (${{ inputs.runs_on }} --framework ${{ inputs.framework}} --filter"
  },
  {
    "path": ".github/workflows/run-tests.yaml",
    "chars": 7783,
    "preview": "name: run-tests\nrun-name: Run tests / ${{ github.event.head_commit.message }}\n\non:\n  pull_request:\n  push:\n  workflow_di"
  },
  {
    "path": ".gitignore",
    "chars": 882,
    "preview": "# use glob syntax\nsyntax: glob\n\n*.obj\n*.pdb\n*.user\n*.aps\n*.pch\n*.vspscc\n*.vssscc\n*_i.c\n*_p.c\n*.ncb\n*.suo\n*.tlb\n*.tlh\n*.b"
  },
  {
    "path": "BenchmarkDotNet.slnx",
    "chars": 3212,
    "preview": "<Solution>\n  <Folder Name=\"/build/\">\n    <File Path=\"build/common.props\" />\n    <File Path=\"build/common.targets\" />\n  <"
  },
  {
    "path": "BenchmarkDotNet.slnx.DotSettings",
    "chars": 27155,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "LICENSE.md",
    "chars": 1102,
    "preview": "### The MIT License\n\nCopyright (c) 2013–2025 .NET Foundation and contributors\n\nPermission is hereby granted, free of cha"
  },
  {
    "path": "NuGet.Config",
    "chars": 1368,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <solution>\n    <add key=\"disableSourceControlIntegration\" valu"
  },
  {
    "path": "README.md",
    "chars": 15676,
    "preview": "<div align=\"center\">\n\n  ![](https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/ec962b0bd6854c991d7a3ebd77037579165"
  },
  {
    "path": "build/BenchmarkDotNet.Build/BenchmarkDotNet.Build.csproj",
    "chars": 612,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</Targe"
  },
  {
    "path": "build/BenchmarkDotNet.Build/BuildContext.cs",
    "chars": 7513,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing BenchmarkDo"
  },
  {
    "path": "build/BenchmarkDotNet.Build/CommandLineParser.cs",
    "chars": 10269,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Runtime.Interop"
  },
  {
    "path": "build/BenchmarkDotNet.Build/EnvVar.cs",
    "chars": 620,
    "preview": "using System;\n\nnamespace BenchmarkDotNet.Build;\n\npublic class EnvVar\n{\n    public static readonly EnvVar GitHubToken = n"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Example.cs",
    "chars": 930,
    "preview": "using System.Collections.Generic;\nusing BenchmarkDotNet.Build.Options;\n\nnamespace BenchmarkDotNet.Build;\n\npublic class E"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Folder.DotSettings",
    "chars": 1937,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "build/BenchmarkDotNet.Build/HelpInfo.cs",
    "chars": 384,
    "preview": "using System;\nusing BenchmarkDotNet.Build.Options;\n\nnamespace BenchmarkDotNet.Build;\n\npublic class HelpInfo\n{\n    public"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Helpers/OctokitExtensions.cs",
    "chars": 1423,
    "preview": "using System;\nusing System.Linq;\nusing Octokit;\n\nnamespace BenchmarkDotNet.Build.Helpers;\n\npublic static class OctokitEx"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Helpers/Utils.cs",
    "chars": 2050,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\nusing System.Text.RegularExpressio"
  },
  {
    "path": "build/BenchmarkDotNet.Build/IHelpProvider.cs",
    "chars": 92,
    "preview": "namespace BenchmarkDotNet.Build;\n\npublic interface IHelpProvider\n{\n    HelpInfo GetHelp();\n}"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Meta/Repo.cs",
    "chars": 1278,
    "preview": "using System;\nusing System.Net.Http;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\n\nnamespace Benc"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Meta/VersionHistory.cs",
    "chars": 606,
    "preview": "using System.Linq;\nusing Cake.Core.IO;\nusing Cake.FileHelpers;\n\nnamespace BenchmarkDotNet.Build.Meta;\n\npublic class Vers"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Options/BoolOption.cs",
    "chars": 680,
    "preview": "using System;\n\nnamespace BenchmarkDotNet.Build.Options;\n\npublic class BoolOption : Option<bool>\n{\n    public BoolOption("
  },
  {
    "path": "build/BenchmarkDotNet.Build/Options/IOption.cs",
    "chars": 168,
    "preview": "namespace BenchmarkDotNet.Build.Options;\n\npublic interface IOption\n{\n    string CommandLineName { get; }\n    string Desc"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Options/KnownOptions.cs",
    "chars": 1946,
    "preview": "namespace BenchmarkDotNet.Build.Options;\n\npublic static class KnownOptions\n{\n    public static readonly StringOption Ver"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Options/Option.cs",
    "chars": 1115,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Cake.Common;\nusing Cake.Core;\n\nnamespace Benchm"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Options/StringOption.cs",
    "chars": 719,
    "preview": "using System;\n\nnamespace BenchmarkDotNet.Build.Options;\n\npublic class StringOption : Option<string>\n{\n    public StringO"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Program.cs",
    "chars": 10821,
    "preview": "using BenchmarkDotNet.Build.Meta;\nusing BenchmarkDotNet.Build.Options;\nusing Cake.Common;\nusing Cake.Frosting;\n\nnamespac"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/BuildRunner.cs",
    "chars": 5755,
    "preview": "using Cake.Common.Build;\nusing Cake.Common.Diagnostics;\nusing Cake.Common.IO;\nusing Cake.Common.Tools.DotNet;\nusing Cake"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogBuilder.cs",
    "chars": 9904,
    "preview": "using System;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing BenchmarkDotNet.B"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/Changelog/ChangelogDetailsBuilder.cs",
    "chars": 7178,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Linq;\nusing System.Tex"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/DocumentationRunner.cs",
    "chars": 6113,
    "preview": "using System.IO;\nusing System.Linq;\nusing System.Text;\nusing BenchmarkDotNet.Build.Helpers;\nusing BenchmarkDotNet.Build."
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/GitRunner.cs",
    "chars": 4824,
    "preview": "using System;\nusing BenchmarkDotNet.Build.Meta;\nusing Cake.Common;\nusing Cake.Common.Diagnostics;\nusing Cake.Core.IO;\nus"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/ReleaseRunner.cs",
    "chars": 6934,
    "preview": "using System;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing BenchmarkDotNet.Build.Helpers;\nu"
  },
  {
    "path": "build/BenchmarkDotNet.Build/Runners/UnitTestRunner.cs",
    "chars": 3310,
    "preview": "using BenchmarkDotNet.Build.Helpers;\nusing Cake.Common;\nusing Cake.Common.Diagnostics;\nusing Cake.Common.Tools.DotNet;\nu"
  },
  {
    "path": "build/CodingStyle.ruleset",
    "chars": 18543,
    "preview": "<RuleSet Name=\"Microsoft.Analyzers.ManagedCodeAnalysis\" Description=\"Microsoft.Analyzers.ManagedCodeAnalysis\" ToolsVers"
  },
  {
    "path": "build/build.bat",
    "chars": 247,
    "preview": "@ECHO OFF\nPowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"[System.Threading.Thread]::CurrentThread"
  },
  {
    "path": "build/build.ps1",
    "chars": 3225,
    "preview": "#!/usr/bin/env pwsh\n\n$DotNetInstallerUri = 'https://dot.net/v1/dotnet-install.ps1';\n$BuildPath = Split-Path $MyInvocatio"
  },
  {
    "path": "build/build.sh",
    "chars": 1224,
    "preview": "#!/usr/bin/env bash\n\n# Define variables\nPROJECT_ROOT=$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && cd .. && pwd )\n\n#######"
  },
  {
    "path": "build/cSpell.json",
    "chars": 2522,
    "preview": "{\n  \"version\": \"0.2\",\n  \"language\": \"en\",\n  \"words\": [\n    \"Alloc\",\n    \"analyse\",\n    \"analyser\",\n    \"Analysers\",\n    "
  },
  {
    "path": "build/common.props",
    "chars": 4074,
    "preview": "<Project>\n  <PropertyGroup>\n    <Product>BenchmarkDotNet</Product>\n    <Description>Powerful .NET library for benchmarki"
  },
  {
    "path": "build/common.targets",
    "chars": 183,
    "preview": "<Project>\n\n  <ItemGroup Condition=\"'$(IsPackable)' == 'true'\">\n    <None Include=\"$(MSBuildThisFileDirectory)package-ico"
  },
  {
    "path": "build/sdk/global.json",
    "chars": 75,
    "preview": "{\n  \"sdk\": {\n    \"version\": \"10.0.103\",\n    \"rollForward\": \"disable\"\n  }\n}\n"
  },
  {
    "path": "build/versions.txt",
    "chars": 510,
    "preview": "6eda98ab1e83a0d185d09ff8b24c795711af8db1\n0.7.0\n0.7.1\n0.7.2\n0.7.3\n0.7.4\n0.7.5\n0.7.6\n0.7.7\n0.7.8\n0.8.0\n0.8.1\n0.8.2\n0.9.0\n0"
  },
  {
    "path": "build.cmd",
    "chars": 117,
    "preview": ":<<\"::CMDLITERAL\"\n@CALL build\\build.bat %*\n@GOTO :EOF\n::CMDLITERAL\n\"$(cd \"$(dirname \"$0\")\"; pwd)/build/build.sh\" \"$@\""
  },
  {
    "path": "docs/.gitignore",
    "chars": 255,
    "preview": "###############\n#    folder   #\n###############\n/**/DROP/\n/**/TEMP/\n/**/packages/\n/**/bin/\n/**/obj/\n_site\n_exported_temp"
  },
  {
    "path": "docs/_redirects/_redirects",
    "chars": 2649,
    "preview": "/Advancedfeatures.htm /articles/overview.html\n/HowItWorks.htm /Internals/HowItWorks.htm\n/RulesOfBenchmarking.htm /Guides"
  },
  {
    "path": "docs/api/index.md",
    "chars": 32,
    "preview": "# BenchmarkDotNet API Reference"
  },
  {
    "path": "docs/articles/configs/analysers.md",
    "chars": 279,
    "preview": "---\nuid: docs.analysers\nname: Analysers\n---\n\n# Analysers\n\nAn **analyser** can analyse summary of your benchmarks and pro"
  },
  {
    "path": "docs/articles/configs/columns.md",
    "chars": 1993,
    "preview": "---\nuid: docs.columns\nname: Columns\n---\n\n# Columns\n\nA *column* is a column in the summary table.\n\n## Default columns\n\nIn"
  },
  {
    "path": "docs/articles/configs/configoptions.md",
    "chars": 2220,
    "preview": "---\n#cspell:ignore configoptions\nuid: docs.configoptions\nname: Configoptions\n---\n\n# Config Options\n\nThe config options l"
  },
  {
    "path": "docs/articles/configs/configs.md",
    "chars": 1504,
    "preview": "---\nuid: docs.configs\nname: Configs\n---\n\n# Configs\n\nConfig is a set of so called `jobs`, `columns`, `exporters`, `logger"
  },
  {
    "path": "docs/articles/configs/diagnosers.md",
    "chars": 7759,
    "preview": "---\nuid: docs.diagnosers\nname: Diagnosers\n---\n\n# Diagnosers\n\nA **diagnoser** can attach to your benchmark and get some u"
  },
  {
    "path": "docs/articles/configs/exporters.md",
    "chars": 3881,
    "preview": "---\nuid: docs.exporters\nname: Exporters\n---\n\n# Exporters\n\nAn *exporter* allows you to export results of your benchmark i"
  },
  {
    "path": "docs/articles/configs/filters.md",
    "chars": 1469,
    "preview": "---\nuid: docs.filters\nname: Filters\n---\n\n# Filters\n\nSometimes you don't want to run all of your benchmarks.\nIn this case"
  },
  {
    "path": "docs/articles/configs/jobs.md",
    "chars": 11693,
    "preview": "---\nuid: docs.jobs\nname: Jobs\n---\n\n# Jobs\n\nBasically, a *job* describes how to run your benchmark. Practically, it's a s"
  },
  {
    "path": "docs/articles/configs/loggers.md",
    "chars": 189,
    "preview": "---\nuid: docs.loggers\nname: Loggers\n---\n\n# Loggers\n\nA **logger** allows you to log results of your benchmark. By default"
  },
  {
    "path": "docs/articles/configs/orderers.md",
    "chars": 563,
    "preview": "---\nuid: docs.orderers\nname: Orderers\n---\n\n# Orderers\n\nOrderers allows customizing the order of benchmark results in the"
  },
  {
    "path": "docs/articles/configs/powerplans.md",
    "chars": 961,
    "preview": "---\nuid: docs.powerplans\nname: Power Plans\n---\n\n# Power Plans\n\nBenchmarkDotNet forces Windows OS to execute on the High-"
  },
  {
    "path": "docs/articles/configs/toc.yml",
    "chars": 453,
    "preview": "- name: Configs\n  href: configs.md\n- name: Jobs\n  href: jobs.md\n- name: Columns\n  href: columns.md\n- name: Exporters\n  h"
  },
  {
    "path": "docs/articles/configs/toolchains.md",
    "chars": 20093,
    "preview": "---\nuid: docs.toolchains\nname: Toolchains\n---\n\n# Toolchains\n\nTo achieve process-level isolation, BenchmarkDotNet generat"
  },
  {
    "path": "docs/articles/configs/validators.md",
    "chars": 836,
    "preview": "---\nuid: docs.validators\nname: Validators\n---\n\n# Validators\n\nA **validator** can validate your benchmarks before they ar"
  },
  {
    "path": "docs/articles/contributing/building.md",
    "chars": 1737,
    "preview": "# Building\n\nThere are two recommended options to build BenchmarkDotNet from source:\n\n## Visual Studio\n\n- [Visual Studio]"
  },
  {
    "path": "docs/articles/contributing/debugging.md",
    "chars": 198,
    "preview": "# Debugging\n\nThere should be two debug profiles available in VS drop down\n\n![](https://cloud.githubusercontent.com/asset"
  },
  {
    "path": "docs/articles/contributing/disassembler.md",
    "chars": 4082,
    "preview": "# Contributing to Disassembler\n\nThe disassembler might looks scarry, but once you know how it works and how to debug it,"
  },
  {
    "path": "docs/articles/contributing/documentation.md",
    "chars": 1721,
    "preview": "# Documentation\n\nBenchmarkDotNet uses [DocFX](https://dotnet.github.io/docfx/) as a documentation generation tool.\n\n## H"
  },
  {
    "path": "docs/articles/contributing/miscellaneous.md",
    "chars": 524,
    "preview": "#Miscellaneous topics\n \n## F# #\n\nWe have full F# support, all you have to do is to run `dotnet restore` to download the "
  },
  {
    "path": "docs/articles/contributing/running-tests.md",
    "chars": 1317,
    "preview": "# Running Tests\n\nTo run all tests just run the following command in the repo root:\n\n```cmd\ndotnet test -c Release Benchm"
  },
  {
    "path": "docs/articles/contributing/toc.yml",
    "chars": 268,
    "preview": "- name: Building\n  href: building.md\n- name: Debugging\n  href: debugging.md\n- name: Running tests\n  href: running-tests."
  },
  {
    "path": "docs/articles/faq.md",
    "chars": 7413,
    "preview": "---\nuid: docs.faq\nname: FAQ\n---\n\n# FAQ (Frequently asked questions)\n\n* **Q** Why can't I install BenchmarkDotNet in Visu"
  },
  {
    "path": "docs/articles/features/baselines.md",
    "chars": 486,
    "preview": "---\nuid: docs.baselines\nname: Benchmark and Job Baselines\n---\n\n# Benchmark and Job Baselines\n\nIn order to scale your res"
  },
  {
    "path": "docs/articles/features/disassembler.md",
    "chars": 2935,
    "preview": "---\nuid: docs.disassembler\nname: Disassembler\n---\n\n# Disassembler\n\nCan be enabled by using `[DisassemblyDiagnoser]` or c"
  },
  {
    "path": "docs/articles/features/etwprofiler.md",
    "chars": 5553,
    "preview": "---\n#cspell:ignore etwprofiler\nuid: docs.etwprofiler\nname: EtwProfiler\n---\n\n# EtwProfiler\n\n`EtwProfiler` allows to profi"
  },
  {
    "path": "docs/articles/features/event-pipe-profiler.md",
    "chars": 1129,
    "preview": "---\nuid: docs.event-pipe-profiler\nname: EventPipeProfiler\n---\n\n# EventPipeProfiler\n\n`EventPipeProfiler` is a cross-plat"
  },
  {
    "path": "docs/articles/features/parameterization.md",
    "chars": 601,
    "preview": "---\nuid: docs.parameterization\nname: Benchmark Parameterization\n---\n\n# Parameterization\n\n---\n\n[!include[IntroParams](../"
  },
  {
    "path": "docs/articles/features/setup-and-cleanup.md",
    "chars": 833,
    "preview": "---\nuid: docs.setup-and-cleanup\nname: Setup And Cleanup\n---\n\n# Setup And Cleanup\n\nSometimes we want to write some logic "
  },
  {
    "path": "docs/articles/features/statistics.md",
    "chars": 376,
    "preview": "---\nuid: docs.statistics\nname: Statistics\n---\n\n# Statistics\n\n---\n\n[!include[IntroStatisticsColumns](../samples/IntroStat"
  },
  {
    "path": "docs/articles/features/toc.yml",
    "chars": 406,
    "preview": "- name: Parameterization\n  href: parameterization.md\n- name: Baselines\n  href: baselines.md\n- name: Setup And Cleanup\n  "
  },
  {
    "path": "docs/articles/features/vsprofiler.md",
    "chars": 3668,
    "preview": "---\nuid: docs.vsprofiler\nname: VS Profiler\n---\n\n# Running with Visual Studio profiler\nVisual Studio supports [profiler i"
  },
  {
    "path": "docs/articles/features/vstest.md",
    "chars": 7209,
    "preview": "---\nuid: docs.vstest\nname: Running with VSTest\n---\n\n# Running with VSTest\n\nBenchmarkDotNet supports discovering and exec"
  },
  {
    "path": "docs/articles/guides/choosing-run-strategy.md",
    "chars": 1086,
    "preview": "---\n#cspell:ignore runstrategy\nuid: docs.runstrategy\nname: Choosing RunStrategy\n---\n\n# Choosing RunStrategy\n\nIf you run "
  },
  {
    "path": "docs/articles/guides/console-args.md",
    "chars": 17139,
    "preview": "---\nuid: docs.console-args\nname: Console Arguments\n---\n\n# How to use console arguments\n\n`BenchmarkSwitcher` supports var"
  },
  {
    "path": "docs/articles/guides/customizing-runtime.md",
    "chars": 494,
    "preview": "---\nuid: docs.customizing-runtime\nname: Customizing Runtime\n---\n\n# Customizing Runtime\n\nCurrently, we have only informat"
  },
  {
    "path": "docs/articles/guides/dotnet-new-templates.md",
    "chars": 3167,
    "preview": "---\nuid: docs.dotnet-new-templates\nname: BenchmarkDotNet templates \n---\n\n# BenchmarkDotNet templates\n\nBenchmarkDotNet pr"
  },
  {
    "path": "docs/articles/guides/getting-started.md",
    "chars": 3689,
    "preview": "# Getting started\nTo get started with BenchmarkDotNet, please follow these steps. \n\n## Step 1. Create a project\nCreate a"
  },
  {
    "path": "docs/articles/guides/good-practices.md",
    "chars": 1830,
    "preview": "# Good Practices\n\n## Use the Release build without an attached debugger\n\nNever use the Debug build for benchmarking. *Ne"
  },
  {
    "path": "docs/articles/guides/how-it-works.md",
    "chars": 5928,
    "preview": "# How it works\n\nBenchmarkDotNet follows the following steps to run your benchmarks:\n\n1. `BenchmarkRunner` generates an i"
  },
  {
    "path": "docs/articles/guides/how-to-run.md",
    "chars": 1366,
    "preview": "---\nuid: docs.how-to-run\n---\n\n# How to run your benchmarks\n\nThere are several ways to run your benchmarks. What is impor"
  },
  {
    "path": "docs/articles/guides/nuget.md",
    "chars": 1942,
    "preview": "---\nuid: docs.nuget\nname: Installing NuGet packages\n---\n\n# Installing NuGet packages\n\n## Packages\n\nWe have the following"
  },
  {
    "path": "docs/articles/guides/toc.yml",
    "chars": 540,
    "preview": "- name: Getting Started\n  href: getting-started.md\n- name: How to run your benchmarks\n  href: how-to-run.md\n- name: Good"
  },
  {
    "path": "docs/articles/guides/troubleshooting.md",
    "chars": 4925,
    "preview": "# Troubleshooting\n\n## BenchmarkDotNet\n\nYou need to be aware of the fact that to ensure process-level isolation Benchmark"
  },
  {
    "path": "docs/articles/license.md",
    "chars": 1102,
    "preview": "### The MIT License\n\nCopyright (c) 2013–2025 .NET Foundation and contributors\n\nPermission is hereby granted, free of cha"
  },
  {
    "path": "docs/articles/overview.md",
    "chars": 10071,
    "preview": "---\nuid: docs.overview\nname: Overview\n---\n\n# Overview\n\n## Install\n\nCreate new console application and install the [Bench"
  },
  {
    "path": "docs/articles/samples/IntroArguments.md",
    "chars": 1807,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroArguments\n---\n\n## Sample: IntroArguments\n\nAs an alternative to using [`[Params]`]("
  },
  {
    "path": "docs/articles/samples/IntroArgumentsPriority.md",
    "chars": 1109,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroArgumentsPriority\n---\n\n## Sample: IntroArgumentsPriority\n\nLike Params also Argumen"
  },
  {
    "path": "docs/articles/samples/IntroArgumentsSource.md",
    "chars": 3424,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroArgumentsSource\n---\n\n## Sample: IntroArgumentsSource\n\nIn case you want to use a lo"
  },
  {
    "path": "docs/articles/samples/IntroArrayParam.md",
    "chars": 1284,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroArrayParam\n---\n\n## Sample: IntroArrayParam\n\n> [!WARNING]\n> The cost of creating th"
  },
  {
    "path": "docs/articles/samples/IntroBasic.md",
    "chars": 292,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroBasic\ntitle: \"Sample: IntroBasic\"\n---\n\n## Sample: IntroBasic\n\n### Source code\n\n[!c"
  },
  {
    "path": "docs/articles/samples/IntroBenchmarkBaseline.md",
    "chars": 1693,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroBenchmarkBaseline\n---\n\n## Sample: IntroBenchmarkBaseline\n\nYou can mark a method as"
  },
  {
    "path": "docs/articles/samples/IntroCategories.md",
    "chars": 519,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroCategories\n---\n\n## Sample: IntroCategories\n\nCombined together with `[BenchmarkCate"
  },
  {
    "path": "docs/articles/samples/IntroCategoryBaseline.md",
    "chars": 1028,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroCategoryBaseline\n---\n\n## Sample: IntroCategoryBaseline\n\nThe only way to have sever"
  },
  {
    "path": "docs/articles/samples/IntroCategoryDiscoverer.md",
    "chars": 625,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroCategoryDiscoverer\n---\n\n## Sample: IntroCategoryDiscoverer\n\nThe category discovery"
  },
  {
    "path": "docs/articles/samples/IntroColdStart.md",
    "chars": 1095,
    "preview": "---\n#cspell:ignore runstrategy\nuid: BenchmarkDotNet.Samples.IntroColdStart\n---\n\n## Sample: IntroColdStart\n\nIf you want t"
  },
  {
    "path": "docs/articles/samples/IntroComparableComplexParam.md",
    "chars": 713,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroComparableComplexParam\n---\n\n## Sample: IntroComparableComplexParam\n\nYou can implem"
  },
  {
    "path": "docs/articles/samples/IntroConfigSource.md",
    "chars": 353,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroConfigSource\n---\n\n## Sample: IntroConfigSource\n\nYou can define own config attribut"
  },
  {
    "path": "docs/articles/samples/IntroConfigUnion.md",
    "chars": 310,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroConfigUnion\n---\n\n## Sample: IntroConfigUnion\n\n### Source code\n\n[!code-csharp[Intro"
  },
  {
    "path": "docs/articles/samples/IntroCustomMono.md",
    "chars": 918,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroCustomMono\n---\n\n## Sample: IntroCustomMono\n\nBenchmarkDotNet allows you to compare "
  },
  {
    "path": "docs/articles/samples/IntroCustomMonoArguments.md",
    "chars": 700,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroCustomMonoArguments\n---\n\n## Sample: IntroCustomMonoArguments\n\n\n### Source code\n\n[!"
  },
  {
    "path": "docs/articles/samples/IntroDeferredExecution.md",
    "chars": 1474,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDeferredExecution\n---\n\n## Sample: IntroDeferredExecution\n\nIn LINQ, execution of a "
  },
  {
    "path": "docs/articles/samples/IntroDisassembly.md",
    "chars": 2529,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDisassembly\n---\n\n## Sample: IntroDisassembly\n\n### Source code\n\n[!code-csharp[Intro"
  },
  {
    "path": "docs/articles/samples/IntroDisassemblyAllJits.md",
    "chars": 856,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDisassemblyAllJits\n---\n\n## Sample: IntroDisassemblyAllJits\n\nYou can use a single c"
  },
  {
    "path": "docs/articles/samples/IntroDisassemblyDry.md",
    "chars": 603,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDisassemblyDry\n---\n\n## Sample: IntroDisassemblyDry\n\n**Getting only the Disassembly"
  },
  {
    "path": "docs/articles/samples/IntroDisassemblyRyuJit.md",
    "chars": 411,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDisassemblyRyuJit\n---\n\n## Sample: IntroDisassemblyRyuJit\n\n### Source code\n\n[!code-"
  },
  {
    "path": "docs/articles/samples/IntroDotMemoryDiagnoser.md",
    "chars": 947,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDotMemoryDiagnoser\n---\n\n## Sample: IntroDotMemoryDiagnoser\n\nIf you want to get a m"
  },
  {
    "path": "docs/articles/samples/IntroDotTraceDiagnoser.md",
    "chars": 911,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroDotTraceDiagnoser\n---\n\n## Sample: IntroDotTraceDiagnoser\n\nIf you want to get a per"
  },
  {
    "path": "docs/articles/samples/IntroEnvVars.md",
    "chars": 796,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroEnvVars\n---\n\n## Sample: IntroEnvVars\n\nYou can configure custom environment variabl"
  },
  {
    "path": "docs/articles/samples/IntroEventPipeProfiler.md",
    "chars": 1247,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroEventPipeProfiler\n---\n\n## Sample: EventPipeProfiler\n\nThe `EventPipeProfiler` can "
  },
  {
    "path": "docs/articles/samples/IntroEventPipeProfilerAdvanced.md",
    "chars": 1395,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroEventPipeProfilerAdvanced\n---\n\n## Sample: EventPipeProfilerAdvanced\n\nThe most adv"
  },
  {
    "path": "docs/articles/samples/IntroExceptionDiagnoser.md",
    "chars": 891,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroExceptionDiagnoser\n---\n\n## Sample: IntroExceptionDiagnoser\n\nThe `ExceptionDiagnose"
  },
  {
    "path": "docs/articles/samples/IntroExport.md",
    "chars": 339,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroExport\n---\n\n## Sample: IntroExport\n\nBenchmarkDotNet has a lot of predefined export"
  },
  {
    "path": "docs/articles/samples/IntroExportJson.md",
    "chars": 5491,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroExportJson\n---\n\n## Sample: IntroExportJson\n\nBenchmarkDotNet has a set of json expo"
  },
  {
    "path": "docs/articles/samples/IntroExportXml.md",
    "chars": 3451,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroExportXml\n---\n\n## Sample: IntroExportXml\n\nBenchmarkDotNet has a set of XML exporte"
  },
  {
    "path": "docs/articles/samples/IntroFilters.md",
    "chars": 410,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroFilters\n---\n\n## Sample: IntroFilters\n\nYou can either use one of the predefined `Fi"
  },
  {
    "path": "docs/articles/samples/IntroFluentConfigBuilder.md",
    "chars": 432,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroFluentConfigBuilder\n---\n\n## Sample: IntroFluentConfigBuilder\n\nThere is no need to "
  },
  {
    "path": "docs/articles/samples/IntroGcMode.md",
    "chars": 295,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroGcMode\n---\n\n## Sample: IntroGcMode\n\n### Source code\n\n[!code-csharp[IntroGcMode.cs]"
  },
  {
    "path": "docs/articles/samples/IntroGenericTypeArguments.md",
    "chars": 339,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroGenericTypeArguments\n---\n\n## Sample: IntroGenericTypeArguments\n\n### Source code\n\n["
  },
  {
    "path": "docs/articles/samples/IntroHardwareCounters.md",
    "chars": 1144,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroHardwareCounters\n---\n\n## Sample: IntroHardwareCounters\n\nThis diagnoser is not enab"
  },
  {
    "path": "docs/articles/samples/IntroInProcess.md",
    "chars": 716,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroInProcess\n---\n\n## Sample: IntroInProcess\n\nInProcessEmitToolchain is our toolchain "
  },
  {
    "path": "docs/articles/samples/IntroInProcessWrongEnv.md",
    "chars": 356,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroInProcessWrongEnv\n---\n\n## Sample: IntroInProcessWrongEnv\n\n### Source code\n\n[!code-"
  },
  {
    "path": "docs/articles/samples/IntroInliningDiagnoser.md",
    "chars": 333,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroInliningDiagnoser\n---\n\n## Sample: IntroInliningDiagnoser\n\nThis sample shows how to"
  },
  {
    "path": "docs/articles/samples/IntroJitStatsDiagnoser.md",
    "chars": 1079,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroJitStatsDiagnoser\n---\n\n## Sample: IntroJitStatsDiagnoser\n\nThis diagnoser shows var"
  },
  {
    "path": "docs/articles/samples/IntroJobBaseline.md",
    "chars": 1361,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroJobBaseline\n---\n\n## Sample: IntroJobBaseline\n\nIf you want to compare several runt"
  },
  {
    "path": "docs/articles/samples/IntroJoin.md",
    "chars": 743,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroJoin\n---\n\n## Sample: IntroJoin\n\nIf you are using `BenchmarkSwitcher` and want to r"
  },
  {
    "path": "docs/articles/samples/IntroLargeAddressAware.md",
    "chars": 364,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroLargeAddressAware\ntitle: \"Sample: IntroLargeAddressAware\"\n---\n\n## Sample: IntroLar"
  },
  {
    "path": "docs/articles/samples/IntroMaui.md",
    "chars": 1159,
    "preview": "---\nuid: BenchmarkDotNet.Samples.Maui\n---\n\n## Sample: IntroMaui\n\nTo use BenchmarkDotNet with [.NET MAUI](https://dotnet."
  },
  {
    "path": "docs/articles/samples/IntroMonitoring.md",
    "chars": 1897,
    "preview": "---\n#cspell:ignore runstrategy\nuid: BenchmarkDotNet.Samples.IntroMonitoring\n---\n\n## Sample: IntroMonitoring\n\nIf a benchm"
  },
  {
    "path": "docs/articles/samples/IntroMultimodal.md",
    "chars": 1122,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroMultimodal\n---\n\n## Sample: IntroMultimodal\n\n\n### Source code\n\n[!code-csharp[IntroM"
  },
  {
    "path": "docs/articles/samples/IntroNativeMemory.md",
    "chars": 2227,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroNativeMemory\n---\n\n## Sample: IntroNativeMemory\n\nThe `NativeMemoryProfiler` uses `E"
  },
  {
    "path": "docs/articles/samples/IntroNuGet.md",
    "chars": 967,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroNuGet\n---\n\n## Sample: IntroNuGet\n\nYou can set specific versions of NuGet dependen"
  },
  {
    "path": "docs/articles/samples/IntroOrderAttr.md",
    "chars": 301,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroOrderAttr\n---\n\n## Sample: IntroOrderAttr\n\n### Source code\n\n[!code-csharp[IntroOrde"
  },
  {
    "path": "docs/articles/samples/IntroOrderManual.md",
    "chars": 311,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroOrderManual\n---\n\n## Sample: IntroOrderManual\n\n### Source code\n\n[!code-csharp[Intro"
  },
  {
    "path": "docs/articles/samples/IntroOutliers.md",
    "chars": 827,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroOutliers\n---\n\n## Sample: IntroOutliers\n\n### Source code\n\n[!code-csharp[IntroOutlie"
  },
  {
    "path": "docs/articles/samples/IntroParams.md",
    "chars": 973,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroParams\n---\n\n## Sample: IntroParams\n\nYou can mark one or several fields or properti"
  },
  {
    "path": "docs/articles/samples/IntroParamsAllValues.md",
    "chars": 1294,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroParamsAllValues\n---\n\n## Sample: IntroParamsAllValues\n\nIf you want to use all possi"
  },
  {
    "path": "docs/articles/samples/IntroParamsPriority.md",
    "chars": 906,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroParamsPriority\n---\n\n## Sample: IntroParamsPriority\n\nIn order to sort columns of pa"
  },
  {
    "path": "docs/articles/samples/IntroParamsSource.md",
    "chars": 1510,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroParamsSource\n---\n\n## Sample: IntroParamsSource\n\nIn case you want to use a lot of "
  },
  {
    "path": "docs/articles/samples/IntroPercentiles.md",
    "chars": 3580,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroPercentiles\n---\n\n## Sample: IntroPercentiles\n\nThe percentile represents a higher b"
  },
  {
    "path": "docs/articles/samples/IntroPowerPlan.md",
    "chars": 985,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroPowerPlan\n---\n\n## Sample: IntroPowerPlan\n\nThis sample shows how we can manipulate "
  },
  {
    "path": "docs/articles/samples/IntroRankColumn.md",
    "chars": 782,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroRankColumn\n---\n\n## Sample: IntroRankColumn\n\n\n### Source code\n\n[!code-csharp[IntroR"
  },
  {
    "path": "docs/articles/samples/IntroRatioSD.md",
    "chars": 2421,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroRatioSD\n---\n\n## Sample: IntroRatioSD\n\nThe ratio of two benchmarks is not a single "
  },
  {
    "path": "docs/articles/samples/IntroRatioStyle.md",
    "chars": 1987,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroRatioStyle\n---\n\n## Sample: IntroRatioStyle\n\nUsing `RatioStyle`, we can override th"
  },
  {
    "path": "docs/articles/samples/IntroSetupCleanupGlobal.md",
    "chars": 990,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroSetupCleanupGlobal\n---\n\n## Sample: IntroSetupCleanupGlobal\n\nA method which is mark"
  },
  {
    "path": "docs/articles/samples/IntroSetupCleanupIteration.md",
    "chars": 2155,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroSetupCleanupIteration\n---\n\n## Sample: IntroSetupCleanupIteration\n\nA method which i"
  },
  {
    "path": "docs/articles/samples/IntroSetupCleanupTarget.md",
    "chars": 741,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroSetupCleanupTarget\n---\n\n## Sample: IntroSetupCleanupTarget\n\nSometimes it's useful "
  },
  {
    "path": "docs/articles/samples/IntroStaThread.md",
    "chars": 698,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroStaThread\n---\n\n## Sample: IntroStaThread\n\nIf the code you want to benchmark requir"
  },
  {
    "path": "docs/articles/samples/IntroStatisticalTesting.md",
    "chars": 2700,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroStatisticalTesting\n---\n\n## Sample: IntroStatisticalTesting\n\n### Source code\n\n[!cod"
  },
  {
    "path": "docs/articles/samples/IntroStatisticsColumns.md",
    "chars": 788,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroStatisticsColumns\n---\n\n## Sample: IntroStatisticsColumns\n\n\n### Source code\n\n[!code"
  },
  {
    "path": "docs/articles/samples/IntroStopOnFirstError.md",
    "chars": 530,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroStopOnFirstError\n---\n\n## Sample: IntroStopOnFirstError\n\nBenchmarkDotNet can be con"
  },
  {
    "path": "docs/articles/samples/IntroSummaryStyle.md",
    "chars": 1880,
    "preview": "---\nuid: BenchmarkDotNet.SummaryStyle\n---\n\n## SummaryStyle in BenchmarkDotNet\n\n`SummaryStyle` is a class in BenchmarkDot"
  },
  {
    "path": "docs/articles/samples/IntroTagColumn.md",
    "chars": 680,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroTagColumn\n---\n\n## Sample: IntroTagColumn\n\nIn the following example, we introduce t"
  },
  {
    "path": "docs/articles/samples/IntroTailcall.md",
    "chars": 1305,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroTailcall\n---\n\n## Sample: IntroTailcall\n\nYou need to use the `TailcallDiagnoser` at"
  },
  {
    "path": "docs/articles/samples/IntroTemplate.txt",
    "chars": 284,
    "preview": "---\nuid: BenchmarkDotNet.Samples.SAMPLENAME\n---\n\n## Sample: SAMPLENAME\n\n### Source code\n\n[!code-csharp[SAMPLENAME.cs](.."
  },
  {
    "path": "docs/articles/samples/IntroThreadingDiagnoser.md",
    "chars": 1056,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroThreadingDiagnoser\n---\n\n## Sample: IntroThreadingDiagnoser\n\nThe `ThreadingDiagnose"
  },
  {
    "path": "docs/articles/samples/IntroUnicode.md",
    "chars": 1726,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroUnicode\n---\n\n## Sample: IntroUnicode\n\nSome of the BenchmarkDotNet exporters use Un"
  },
  {
    "path": "docs/articles/samples/IntroVisualStudioProfiler.md",
    "chars": 1203,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroVisualStudioProfiler\n---\n\n## Sample: Visual Studio Profiler\n\nUsing the [Microsoft."
  },
  {
    "path": "docs/articles/samples/IntroWakeLock.md",
    "chars": 591,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroWakeLock\n---\n\n## Sample: IntroWakeLock\n\nRunning benchmarks may sometimes take enou"
  },
  {
    "path": "docs/articles/samples/IntroWasm.md",
    "chars": 561,
    "preview": "---\nuid: BenchmarkDotNet.Samples.IntroWasm\n---\n\n## Sample: IntroWasm\n\n`WasmToolchain` builds benchmarks as WebAssembly a"
  },
  {
    "path": "docs/articles/samples/toc.yml",
    "chars": 3809,
    "preview": "- name: IntroArguments\n  href: IntroArguments.md\n- name: IntroArgumentsSource\n  href: IntroArgumentsSource.md\n- name: In"
  },
  {
    "path": "docs/articles/team.md",
    "chars": 424,
    "preview": "# Team\n\nMaintainers:\n  [Andrey Akinshin](https://github.com/AndreyAkinshin) (Project Lead),\n  [Adam Sitnik](https://gith"
  },
  {
    "path": "docs/articles/toc.yml",
    "chars": 377,
    "preview": "- name: Overview\n  href: overview.md\n- name: Guides\n  href: guides/toc.yml\n- name: Features\n  href: features/toc.yml\n- n"
  },
  {
    "path": "docs/docfx.json",
    "chars": 2004,
    "preview": "{\n  \"metadata\": [\n    {\n      \"src\": [\n        {\n          \"files\": [\n            \"src/BenchmarkDotNet/bin/Release/netst"
  },
  {
    "path": "docs/filter.yml",
    "chars": 124,
    "preview": "apiRules:\n- exclude:\n    uidRegex: ^System\\.Object\n    type: member # Avoid list of inherited Object members for each ty"
  },
  {
    "path": "docs/guide/README.md",
    "chars": 206,
    "preview": "Old versions of the NuGet package use `https://raw.githubusercontent.com/dotnet/BenchmarkDotNet/master/docs/guide/logo.p"
  },
  {
    "path": "docs/template/public/main.css",
    "chars": 114,
    "preview": "#logo {\n  width: 50px;\n  height: 50px;\n}\n\n#breadcrumb {\n  display: none;\n}\n\n.affix {\n  display: none !important;\n}"
  },
  {
    "path": "docs/template/public/main.js",
    "chars": 375,
    "preview": "export default {\n  iconLinks: [\n    {\n      icon: 'github',\n      href: 'https://github.com/dotnet/BenchmarkDotNet',\n   "
  },
  {
    "path": "docs/toc.yml",
    "chars": 152,
    "preview": "- name: Articles\n  href: articles/\n- name: API\n  href: api/\n  homepage: api/index.md\n- name: ChangeLog\n  href: changelog"
  },
  {
    "path": "samples/BenchmarkDotNet.Maui.slnx",
    "chars": 476,
    "preview": "<Solution>\n  <Configurations>\n    <Platform Name=\"Any CPU\" />\n    <Platform Name=\"x64\" />\n    <Platform Name=\"x86\" />\n  "
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/BenchmarkDotNet.Samples.csproj",
    "chars": 2653,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <Import Project=\"..\\..\\build\\common.props\" />\n  <PropertyGroup>\n    <AssemblyTitle>"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/BenchmarkDotNet.Samples.csproj.DotSettings",
    "chars": 3802,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroArguments.cs",
    "chars": 589,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet.Samples\n{\n    public class IntroArg"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroArgumentsPriority.cs",
    "chars": 814,
    "preview": "using System.Collections.Generic;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet."
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroArgumentsSource.cs",
    "chars": 1252,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace Ben"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroArrayParam.cs",
    "chars": 923,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing BenchmarkDotNet.Attributes;\n\nnamespace Benchmar"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroBasic.cs",
    "chars": 520,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet.Samples\n{\n    // It is very easy t"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroBenchmarkBaseline.cs",
    "chars": 382,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet.Samples\n{\n    public class IntroBe"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroCategories.cs",
    "chars": 736,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet.Samples\n{\n    [DryJob]\n    [Categor"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroCategoryBaseline.cs",
    "chars": 695,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Configs;\n\nnamespace BenchmarkDotNet.Sam"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroCategoryDiscoverer.cs",
    "chars": 1295,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing BenchmarkDotNet.Attributes;\nusing Benchma"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroColdStart.cs",
    "chars": 633,
    "preview": "using System;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Engines;\n\nnamespace Bench"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroComparableComplexParam.cs",
    "chars": 1359,
    "preview": "using System;\nusing System.Collections.Generic;\nusing BenchmarkDotNet.Attributes;\n\nnamespace BenchmarkDotNet.Samples\n{\n"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroConfigSource.cs",
    "chars": 972,
    "preview": "using System;\nusing System.Linq;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Config"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroConfigUnion.cs",
    "chars": 962,
    "preview": "using System.Threading;\nusing BenchmarkDotNet.Analysers;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Column"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroCultureInfo.cs",
    "chars": 590,
    "preview": "using System.Globalization;\nusing System.Threading;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Configs;\n\nna"
  },
  {
    "path": "samples/BenchmarkDotNet.Samples/IntroCustomMono.cs",
    "chars": 2647,
    "preview": "using BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Configs;\nusing BenchmarkDotNet.Environments;\nusing BenchmarkDot"
  }
]

// ... and 1133 more files (download for full content)

About this extraction

This page contains the full source code of the dotnet/BenchmarkDotNet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1333 files (4.6 MB), approximately 1.3M tokens, and a symbol index with 7885 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!