Full Code of IsoFrieze/DiztinGUIsh for AI

master 81b3eac97c4a cached
242 files
1.3 MB
366.9k tokens
1789 symbols
1 requests
Download .txt
Showing preview only (1,398K chars total). Download the full file or copy to clipboard to get everything.
Repository: IsoFrieze/DiztinGUIsh
Branch: master
Commit: 81b3eac97c4a
Files: 242
Total size: 1.3 MB

Directory structure:
gitextract_mof0964c/

├── .gitattributes
├── .github/
│   └── workflows/
│       └── dotnet.yml
├── .gitignore
├── .gitmodules
├── .idea/
│   └── .idea.DiztinGUIsh/
│       └── .idea/
│           ├── .gitignore
│           ├── .name
│           ├── encodings.xml
│           ├── indexLayout.xml
│           └── vcs.xml
├── .run/
│   ├── Diz.Ui.Eto (Experimental GUI, don't use).run.xml
│   └── DiztinGUIsh - WinForms (USE THIS).run.xml
├── Directory.Build.targets
├── Diz.App.Common/
│   ├── Diz.App.Common.csproj
│   ├── DizAppCompositionRoot.cs
│   ├── Main.cs
│   └── Properties/
│       └── AssemblyInfo.cs
├── Diz.App.Eto/
│   ├── Diz.App.Eto.csproj
│   ├── DizAppEtoCompositionRoot.cs
│   ├── DizEtoApp.cs
│   ├── Program.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   └── RegisterWinformsServices.cs
├── Diz.App.PowerShell/
│   ├── Cmdlets.cs
│   ├── Diz.App.PowerShell.csproj
│   ├── DizPowerShellCompositionRoot.cs
│   ├── DizPowershellLogger.cs
│   ├── ProjectFileAssemblyExporter.cs
│   ├── ProjectFileReader.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   └── launchSettings.json
│   ├── PsInterfaces.cs
│   ├── ServiceContainerCmdletBase.cs
│   ├── packages.lock.json
│   └── runner/
│       └── debug-startup.ps1
├── Diz.App.Winforms/
│   ├── App.config
│   ├── AppVersionInfo.cs
│   ├── Diz.App.Winforms.csproj
│   ├── Diz.App.Winforms.csproj.DotSettings
│   ├── DizAppWinformsCompositionRoot.cs
│   ├── Program.cs
│   ├── Properties/
│   │   ├── Annotations.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── PublishProfiles/
│   │   │   └── FolderProfile.pubxml
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── RegisterWinformsServices.cs
│   ├── build/
│   │   └── TidyPublishDir.targets
│   ├── dist/
│   │   └── docs/
│   │       ├── HELP.md
│   │       ├── Library Licenses.txt
│   │       └── hardware_registers.csv
│   ├── licensing/
│   │   └── Library Licenses.xlsx
│   └── packages.lock.json
├── Diz.Controllers/
│   ├── Diz.Controllers/
│   │   ├── Diz.Controllers.csproj
│   │   ├── packages.lock.json
│   │   └── src/
│   │       ├── AssemblyInfo.cs
│   │       ├── controllers/
│   │       │   ├── IImportRomDialogController.cs
│   │       │   ├── IProjectView.cs
│   │       │   ├── ImportROMDialogController.cs
│   │       │   ├── LogCreatorExportSettingsEditorController.cs
│   │       │   ├── MarkManyController.cs
│   │       │   ├── NavigationEntry.cs
│   │       │   ├── ProgressBarWorker.cs
│   │       │   ├── ProjectController.cs
│   │       │   ├── ProjectOpenerGuiController.cs
│   │       │   ├── ProjectsController.cs
│   │       │   └── StartFormController.cs
│   │       ├── interfaces/
│   │       │   ├── IControllers.cs
│   │       │   ├── IViewers.cs
│   │       │   └── Interfaces.cs
│   │       ├── services/
│   │       │   └── Registration.cs
│   │       └── util/
│   │           ├── DizDocument.cs
│   │           ├── LargeFilesReader.cs
│   │           └── RomByteRowBase.cs
│   ├── Diz.Controllers.Test/
│   │   └── Diz.Controllers.Test/
│   │       ├── Diz.Controllers.Test.csproj
│   │       └── src/
│   │           ├── ImportRomDialogontroller.cs
│   │           └── LogCreatorSettingsEditorControllerTests.cs
│   └── packages.lock.json
├── Diz.Core/
│   ├── Diz.Core.csproj
│   ├── Interfaces.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── app.config
│   ├── commands/
│   │   └── Commands.cs
│   ├── datasubset/
│   │   ├── DataSubset.cs
│   │   ├── DataSubsetSupport.cs
│   │   └── DataSubsetWithSelection.cs
│   ├── export/
│   │   ├── LogWriterSettings.cs
│   │   └── LogWriterSettingsValidator.cs
│   ├── model/
│   │   ├── Annotation.cs
│   │   ├── ArchProvider.cs
│   │   ├── Extensions.cs
│   │   ├── LabelProvider.cs
│   │   ├── Project.cs
│   │   ├── ProjectFactory.cs
│   │   ├── ProjectImportSettingsFactory.cs
│   │   ├── ROMByte.cs
│   │   ├── RomBytes.cs
│   │   ├── project/
│   │   │   ├── DataUtils.cs
│   │   │   ├── LinkedRomBytesFileSearchProvider.cs
│   │   │   └── ProjectRomBytesInit.cs
│   │   └── snes/
│   │       ├── Data.cs
│   │       └── DataTags.cs
│   ├── packages.lock.json
│   ├── serialization/
│   │   ├── FileByteProviderMultipleFiles.cs
│   │   ├── FileByteProviderSingleFile.cs
│   │   ├── ImportSettings.cs
│   │   ├── ProjectFileManager.cs
│   │   ├── ProjectSerializer.cs
│   │   ├── binary_serializer_old/
│   │   │   └── BinarySerializer.cs
│   │   └── xml_serializer/
│   │       ├── MigrationRunner.cs
│   │       ├── PostSerializeMigrations.cs
│   │       ├── ProjectXMLSerializer.cs
│   │       ├── RepeaterCompression.cs
│   │       ├── RomByteEncoding.cs
│   │       ├── RomBytesXMLSerializer.cs
│   │       ├── SubstitutionCompression.cs
│   │       ├── XMLSerializerSupport.cs
│   │       └── XmlSerializerFactory.cs
│   ├── services/
│   │   └── CoreServices.cs
│   ├── util/
│   │   ├── ByteUtil.cs
│   │   ├── ChecksumUtil.cs
│   │   ├── CorrectingRange.cs
│   │   ├── Fake64Encoding.cs
│   │   ├── FsUtils.cs
│   │   ├── LabelSearchTerms.cs
│   │   ├── ParentAwareCollection.cs
│   │   ├── Profiler.cs
│   │   ├── RomUtil.cs
│   │   ├── ServiceProvider.cs
│   │   ├── Util.cs
│   │   └── WorkerTaskManager.cs
│   └── vendor/
│       └── LightInject.AutoFactory.cs
├── Diz.Core.Interfaces/
│   ├── AssemblyInfo.cs
│   ├── CpuInterfaces.cs
│   ├── Diz.Core.Interfaces.csproj
│   ├── Enums.cs
│   ├── LabelInterfaces.cs
│   ├── ModelInterfaces.cs
│   ├── OtherInterfaces.cs
│   └── packages.lock.json
├── Diz.Cpu.65816/
│   ├── Diz.Cpu.65816.csproj
│   ├── packages.lock.json
│   └── src/
│       ├── AddRomDataCommand.cs
│       ├── AddRomDataCommandValidator.cs
│       ├── AssemblyInfo.cs
│       ├── AutoStepper65816.cs
│       ├── CPU65C816.cs
│       ├── Cpu.cs
│       ├── CpuDispatcher.cs
│       ├── CpuUtils.cs
│       ├── CpuVectorTable.cs
│       ├── DataAddSnesApiDecorator.cs
│       ├── SampleRomData.cs
│       ├── ServiceRegistration.cs
│       ├── SnesData.cs
│       └── import/
│           ├── CachedVectorTableEntries.cs
│           ├── ISnesRomImportSettingsBuilder.cs
│           ├── ImportRomSettingsBuilder.cs
│           ├── ImportUtils.cs
│           ├── MigrationBugfix050JapaneseText.cs
│           ├── MigrationNoOp.cs
│           ├── SnesDefaultSettingsFactory.cs
│           ├── SnesRomAnalyzer.cs
│           └── SnesVectorNames.cs
├── Diz.Import/
│   ├── Diz.Import.csproj
│   ├── packages.lock.json
│   └── src/
│       ├── AssemblyInfo.cs
│       ├── LabelImporter.cs
│       ├── LabelImporterCsv.cs
│       ├── ServiceRegistration.cs
│       ├── bizhawk/
│       │   └── BizHawkCdlImporter.cs
│       └── bsnes/
│           ├── BsnesSymbolLabelImporter.cs
│           ├── tracelog/
│           │   ├── BSNESImportStreamProcessor.cs
│           │   ├── BSNESTraceLogCapture.cs
│           │   ├── BSNESTraceLogImporter.cs
│           │   ├── BsnesTraceLogImporter.Caching.cs
│           │   ├── BsnesTraceLogImporter.ModificationsList.cs
│           │   ├── BsnesTraceLogImporter.Parsers.cs
│           │   ├── BsnesTraceLogImporter.Stats.cs
│           │   └── BsnesTraceLogImporter.Util.cs
│           └── usagemap/
│               └── BSNESUsageMapImporter.cs
├── Diz.Test/
│   ├── Diz.Test.csproj
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Resources/
│   │   ├── asartestrun.asm
│   │   ├── emptyrom.asm
│   │   ├── samplerom-a-few-lines.asm
│   │   └── serialize-dictionary-test.xml
│   ├── Tests/
│   │   ├── LogCreatorTests/
│   │   │   ├── AssemblyStrings.cs
│   │   │   └── LogCreator.cs
│   │   ├── PerformanceTests/
│   │   │   └── TraceLogPerformanceTests.cs
│   │   ├── ProjectSessionTest.cs
│   │   ├── RomInterfaceTests/
│   │   │   ├── AccessTests.cs
│   │   │   ├── CartTitleTests.cs
│   │   │   └── TestServiceInterfaces.cs
│   │   ├── RomModeDetectionTests.cs
│   │   ├── SerializationTests/
│   │   │   ├── CompressionTest.cs
│   │   │   ├── LoadSavePerformanceTests.cs
│   │   │   ├── MigrationTests.cs
│   │   │   ├── ProjectLoadSaveTest.cs
│   │   │   ├── ProjectServicesTests.cs
│   │   │   └── RomByteTests.cs
│   │   ├── TracelogTests/
│   │   │   └── TraceLogTests.cs
│   │   └── UtilsTests/
│   │       ├── OptimizedHexConversionTests.cs
│   │       └── SuperFamiCheckTests.cs
│   ├── Utils/
│   │   ├── AppServicesForTests.cs
│   │   ├── AsarRunner.cs
│   │   ├── AssemblyPipelineTester.cs
│   │   ├── BenchmarkXunitLogger.cs
│   │   ├── CorrectingRangeTests.cs
│   │   ├── DizTestCompositionRoot.cs
│   │   ├── EmbeddedResourceDataAttribute.cs
│   │   ├── EmptyRomTestData.cs
│   │   ├── ExternalRunners.cs
│   │   ├── ExternalToolRunner.cs
│   │   ├── LogWriterHelper.cs
│   │   ├── ServiceContainerFixture.cs
│   │   ├── SuperFamiCheckUtil/
│   │   │   ├── DizSuperFamiCheckParse.cs
│   │   │   └── SuperFamiCheck.cs
│   │   ├── TestUtil.cs
│   │   ├── XmlTestUtilBase.cs
│   │   └── XmlTestUtils.cs
│   ├── app.config
│   ├── bugs/
│   │   ├── Bug050_JapaneseText.cs
│   │   └── FileIoFixture.cs
│   ├── external-tools/
│   │   └── distribution info.txt
│   └── packages.lock.json
├── Diz.Ui.Eto/
│   ├── Diz.Ui.Eto.csproj
│   ├── DizEtoAppSettingsProvider.cs
│   ├── DizUiEtoCompositionRoot.cs
│   ├── EtoCommonGui.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   └── ui/
│       ├── EtoMainGridForm.cs
│       ├── EtoProgressForm.cs
│       └── PlaceholderForm.cs
├── Diz.Ui.Views/
│   ├── Diz.Ui.Views.csproj
│   └── ProjectViewer.cs
├── DiztinGUIsh.sln
├── DiztinGUIsh.sln.DotSettings
├── LICENSE.md
├── README.md
├── TRACE CAPTURE INSTRUCTIONS.md
├── contributing.md
└── global.json

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

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .github/workflows/dotnet.yml
================================================
name: Build App

on: [ push, pull_request ]

jobs:

  build:

    runs-on: windows-latest

    steps:
      - name: Inject slug/short variables
        uses: rlespinasse/github-slug-action@v3.x

      - name: Get current date
        id: date
        run: echo "::set-output name=date::$(date +'%Y-%m-%d')"

      - name: Set version string
        id: ver
        run: echo "::set-output name=ver::DiztinGUIsh-${{ steps.date.outputs.date }}--${{ env.GITHUB_REF_SLUG }}-${{ env.GITHUB_SHA_SHORT }}-${{env.GITHUB_REPOSITORY_OWNER_PART_SLUG != 'isofrieze' && env.GITHUB_REPOSITORY_OWNER_PART_SLUG || 'official'}}"

      - name: Print version
        run: echo "version ${{ steps.ver.outputs.ver }}"

      - name: Checkout
        uses: actions/checkout@v2
        with:
          submodules: 'recursive'
          fetch-depth: 0  # Fetch all history for all tags

      - name: Auto-bump version and create tag on release branch
        if: github.ref == 'refs/heads/release' && github.event_name == 'push'
        run: |
          # Get the latest tag
          $latestTag = git describe --tags --abbrev=0 2>$null
          if (-not $latestTag) {
            $latestTag = "v0.0.0.0"
          }
          
          Write-Host "Latest tag: $latestTag"
          
          # Extract version numbers (remove 'v' prefix)
          $version = $latestTag.Substring(1)
          $versionParts = $version.Split('.')
          
          # Ensure we have 4 parts (major.minor.patch.build)
          while ($versionParts.Length -lt 4) {
            $versionParts += "0"
          }
          
          # Bump the patch version (third number) and reset build to 0
          $major = [int]$versionParts[0]
          $minor = [int]$versionParts[1]
          $patch = [int]$versionParts[2] + 1
          $build = 0
          
          $newVersion = "$major.$minor.$patch.$build"
          $newTag = "v$newVersion"
          
          Write-Host "New tag: $newTag"
          
          # Configure git
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          
          # Create and push the new tag
          git tag $newTag
          git push origin $newTag
        shell: powershell

      - name: Setup dotnet
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: 9.0.x
      
      # not currently working consistently, don't cache
      #    - name: Nuget (restore from cache)
      #      uses: actions/cache@v1
      #      id: cache
      #      with:
      #        path: ~/.nuget/packages
      #        key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
      #    
      #    - name: NuGet (Restore from scratch if needed)
      #      if: steps.cache.outputs.cache-hit != 'true'
      #      run: dotnet restore --locked-mode

      - name: NuGet (Restore always from scratch)
        run: dotnet restore --locked-mode

      - name: Build
        run: dotnet build --no-restore --configuration Release

      - name: Test
        run: dotnet test --no-build --configuration Release

      # removed --no-restore on this for simplicity. it's a little more wasteful potentially though
      - name: Publish
        run: dotnet publish -c Release -r win-x64  --self-contained true /p:PublishProfile=FolderProfile /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true .\Diz.App.Winforms

      - uses: vimtor/action-zip@v1.2
        with:
          files: Diz.App.Winforms\bin\Release\net9.0-windows\publish\
          dest: ${{ steps.ver.outputs.ver }}.zip

      - name: Upload Artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ steps.ver.outputs.ver }}.zip
          path: ${{ steps.ver.outputs.ver }}.zip

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: ${{ steps.ver.outputs.ver }}.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

================================================
FILE: .gitignore
================================================
# CUSTOM STUFF
DiztinGUIsh/test/
diztinguish.zip
act.exe

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
# *.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
#.idea/
#*.sln.iml

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/





# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

================================================
FILE: .gitmodules
================================================
[submodule "Diz.LogWriter"]
	path = Diz.LogWriter
	url = https://github.com/DizTools/Diz.LogWriter
[submodule "Diz.Ui.Winforms"]
	path = Diz.Ui.Winforms
	url = https://github.com/DizTools/Diz.Ui.Winforms


================================================
FILE: .idea/.idea.DiztinGUIsh/.idea/.gitignore
================================================
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/modules.xml
/contentModel.xml
/.idea.DiztinGUIsh.iml
/projectSettingsUpdater.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml


================================================
FILE: .idea/.idea.DiztinGUIsh/.idea/.name
================================================
DiztinGUIsh

================================================
FILE: .idea/.idea.DiztinGUIsh/.idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

================================================
FILE: .idea/.idea.DiztinGUIsh/.idea/indexLayout.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="UserContentModel">
    <attachedFolders />
    <explicitIncludes />
    <explicitExcludes />
  </component>
</project>

================================================
FILE: .idea/.idea.DiztinGUIsh/.idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
    <mapping directory="$PROJECT_DIR$/Diz.LogWriter" vcs="Git" />
    <mapping directory="$PROJECT_DIR$/Diz.Ui.Winforms" vcs="Git" />
  </component>
</project>

================================================
FILE: .run/Diz.Ui.Eto (Experimental GUI, don't use).run.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="Diz.Ui.Eto (Experimental GUI, don't use)" type="DotNetProject" factoryName=".NET Project">
    <option name="EXE_PATH" value="$PROJECT_DIR$/Diz.App.Eto/bin/Debug/net9.0-windows/Diz.App.Eto.exe" />
    <option name="PROGRAM_PARAMETERS" value="" />
    <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Diz.App.Eto/bin/Debug/net9.0-windows" />
    <option name="PASS_PARENT_ENVS" value="1" />
    <option name="USE_EXTERNAL_CONSOLE" value="0" />
    <option name="USE_MONO" value="0" />
    <option name="RUNTIME_ARGUMENTS" value="" />
    <option name="PROJECT_PATH" value="$PROJECT_DIR$/Diz.App.Eto/Diz.App.Eto.csproj" />
    <option name="PROJECT_EXE_PATH_TRACKING" value="1" />
    <option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
    <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
    <option name="PROJECT_KIND" value="DotNetCore" />
    <option name="PROJECT_TFM" value="net9.0-windows" />
    <method v="2">
      <option name="Build" />
    </method>
  </configuration>
</component>

================================================
FILE: .run/DiztinGUIsh - WinForms (USE THIS).run.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="DiztinGUIsh - WinForms (USE THIS)" type="DotNetProject" factoryName=".NET Project">
    <option name="EXE_PATH" value="$PROJECT_DIR$/Diz.App.Winforms/bin/Debug/net9.0-windows/win-x64/Diz.App.Winforms.exe" />
    <option name="PROGRAM_PARAMETERS" value="" />
    <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/Diz.App.Winforms/bin/Debug/net9.0-windows/win-x64" />
    <option name="PASS_PARENT_ENVS" value="1" />
    <option name="USE_EXTERNAL_CONSOLE" value="0" />
    <option name="ENV_FILE_PATHS" value="" />
    <option name="REDIRECT_INPUT_PATH" value="" />
    <option name="PTY_MODE" value="Auto" />
    <option name="USE_MONO" value="0" />
    <option name="RUNTIME_ARGUMENTS" value="" />
    <option name="AUTO_ATTACH_CHILDREN" value="0" />
    <option name="MIXED_MODE_DEBUG" value="0" />
    <option name="PROJECT_PATH" value="$PROJECT_DIR$/Diz.App.Winforms/Diz.App.Winforms.csproj" />
    <option name="PROJECT_EXE_PATH_TRACKING" value="1" />
    <option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
    <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
    <option name="PROJECT_KIND" value="DotNetCore" />
    <option name="PROJECT_TFM" value="net9.0-windows" />
    <method v="2">
      <option name="Build" />
    </method>
  </configuration>
</component>

================================================
FILE: Directory.Build.targets
================================================
<Project>
    <PropertyGroup>
        <DefineConstants>$(DefineConstants)</DefineConstants>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
        <DefineConstants>$(DefineConstants);DEBUG;TRACE</DefineConstants>
    </PropertyGroup>
</Project>

================================================
FILE: Diz.App.Common/Diz.App.Common.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net9.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="JetBrains.Annotations">
        <Version>2023.3.0</Version>
      </PackageReference>
      <PackageReference Include="LightInject">
        <Version>6.6.4</Version>
      </PackageReference>
    </ItemGroup>

    <ItemGroup>
      <ProjectReference Include="..\Diz.Controllers\Diz.Controllers\Diz.Controllers.csproj" />
    </ItemGroup>

</Project>


================================================
FILE: Diz.App.Common/DizAppCompositionRoot.cs
================================================
using Diz.Controllers.interfaces;
using Diz.Controllers.services;
using Diz.Core.services;
using Diz.Cpu._65816;
using Diz.Import;
using Diz.LogWriter.services;
using JetBrains.Annotations;
using LightInject;

namespace Diz.App.Common;

[UsedImplicitly] public class DizAppCommonCompositionRoot : ICompositionRoot
{
    public void Compose(IServiceRegistry serviceRegistry)
    {
        // no platform-specific stuff in here.
        // i.e. no winforms/QT/etc.
        
        // the (string) names of the views above will be mapped to the method names of the interface below.
        // i.e. calling IViewFactory.GetLabelEditorView() will look for somthing named "LabelEditorView"
        serviceRegistry.EnableAutoFactories();
        
        serviceRegistry.RegisterFrom<DizCoreServicesCompositionRoot>();
        serviceRegistry.RegisterFrom<DizControllersCompositionRoot>();
        serviceRegistry.RegisterFrom<DizCpu65816ServiceRoot>();
        serviceRegistry.RegisterFrom<DizImportServiceRegistration>();
        serviceRegistry.RegisterFrom<LogWriterServiceRegistration>();
        
        serviceRegistry.RegisterAutoFactory<IViewFactory>();
    }
}

================================================
FILE: Diz.App.Common/Main.cs
================================================
using Diz.Controllers.interfaces;
using LightInject;

namespace Diz.App.Common;

public static class DizAppCommon
{
    public static void StartApp(IServiceFactory serviceFactory, string[] args)
    {
        // platform-independent app startup 
        var dizApp = serviceFactory.GetInstance<IDizApp>();
        
        var fileToOpen = "";
        if (args.Length > 0)
            fileToOpen = args[0];
        
        dizApp.Run(fileToOpen);
    }
}

================================================
FILE: Diz.App.Common/Properties/AssemblyInfo.cs
================================================
using Diz.App.Common;
using LightInject;

[assembly: CompositionRootType(typeof(DizAppCommonCompositionRoot))]

================================================
FILE: Diz.App.Eto/Diz.App.Eto.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net9.0-windows</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="JetBrains.Annotations">
        <Version>2023.3.0</Version>
      </PackageReference>
      <PackageReference Include="LightInject">
        <Version>6.6.4</Version>
      </PackageReference>
        <PackageReference Include="GitInfo">
            <Version>3.3.3</Version>
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
    </ItemGroup>

    <ItemGroup>
      <ProjectReference Include="..\Diz.App.Common\Diz.App.Common.csproj" />
      <ProjectReference Include="..\Diz.Core\Diz.Core.csproj" />
      <ProjectReference Include="..\Diz.Ui.Eto\Diz.Ui.Eto.csproj" />
    </ItemGroup>

</Project>


================================================
FILE: Diz.App.Eto/DizAppEtoCompositionRoot.cs
================================================
using Diz.App.Common;
using Diz.Controllers.interfaces;
using Diz.Ui.Eto;
using JetBrains.Annotations;
using LightInject;

namespace Diz.App.Eto;

[UsedImplicitly] public class DizAppEtoCompositionRoot : ICompositionRoot
{
    public void Compose(IServiceRegistry serviceRegistry)
    {
        serviceRegistry.RegisterFrom<DizAppCommonCompositionRoot>();
        
        serviceRegistry.Register<IDizApp, DizEtoApp>();
        serviceRegistry.Register<ICommonGui, EtoCommonGui>();
    }
}

================================================
FILE: Diz.App.Eto/DizEtoApp.cs
================================================
using System.Diagnostics;
using Diz.Controllers.interfaces;
using Diz.Ui.Eto.ui;
using Eto.Forms;

namespace Diz.App.Eto;

public class DizEtoApp(IViewFactory viewFactory) : IDizApp
{
    public void Run(string initialProjectFileToOpen = "")
    {
        var application = new Application();
        
        var mainWindow = viewFactory.GetMainGridWindowView();

        // janky casting
        // ReSharper disable once SuspiciousTypeConversion.Global
        var window = mainWindow as EtoMainGridForm;
        Debug.Assert(window != null);
        
        if (initialProjectFileToOpen != "") {
            window.ProjectController.OpenProject(initialProjectFileToOpen);
        }

        application.Run(window);
    }
}

================================================
FILE: Diz.App.Eto/Program.cs
================================================
using Diz.App.Common;

namespace Diz.App.Eto;

internal static class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        var serviceFactory = DizEtoRegisterServices.CreateServiceFactoryAndRegisterTypes();
        DizAppCommon.StartApp(serviceFactory, args);
    }
}

================================================
FILE: Diz.App.Eto/Properties/AssemblyInfo.cs
================================================
using Diz.App.Eto;
using LightInject;

[assembly: CompositionRootType(typeof(DizAppEtoCompositionRoot))]

================================================
FILE: Diz.App.Eto/RegisterWinformsServices.cs
================================================
using Diz.App.Common;
using Diz.Core.util;
using Diz.Ui.Eto;
using LightInject;

namespace Diz.App.Eto;

public static class DizEtoRegisterServices
{
    public static IServiceFactory CreateServiceFactoryAndRegisterTypes()
    {
        var serviceProvider = DizServiceProvider.CreateServiceContainer();
        RegisterDizUiServices(serviceProvider);
        
        return serviceProvider;
    }

    public static void RegisterDizUiServices(IServiceRegistry serviceRegistry)
    {
        // option #1: we can simply register services in any Diz*dll's that are found in a scan.
        // this is easy but we have less control
        // DizCoreServicesDllRegistration.RegisterServicesInDizDlls(serviceRegistry);

        // option #2: register everything by hand (this is what we'll do).
        
        // pull in all common stuff (platform-independent)
        serviceRegistry.RegisterFrom<DizAppCommonCompositionRoot>();
        
        // pull in winforms-specific UI stuff:
        serviceRegistry.RegisterFrom<DizUiEtoCompositionRoot>();
        
        // finally, pull in OUR stuff, which is winforms-specific
        serviceRegistry.RegisterFrom<DizAppEtoCompositionRoot>();
    }
}

================================================
FILE: Diz.App.PowerShell/Cmdlets.cs
================================================
#nullable enable

using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Management.Automation;
using Diz.Core;
using JetBrains.Annotations;
using LightInject;

namespace Diz.PowerShell;

[UsedImplicitly]
[Cmdlet(VerbsLifecycle.Build, "AssemblyFiles")]
public class BuildAssemblyFilesCmdlet : ServiceContainerCmdletBase
{
    [Parameter(Position = 0)]
    [ValidateNotNullOrEmpty]
    public string[]? ProjectNames { get; set; } = null;
    
    protected override void ProcessRecord()
    {
        if (ProjectNames == null)
            return;

        if (ProjectNames.Length <= 0)
            return;

        foreach (var projectName in ProjectNames)
        {
            BuildAssembly(projectName);
        }
    }

    [SuppressMessage("ReSharper", "UnusedMethodReturnValue.Local")]
    private bool BuildAssembly(string projectFileName)
    {
        // this ONE TIME, this service locator anti-pattern is OK because we ARE the top-level class.
        var projectFileAssemblyExporter = ServiceContainer.GetInstance<IProjectFileAssemblyExporter>();
        Debug.Assert(projectFileAssemblyExporter != null);
        return projectFileAssemblyExporter.ExportAssembly(projectFileName);
    }

    protected override void StopProcessing() {}
    protected override void EndProcessing() {}
}

================================================
FILE: Diz.App.PowerShell/Diz.App.PowerShell.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
    <GitThisAssemblyMetadata>true</GitThisAssemblyMetadata>
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
    <GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
    <Nullable>enable</Nullable>
    <RootNamespace>Diz.PowerShell</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="GitInfo" Version="3.3.3">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="LightInject" Version="6.6.4" />
    <PackageReference Include="System.Management.Automation" Version="7.4.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Diz.Core\Diz.Core.csproj" />
    <ProjectReference Include="..\Diz.LogWriter\Diz.LogWriter.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: Diz.App.PowerShell/DizPowerShellCompositionRoot.cs
================================================
using Diz.Core;
using LightInject;

namespace Diz.PowerShell;

public class DizPowerShellCompositionRoot : ICompositionRoot
{
    public void Compose(IServiceRegistry serviceRegistry)
    {
        // TODO serviceRegistry.Register<IPowershellLogger>()

        serviceRegistry.Register<IDizLogger>();
        serviceRegistry.Register<IProjectFileAssemblyExporter, ProjectFileAssemblyExporter>();
        serviceRegistry.Register<IProjectFileOpener, ProjectFileReader>();
    }
}

================================================
FILE: Diz.App.PowerShell/DizPowershellLogger.cs
================================================
namespace Diz.PowerShell;

public class DizPowershellLogger : IDizLogger
{
    private readonly IPowershellLogger powershellLogger;

    public DizPowershellLogger(IPowershellLogger powershellLogger)
    {
        this.powershellLogger = powershellLogger;
    }

    public void Info(string msg) => 
        powershellLogger.WriteObject(msg);

    public void Warn(string msg) => 
        powershellLogger.WriteCommandDetail(msg);

    public void Error(string msg) =>
        powershellLogger.WriteObject(msg);

    public void Debug(string msg) => 
        powershellLogger.WriteDebug(msg);
}

================================================
FILE: Diz.App.PowerShell/ProjectFileAssemblyExporter.cs
================================================
using Diz.Core;
using Diz.Core.model;
using Diz.Core.util;
using Diz.LogWriter;
using Diz.LogWriter.util;

namespace Diz.PowerShell;

public class ProjectFileAssemblyExporter : IProjectFileAssemblyExporter
{
    private readonly IDizLogger logger;
    private readonly IFilesystemService fs;
    private readonly IProjectFileOpener projectFileSource;

    public ProjectFileAssemblyExporter(IDizLogger logger, IProjectFileOpener projectFileSource, IFilesystemService fs)
    {
        this.logger = logger;
        this.projectFileSource = projectFileSource;
        this.fs = fs;
    }
    
    private Project? OpenProjectFile(string projectFileName)
    {
        var project = projectFileSource.ReadProjectFromFile(projectFileName);
        if (project == null)
            return null;

        logger.Debug($"Loaded project, rom is: {project.AttachedRomFilename}");
        return project;
    }

    public bool ExportAssembly(string projectFileName)
    {
        var project = OpenProjectFile(projectFileName);
        return project != null && ExportAssembly(project);
    }

    public bool ExportAssembly(Project project)
    {
        var failReason = project.LogWriterSettings.Validate(fs);
        if (failReason != null)
        {
            logger.Error($"invalid assembly build settings {failReason}");
            return false;
        }

        var lc = new LogCreator
        {
            Settings = project.LogWriterSettings,
            Data = new LogCreatorByteSource(project.Data),
        };

        logger.Debug("Building....");
        var result = lc.CreateLog();

        if (!result.Success)
        {
            logger.Error($"Failed to build, error was: {result.AssemblyOutputStr}");
            return false;
        }

        logger.Info("Successfully exported assembly output.");
        return true;
    }
}

================================================
FILE: Diz.App.PowerShell/ProjectFileReader.cs
================================================
using Diz.Core;
using Diz.Core.model;
using Diz.Core.serialization;

namespace Diz.PowerShell;

public class ProjectFileReader : IProjectFileOpener
{
    private readonly IProjectFileManager projectFileManager;
    
    private string? filename;

    public ProjectFileReader(IProjectFileManager projectFileManager) => 
        this.projectFileManager = projectFileManager;

    public void SetOpenFilename(string projectFilename) => 
        filename = projectFilename;

    public Project? Read()
    {
        if (string.IsNullOrEmpty(filename))
            return null;
        
        var openResult = projectFileManager.Open(filename);
        return openResult?.Root?.Project ?? null;
    }
}

================================================
FILE: Diz.App.PowerShell/Properties/AssemblyInfo.cs
================================================
using Diz.PowerShell;
using LightInject;

[assembly: CompositionRootType(typeof(DizPowerShellCompositionRoot))]

================================================
FILE: Diz.App.PowerShell/Properties/launchSettings.json
================================================
{
  "profiles": {
    "DizPowerShell": {
      "commandName": "Executable",
      "executablePath": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
      "commandLineArgs": "-NoProfile -NoExit -Command \"../../../runner/debug-startup.ps1\""
    }
  }
}

================================================
FILE: Diz.App.PowerShell/PsInterfaces.cs
================================================
#nullable enable

namespace Diz.PowerShell;

public interface IPowershellLogger
{
    void WriteObject(object objectToSend);
    void WriteDebug(string text);
    void WriteCommandDetail(string text);
}

public interface IDizLogger
{
    void Info(string msg);
    void Warn(string msg);
    void Error(string s);
    void Debug(string msg);
}

================================================
FILE: Diz.App.PowerShell/ServiceContainerCmdletBase.cs
================================================
using System.Management.Automation;
using Diz.Core.util;
using LightInject;

namespace Diz.PowerShell;

public abstract class ServiceContainerCmdletBase : PSCmdlet
{
    protected IServiceContainer? ServiceContainer { get; private set; }
    
    protected override void BeginProcessing()
    {
        ServiceContainer ??= DizServiceProvider.CreateServiceContainer();
    }

    protected override void EndProcessing()
    {
        ServiceContainer?.Dispose();
        ServiceContainer = null;
    }
}

================================================
FILE: Diz.App.PowerShell/packages.lock.json
================================================
{
  "version": 1,
  "dependencies": {
    "net9.0": {
      "GitInfo": {
        "type": "Direct",
        "requested": "[3.3.3, )",
        "resolved": "3.3.3",
        "contentHash": "l7m4M/figjWz4B3eIL2Qy3UJiP2vvTOTeavlCT/GGH0khg0uxLanh/cwTZ27AZNhim56q1Mk0nbyRXtLqF4vmg==",
        "dependencies": {
          "ThisAssembly.Constants": "1.4.1"
        }
      },
      "LightInject": {
        "type": "Direct",
        "requested": "[6.6.4, )",
        "resolved": "6.6.4",
        "contentHash": "xId1F9OpzVvyNu3wcdPR4EcNUihcT5U9wiUJOi0tetuDOia1uAiFJzqmYGdRPsqAsgDb6o8sfoQCx5yMFFDsVw=="
      },
      "System.Management.Automation": {
        "type": "Direct",
        "requested": "[7.4.1, )",
        "resolved": "7.4.1",
        "contentHash": "EYUMyAoYAw4Zt+cxKRMjZxzoa6gI++O4sK+cSg8HUhC1HfrJoMhD1u1Fo5CvlGv1KX3OmoJSyukgkDmRHFLQiw==",
        "dependencies": {
          "Microsoft.ApplicationInsights": "2.21.0",
          "Microsoft.Management.Infrastructure": "3.0.0",
          "Microsoft.PowerShell.CoreCLR.Eventing": "7.4.1",
          "Microsoft.PowerShell.Native": "7.4.0",
          "Microsoft.Security.Extensions": "1.2.0",
          "Microsoft.Win32.Registry.AccessControl": "8.0.0",
          "Newtonsoft.Json": "13.0.3",
          "System.Configuration.ConfigurationManager": "8.0.0",
          "System.Diagnostics.DiagnosticSource": "8.0.0",
          "System.DirectoryServices": "8.0.0",
          "System.Management": "8.0.0",
          "System.Security.AccessControl": "6.0.0",
          "System.Security.Cryptography.Pkcs": "8.0.0",
          "System.Security.Permissions": "8.0.0",
          "System.Text.Encoding.CodePages": "8.0.0"
        }
      },
      "CsvHelper": {
        "type": "Transitive",
        "resolved": "30.0.3",
        "contentHash": "OK4xEoPKFZYZ2Km+ZTGRxuLo33u+ipKVCC9ICCGn5JRiAmPLRsCPZ/shL3HKGPwS33MQSPcPHigI4HnX3Q47yg=="
      },
      "ExtendedXmlSerializer": {
        "type": "Transitive",
        "resolved": "3.9.6",
        "contentHash": "kwnF5RjDwzle4cpUN4AWOCBAbntCkLQez5SIl2cY6hamWL33vEYu5Pp35BKkg/oklXnvaYobzJrFezRi9dl9tA==",
        "dependencies": {
          "LightInject": "6.6.1",
          "NReco.LambdaParser": "1.0.12",
          "Sprache": "2.3.1",
          "System.Collections.Immutable": "7.0.0"
        }
      },
      "FluentValidation": {
        "type": "Transitive",
        "resolved": "11.9.0",
        "contentHash": "VneVlTvwYDkfHV5av3QrQ0amALgrLX6LV94wlYyEsh0B/klJBW7C8y2eAtj5tOZ3jH6CAVpr4s1ZGgew/QWyig=="
      },
      "JetBrains.Annotations": {
        "type": "Transitive",
        "resolved": "2023.3.0",
        "contentHash": "PHfnvdBUdGaTVG9bR/GEfxgTwWM0Z97Y6X3710wiljELBISipSfF5okn/vz+C2gfO+ihoEyVPjaJwn8ZalVukA=="
      },
      "JetBrains.FormatRipper": {
        "type": "Transitive",
        "resolved": "2.0.1",
        "contentHash": "9J+lWdztAczSqwgvOfMiTxEaaV6ONXY27Hq9VGbgzr9sUX8F5HCSvnd2/4J9xD1US4VL+ZPrREyRBl9NNbSGbw==",
        "dependencies": {
          "NETStandard.Library": "1.6.1"
        }
      },
      "JetBrains.HabitatDetector": {
        "type": "Transitive",
        "resolved": "1.0.2",
        "contentHash": "WQfQekJ2+BxM6+5anNhYWLyd6F4CRHW7pj8YoRXe6M5MDfPsZdYP0epx1+cHJkJuf0aeTB2JRK4KeEPW4UM8AQ==",
        "dependencies": {
          "JetBrains.FormatRipper": "2.0.1"
        }
      },
      "JetBrains.Profiler.Api": {
        "type": "Transitive",
        "resolved": "1.4.0",
        "contentHash": "r5xP8m9U6uHApcMyoL5yZL/Ltqz7auBo0MaboGdQoaawNpYnYr9PC3FFe+0mNT2pyOhuAfQC7WL/Gxb8M0v1Lw==",
        "dependencies": {
          "JetBrains.HabitatDetector": "1.0.2"
        }
      },
      "JetBrains.Profiler.SelfApi": {
        "type": "Transitive",
        "resolved": "2.5.0",
        "contentHash": "8dX8vSarO04JCm4n/RhDx2w/9mzKO+KI4rXtrt8AurGrKlhTgswuLZeGw5PuYsAUsJmmJrPBxJx4pTt/SW42aQ==",
        "dependencies": {
          "JetBrains.HabitatDetector": "1.0.2",
          "JetBrains.Profiler.Api": "1.4.0"
        }
      },
      "Microsoft.ApplicationInsights": {
        "type": "Transitive",
        "resolved": "2.21.0",
        "contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
        "dependencies": {
          "System.Diagnostics.DiagnosticSource": "5.0.0"
        }
      },
      "Microsoft.CSharp": {
        "type": "Transitive",
        "resolved": "4.7.0",
        "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
      },
      "Microsoft.Management.Infrastructure": {
        "type": "Transitive",
        "resolved": "3.0.0",
        "contentHash": "cGZi0q5IujCTVYKo9h22Pw+UwfZDV82HXO8HTxMG2HqntPlT3Ls8jY6punLp4YzCypJNpfCAu2kae3TIyuAiJw==",
        "dependencies": {
          "Microsoft.Management.Infrastructure.Runtime.Unix": "3.0.0",
          "Microsoft.Management.Infrastructure.Runtime.Win": "3.0.0"
        }
      },
      "Microsoft.Management.Infrastructure.Runtime.Unix": {
        "type": "Transitive",
        "resolved": "3.0.0",
        "contentHash": "QZE3uEDvZ0m7LabQvcmNOYHp7v1QPBVMpB/ild0WEE8zqUVAP5y9rRI5we37ImI1bQmW5pZ+3HNC70POPm0jBQ=="
      },
      "Microsoft.Management.Infrastructure.Runtime.Win": {
        "type": "Transitive",
        "resolved": "3.0.0",
        "contentHash": "uwMyWN33+iQ8Wm/n1yoPXgFoiYNd0HzJyoqSVhaQZyJfaQrJR3udgcIHjqa1qbc3lS6kvfuUMN4TrF4U4refCQ=="
      },
      "Microsoft.NETCore.Platforms": {
        "type": "Transitive",
        "resolved": "1.1.1",
        "contentHash": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ=="
      },
      "Microsoft.NETCore.Targets": {
        "type": "Transitive",
        "resolved": "1.1.3",
        "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ=="
      },
      "Microsoft.PowerShell.CoreCLR.Eventing": {
        "type": "Transitive",
        "resolved": "7.4.1",
        "contentHash": "uyByMNZ3XVUrJAxdHrXM/75vcKdfbs04J5iIZfDA8m9z8TJDViRMjyHNcp8K/ZXyzpT2Lua2d7g+dP47E9wAcg==",
        "dependencies": {
          "System.Diagnostics.EventLog": "8.0.0"
        }
      },
      "Microsoft.PowerShell.Native": {
        "type": "Transitive",
        "resolved": "7.4.0",
        "contentHash": "FlaJ3JBWhqFToYT0ycMb/Xxzoof7oTQbNyI4UikgubC7AMWt5ptBNKjIAMPvOcvEHr+ohaO9GvRWp3tiyS3sKw=="
      },
      "Microsoft.Security.Extensions": {
        "type": "Transitive",
        "resolved": "1.2.0",
        "contentHash": "GjHZBE5PHKrxPRyGujWQKwbKNjPQYds6HcAWKeV49X3KPgBfF2B1vV5uJey5UluyGQlvAO/DezL7WzEx9HlPQA=="
      },
      "Microsoft.Win32.Primitives": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "Microsoft.Win32.Registry.AccessControl": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "u8PB9/v02C8mBXzl0vJ7bOyC020zOP+T1mRct+KA46DqZkB40XtsNn9pGD0QowTRsT6R4jPCghn+yAODn2UMMw=="
      },
      "NETStandard.Library": {
        "type": "Transitive",
        "resolved": "1.6.1",
        "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.Win32.Primitives": "4.3.0",
          "System.AppContext": "4.3.0",
          "System.Collections": "4.3.0",
          "System.Collections.Concurrent": "4.3.0",
          "System.Console": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Diagnostics.Tools": "4.3.0",
          "System.Diagnostics.Tracing": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.Globalization.Calendars": "4.3.0",
          "System.IO": "4.3.0",
          "System.IO.Compression": "4.3.0",
          "System.IO.Compression.ZipFile": "4.3.0",
          "System.IO.FileSystem": "4.3.0",
          "System.IO.FileSystem.Primitives": "4.3.0",
          "System.Linq": "4.3.0",
          "System.Linq.Expressions": "4.3.0",
          "System.Net.Http": "4.3.0",
          "System.Net.Primitives": "4.3.0",
          "System.Net.Sockets": "4.3.0",
          "System.ObjectModel": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Reflection.Extensions": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
          "System.Runtime.Numerics": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Security.Cryptography.X509Certificates": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Text.Encoding.Extensions": "4.3.0",
          "System.Text.RegularExpressions": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Threading.Tasks": "4.3.0",
          "System.Threading.Timer": "4.3.0",
          "System.Xml.ReaderWriter": "4.3.0",
          "System.Xml.XDocument": "4.3.0"
        }
      },
      "Newtonsoft.Json": {
        "type": "Transitive",
        "resolved": "13.0.3",
        "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
      },
      "NReco.LambdaParser": {
        "type": "Transitive",
        "resolved": "1.0.12",
        "contentHash": "f1nye8fMJCYfJeR+Qb7qlcvC8et4Y4TLf2GLfaFoeISgI+yisaJkbNSGfKCpFBNeVF/iPDkyFmr4J28dv342/Q=="
      },
      "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q=="
      },
      "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA=="
      },
      "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw=="
      },
      "runtime.native.System": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0"
        }
      },
      "runtime.native.System.IO.Compression": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0"
        }
      },
      "runtime.native.System.Net.Http": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0"
        }
      },
      "runtime.native.System.Security.Cryptography.Apple": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
        "dependencies": {
          "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
        }
      },
      "runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
        "dependencies": {
          "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
          "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A=="
      },
      "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ=="
      },
      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
      },
      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g=="
      },
      "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg=="
      },
      "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ=="
      },
      "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A=="
      },
      "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg=="
      },
      "SharpZipLib": {
        "type": "Transitive",
        "resolved": "1.4.2",
        "contentHash": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A=="
      },
      "Sprache": {
        "type": "Transitive",
        "resolved": "2.3.1",
        "contentHash": "Q+mXeiTxiUYG3lKYF6TS82/SyB4F2613Q1yXTMwg4jWGHEEVC3yrzHtNcI4B3qnDI0+eJsezGJ0V+cToUytHWw==",
        "dependencies": {
          "System.Globalization": "4.3.0",
          "System.Linq": "4.3.0",
          "System.Private.Uri": "4.3.2",
          "System.Runtime": "4.3.0",
          "System.Text.RegularExpressions": "4.3.0"
        }
      },
      "System.AppContext": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
        "dependencies": {
          "System.Runtime": "4.3.0"
        }
      },
      "System.Buffers": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
        "dependencies": {
          "System.Diagnostics.Debug": "4.3.0",
          "System.Diagnostics.Tracing": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Threading": "4.3.0"
        }
      },
      "System.CodeDom": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q=="
      },
      "System.Collections": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Collections.Concurrent": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Diagnostics.Tracing": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.Collections.Immutable": {
        "type": "Transitive",
        "resolved": "7.0.0",
        "contentHash": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ=="
      },
      "System.Configuration.ConfigurationManager": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "JlYi9XVvIREURRUlGMr1F6vOFLk7YSY4p1vHo4kX3tQ0AGrjqlRWHDi66ImHhy6qwXBG3BJ6Y1QlYQ+Qz6Xgww==",
        "dependencies": {
          "System.Diagnostics.EventLog": "8.0.0",
          "System.Security.Cryptography.ProtectedData": "8.0.0"
        }
      },
      "System.Console": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.IO": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Text.Encoding": "4.3.0"
        }
      },
      "System.Diagnostics.Debug": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Diagnostics.DiagnosticSource": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ=="
      },
      "System.Diagnostics.EventLog": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A=="
      },
      "System.Diagnostics.Tools": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Diagnostics.Tracing": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.DirectoryServices": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "7nit//efUTy1OsAKco2f02PMrwsR2S234N0dVVp84udC77YcvpOQDz5znAWMtgMWBzY1aRJvUW61jo/7vQRfXg=="
      },
      "System.Formats.Asn1": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "AJukBuLoe3QeAF+mfaRKQb2dgyrvt340iMBHYv+VdBzCUM06IxGlvl0o/uPOS7lHnXPN6u8fFRHSHudx5aTi8w=="
      },
      "System.Globalization": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Globalization.Calendars": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Globalization": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Globalization.Extensions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Globalization": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0"
        }
      },
      "System.IO": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.IO.Compression": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Buffers": "4.3.0",
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Threading.Tasks": "4.3.0",
          "runtime.native.System": "4.3.0",
          "runtime.native.System.IO.Compression": "4.3.0"
        }
      },
      "System.IO.Compression.ZipFile": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
        "dependencies": {
          "System.Buffers": "4.3.0",
          "System.IO": "4.3.0",
          "System.IO.Compression": "4.3.0",
          "System.IO.FileSystem": "4.3.0",
          "System.IO.FileSystem.Primitives": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Text.Encoding": "4.3.0"
        }
      },
      "System.IO.FileSystem": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.IO": "4.3.0",
          "System.IO.FileSystem.Primitives": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.IO.FileSystem.Primitives": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
        "dependencies": {
          "System.Runtime": "4.3.0"
        }
      },
      "System.Linq": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0"
        }
      },
      "System.Linq.Expressions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.IO": "4.3.0",
          "System.Linq": "4.3.0",
          "System.ObjectModel": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Reflection.Emit": "4.3.0",
          "System.Reflection.Emit.ILGeneration": "4.3.0",
          "System.Reflection.Emit.Lightweight": "4.3.0",
          "System.Reflection.Extensions": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Reflection.TypeExtensions": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Threading": "4.3.0"
        }
      },
      "System.Management": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==",
        "dependencies": {
          "System.CodeDom": "8.0.0"
        }
      },
      "System.Net.Http": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Diagnostics.DiagnosticSource": "4.3.0",
          "System.Diagnostics.Tracing": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.Globalization.Extensions": "4.3.0",
          "System.IO": "4.3.0",
          "System.IO.FileSystem": "4.3.0",
          "System.Net.Primitives": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.OpenSsl": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Security.Cryptography.X509Certificates": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Threading.Tasks": "4.3.0",
          "runtime.native.System": "4.3.0",
          "runtime.native.System.Net.Http": "4.3.0",
          "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "System.Net.Primitives": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Handles": "4.3.0"
        }
      },
      "System.Net.Sockets": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.IO": "4.3.0",
          "System.Net.Primitives": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.ObjectModel": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Threading": "4.3.0"
        }
      },
      "System.Private.Uri": {
        "type": "Transitive",
        "resolved": "4.3.2",
        "contentHash": "o1+7RJnu3Ik3PazR7Z7tJhjPdE000Eq2KGLLWhqJJKXj04wrS8lwb1OFtDF9jzXXADhUuZNJZlPc98uwwqmpFA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.1",
          "Microsoft.NETCore.Targets": "1.1.3"
        }
      },
      "System.Reflection": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.IO": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.Emit": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
        "dependencies": {
          "System.IO": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Reflection.Emit.ILGeneration": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.Emit.ILGeneration": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
        "dependencies": {
          "System.Reflection": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.Emit.Lightweight": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
        "dependencies": {
          "System.Reflection": "4.3.0",
          "System.Reflection.Emit.ILGeneration": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.Extensions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Reflection": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.Primitives": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Reflection.TypeExtensions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
        "dependencies": {
          "System.Reflection": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Resources.Extensions": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "psnQ6GRQOvt+evda5C4nD5EuV49mz2Tv0DD2JDVDEbE/TKoMukxSkGJcsBJ0pajpPuFRr67syFYlkJ4Wj6A5Zw=="
      },
      "System.Resources.ResourceManager": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Globalization": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Runtime": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0"
        }
      },
      "System.Runtime.Extensions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Runtime.Handles": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Runtime.InteropServices": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Reflection": "4.3.0",
          "System.Reflection.Primitives": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Handles": "4.3.0"
        }
      },
      "System.Runtime.InteropServices.RuntimeInformation": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
        "dependencies": {
          "System.Reflection": "4.3.0",
          "System.Reflection.Extensions": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Threading": "4.3.0",
          "runtime.native.System": "4.3.0"
        }
      },
      "System.Runtime.Numerics": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
        "dependencies": {
          "System.Globalization": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0"
        }
      },
      "System.Security.AccessControl": {
        "type": "Transitive",
        "resolved": "6.0.0",
        "contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ=="
      },
      "System.Security.Cryptography.Algorithms": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Collections": "4.3.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Runtime.Numerics": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
          "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "System.Security.Cryptography.Cng": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0"
        }
      },
      "System.Security.Cryptography.Csp": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.IO": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading": "4.3.0"
        }
      },
      "System.Security.Cryptography.Encoding": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Collections": "4.3.0",
          "System.Collections.Concurrent": "4.3.0",
          "System.Linq": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "System.Security.Cryptography.OpenSsl": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Runtime.Numerics": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "System.Security.Cryptography.Pkcs": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==",
        "dependencies": {
          "System.Formats.Asn1": "8.0.0"
        }
      },
      "System.Security.Cryptography.Primitives": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
        "dependencies": {
          "System.Diagnostics.Debug": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.Security.Cryptography.ProtectedData": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg=="
      },
      "System.Security.Cryptography.X509Certificates": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.Globalization.Calendars": "4.3.0",
          "System.IO": "4.3.0",
          "System.IO.FileSystem": "4.3.0",
          "System.IO.FileSystem.Primitives": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.Handles": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Runtime.Numerics": "4.3.0",
          "System.Security.Cryptography.Algorithms": "4.3.0",
          "System.Security.Cryptography.Cng": "4.3.0",
          "System.Security.Cryptography.Csp": "4.3.0",
          "System.Security.Cryptography.Encoding": "4.3.0",
          "System.Security.Cryptography.OpenSsl": "4.3.0",
          "System.Security.Cryptography.Primitives": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading": "4.3.0",
          "runtime.native.System": "4.3.0",
          "runtime.native.System.Net.Http": "4.3.0",
          "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
        }
      },
      "System.Security.Permissions": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "v/BBylw7XevuAsHXoX9dDUUfmBIcUf7Lkz8K3ZXIKz3YRKpw8YftpSir4n4e/jDTKFoaK37AsC3xnk+GNFI1Ow==",
        "dependencies": {
          "System.Windows.Extensions": "8.0.0"
        }
      },
      "System.Text.Encoding": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Text.Encoding.CodePages": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "OZIsVplFGaVY90G2SbpgU7EnCoOO5pw1t4ic21dBF3/1omrJFpAGoNAVpPyMVOC90/hvgkGG3VFqR13YgZMQfg=="
      },
      "System.Text.Encoding.Extensions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0",
          "System.Text.Encoding": "4.3.0"
        }
      },
      "System.Text.RegularExpressions": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
        "dependencies": {
          "System.Runtime": "4.3.0"
        }
      },
      "System.Threading": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
        "dependencies": {
          "System.Runtime": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },
      "System.Threading.Tasks": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Threading.Tasks.Extensions": {
        "type": "Transitive",
        "resolved": "4.5.4",
        "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
      },
      "System.Threading.Timer": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
        "dependencies": {
          "Microsoft.NETCore.Platforms": "1.1.0",
          "Microsoft.NETCore.Targets": "1.1.0",
          "System.Runtime": "4.3.0"
        }
      },
      "System.Windows.Extensions": {
        "type": "Transitive",
        "resolved": "8.0.0",
        "contentHash": "Obg3a90MkOw9mYKxrardLpY2u0axDMrSmy4JCdq2cYbelM2cUwmUir5Bomvd1yxmPL9h5LVHU1tuKBZpUjfASg=="
      },
      "System.Xml.ReaderWriter": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.IO": "4.3.0",
          "System.IO.FileSystem": "4.3.0",
          "System.IO.FileSystem.Primitives": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Runtime.InteropServices": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Text.Encoding.Extensions": "4.3.0",
          "System.Text.RegularExpressions": "4.3.0",
          "System.Threading.Tasks": "4.3.0",
          "System.Threading.Tasks.Extensions": "4.3.0"
        }
      },
      "System.Xml.XDocument": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Diagnostics.Debug": "4.3.0",
          "System.Diagnostics.Tools": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.IO": "4.3.0",
          "System.Reflection": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Text.Encoding": "4.3.0",
          "System.Threading": "4.3.0",
          "System.Xml.ReaderWriter": "4.3.0"
        }
      },
      "ThisAssembly.Constants": {
        "type": "Transitive",
        "resolved": "1.4.1",
        "contentHash": "sV0CDYlC6YSIkYbdwd4+jRinLb888Dac71pmNhF2Ll6UXY1J+1oVt3EfmX6euXEKz2RLdfV+4GyZctfEA0NSqA==",
        "dependencies": {
          "Microsoft.CSharp": "4.7.0",
          "System.Threading.Tasks.Extensions": "4.5.4"
        }
      },
      "diz.core": {
        "type": "Project",
        "dependencies": {
          "Diz.Core.Interfaces": "[1.0.0, )",
          "ExtendedXmlSerializer": "[3.9.6, )",
          "FluentValidation": "[11.9.0, )",
          "JetBrains.Annotations": "[2023.3.0, )",
          "JetBrains.Profiler.SelfApi": "[2.5.0, )",
          "LightInject": "[6.6.4, )",
          "SharpZipLib": "[1.4.2, )",
          "System.Diagnostics.Tracing": "[4.3.0, )",
          "System.Resources.Extensions": "[8.0.0, )",
          "System.Text.Encoding.CodePages": "[8.0.0, )"
        }
      },
      "diz.core.interfaces": {
        "type": "Project"
      },
      "diz.cpu.65816": {
        "type": "Project",
        "dependencies": {
          "Diz.Core": "[1.0.0, )",
          "Diz.Core.Interfaces": "[1.0.0, )"
        }
      },
      "diz.logwriter": {
        "type": "Project",
        "dependencies": {
          "CsvHelper": "[30.0.3, )",
          "Diz.Core": "[1.0.0, )",
          "Diz.Cpu.65816": "[1.0.0, )",
          "ExtendedXmlSerializer": "[3.9.6, )",
          "LightInject": "[6.6.4, )"
        }
      }
    }
  }
}

================================================
FILE: Diz.App.PowerShell/runner/debug-startup.ps1
================================================
$module = "Diz.PowerShell"
$basepath = ".\"

echo "Starting..."
Import-Module "$($basepath)$($module).dll"

WRite-Host "Current working dir---> $($pwd)'"

if ((Get-Command -module $module).Count -eq 0) { 
  Write-Host "WARNING: Couldn't find our module. (build issue?)" -ForegroundColor red
} else {
  Write-Host "Ready!" -ForegroundColor green
}

$dizproject = "testproject.dizraw"
$cmd_to_run = "Build-AssemblyFiles -ProjectNames (Resolve-Path '..\..\..\..\..\rom\$($dizproject)')"

Write-Host "Press enter to run this command: '$($cmd_to_run)'"
$null = Read-Host

Invoke-Expression $cmd_to_run

================================================
FILE: Diz.App.Winforms/App.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <!-- 
        allow loading of assemblies from a different directory. important for final release if copying here
        if messing with this, also check out DiztinGUIsh.runtimeconfig.json in the publish/ folder. mess with
        "additionalProbingPaths".  it all doesn't quite work anymore in .NET5
        
        2025 update: we don't really rely on this and just copy everything into one flat directory.  
        -->
        
        <!-- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> -->
        <!--     <probing privatePath="lib" /> -->
        <!-- </assemblyBinding> -->
    </runtime>
</configuration>

================================================
FILE: Diz.App.Winforms/AppVersionInfo.cs
================================================
using System.Diagnostics.CodeAnalysis;
using Diz.Core.Interfaces;
using Diz.Core.serialization.xml_serializer;

namespace Diz.App.Winforms;

[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
public class AppVersionInfo : IAppVersionInfo
{
    private readonly string versionStr;
    private readonly string fullBuildDescription;
    
    public AppVersionInfo()
    {
        // cache these, they won't change
        versionStr = ThisAssembly.Git.Tag;
        fullBuildDescription =
            $"Build info:\r\n------------\r\n" +
            $"Version: {versionStr}\r\n" +
            $"Git branch: {ThisAssembly.Git.Branch}\r\n" +
            $"Git commit: {ThisAssembly.Git.Commit}\r\n" +
            $"Git repo URL: {ThisAssembly.Git.RepositoryUrl}\r\n" +
            $"Git tag: {ThisAssembly.Git.Tag}\r\n" +
            $"Git last commit date: {ThisAssembly.Git.CommitDate}\r\n" +
            $"Git IsDirty: {ThisAssembly.Git.IsDirtyString}\r\n" +
            $"Git Commits on top of base: {ThisAssembly.Git.Commits}\r\n" +
            "\r\n\r\n" +
            $"Diz app savefile format ver: {ProjectXmlSerializer.LatestSaveFormatVersion}";
    }
    
    [SuppressMessage("ReSharper", "HeuristicUnreachableCode")]
    public string GetVersionInfo(IAppVersionInfo.AppVersionInfoType type)
    {
        return type switch
        {
            IAppVersionInfo.AppVersionInfoType.FullDescription => fullBuildDescription,
            IAppVersionInfo.AppVersionInfoType.Version => versionStr,
            _ => ""
        };
    }
}

================================================
FILE: Diz.App.Winforms/Diz.App.Winforms.csproj
================================================
<Project>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
    <RootNamespace>Diz.App.Winforms</RootNamespace>
    <PackageId>Diz.App.Winforms</PackageId>
    <ApplicationIcon>resource/diz-icon2-magenta-med32x32.ico</ApplicationIcon>
    <LangVersion>latest</LangVersion>
    <GitThisAssemblyMetadata>true</GitThisAssemblyMetadata>
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
    <GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
    
    <!-- for self-contained publishing -->
    <RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>
  </PropertyGroup>
  
  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />  <!-- import this so our custom targets work -->
  
  <ItemGroup>
    <ProjectReference Include="..\Diz.App.Common\Diz.App.Common.csproj" />
    <ProjectReference Include="..\Diz.Controllers\Diz.Controllers\Diz.Controllers.csproj" />
    <ProjectReference Include="..\Diz.Ui.Winforms\Diz.Ui.Winforms\Diz.Ui.Winforms.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="JetBrains.Annotations">
      <Version>2023.3.0</Version>
    </PackageReference>
    <PackageReference Include="GitInfo">
      <Version>3.3.3</Version>
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="LightInject">
      <Version>6.6.4</Version>
    </PackageReference>
    <PackageReference Include="System.Resources.Extensions" Version="8.0.0" />
  </ItemGroup>


  <ItemGroup>
    <EmbeddedResource Update="window\usercontrols\visualizer\legend\BankLegend.resx">
      <DependentUpon>BankLegend.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Update="window\usercontrols\visualizer\legend\BankLegendItem.resx">
      <DependentUpon>BankLegendItem.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Update="window\usercontrols\visualizer\graphics\RomBankVisualizer.resx">
      <DependentUpon>RomBankVisualizer.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Update="window\usercontrols\visualizer\graphics\RomFullVisualizer.resx">
      <DependentUpon>RomFullVisualizer.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Update="window\usercontrols\visualizer\graphics\RomImage.resx">
      <DependentUpon>RomImage.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Update="window\DataGridEditorForm.resx">
      <DependentUpon>DataGridEditorForm.cs</DependentUpon>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <None Include="build\TidyPublishDir.targets" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="..\.github\workflows\dotnet.yml">
      <Link>diztinguish\.github\workflows\dotnet.yml</Link>
    </Content>
  </ItemGroup>
  <!--custom build targets for packing up final distribution of files-->
  <Import Project="build/TidyPublishDir.targets" />
  
  
</Project>

================================================
FILE: Diz.App.Winforms/Diz.App.Winforms.csproj.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/CodeEditing/Localization/Localizable/@EntryValue">No</s:String></wpf:ResourceDictionary>

================================================
FILE: Diz.App.Winforms/DizAppWinformsCompositionRoot.cs
================================================
using Diz.App.Common;
using Diz.Controllers.interfaces;
using Diz.Core.Interfaces;
using Diz.Ui.Winforms;
using Diz.Ui.Winforms.dialogs;
using JetBrains.Annotations;
using LightInject;

namespace Diz.App.Winforms;

[UsedImplicitly] public class DizAppWinformsCompositionRoot : ICompositionRoot
{
    public void Compose(IServiceRegistry serviceRegistry)
    {
        serviceRegistry.RegisterFrom<DizAppCommonCompositionRoot>();
        
        serviceRegistry.Register<IDizApp, DizWinformsApp>();
        serviceRegistry.Register<ICommonGui, WinFormsCommonGui>();
        serviceRegistry.Register<IAppVersionInfo, AppVersionInfo>();
    }
}

================================================
FILE: Diz.App.Winforms/Program.cs
================================================
#nullable enable

// #define DEBUG_EXTRA_CRASH_HANDLING // for catching really stubborn crashes, like in databinding

using System;
#if DEBUG_EXTRA_CRASH_HANDLING
using System.IO;
using System.Windows.Forms;
#endif
using Diz.App.Common;

namespace Diz.App.Winforms;

internal static class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        #if DEBUG_EXTRA_CRASH_HANDLING
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); // dangerous
        Application.ThreadException += (sender, e) => 
        {
            File.WriteAllText("crash_log.txt", $"Thread Exception: {e.Exception}");
            MessageBox.Show($"Thread Exception: {e.Exception}");
        };
    
        AppDomain.CurrentDomain.UnhandledException += (sender, e) => 
        {
            File.WriteAllText("crash_log.txt", $"Unhandled Exception: {e.ExceptionObject}");
            MessageBox.Show($"Unhandled Exception: {e.ExceptionObject}");
        };
        #endif
        
        var serviceFactory = DizWinformsRegisterServices.CreateServiceFactoryAndRegisterTypes();
        DizAppCommon.StartApp(serviceFactory, args);
    }
}

================================================
FILE: Diz.App.Winforms/Properties/Annotations.cs
================================================
// Note from Dom/Diztinguish: Jetbrains added this. Not sure we really need it,
// remove if you feel like it. probably won't hurt anything, just editor functionality.

/* MIT License

Copyright (c) 2016 JetBrains http://www.jetbrains.com

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. */

using System;

// ReSharper disable InheritdocConsiderUsage

#pragma warning disable 1591
// ReSharper disable UnusedMember.Global
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable IntroduceOptionalParameters.Global
// ReSharper disable MemberCanBeProtected.Global
// ReSharper disable InconsistentNaming

namespace Diz.App.Winforms.Properties
{
  /// <summary>
  /// Indicates that the value of the marked element could be <c>null</c> sometimes,
  /// so checking for <c>null</c> is required before its usage.
  /// </summary>
  /// <example><code>
  /// [CanBeNull] object Test() => null;
  /// 
  /// void UseTest() {
  ///   var p = Test();
  ///   var s = p.ToString(); // Warning: Possible 'System.NullReferenceException'
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property |
    AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event |
    AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.GenericParameter)]
  public sealed class CanBeNullAttribute : Attribute { }

  /// <summary>
  /// Indicates that the value of the marked element can never be <c>null</c>.
  /// </summary>
  /// <example><code>
  /// [NotNull] object Foo() {
  ///   return null; // Warning: Possible 'null' assignment
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property |
    AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event |
    AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.GenericParameter)]
  public sealed class NotNullAttribute : Attribute { }

  /// <summary>
  /// Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task
  /// and Lazy classes to indicate that the value of a collection item, of the Task.Result property
  /// or of the Lazy.Value property can never be null.
  /// </summary>
  /// <example><code>
  /// public void Foo([ItemNotNull]List&lt;string&gt; books)
  /// {
  ///   foreach (var book in books) {
  ///     if (book != null) // Warning: Expression is always true
  ///      Console.WriteLine(book.ToUpper());
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property |
    AttributeTargets.Delegate | AttributeTargets.Field)]
  public sealed class ItemNotNullAttribute : Attribute { }

  /// <summary>
  /// Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task
  /// and Lazy classes to indicate that the value of a collection item, of the Task.Result property
  /// or of the Lazy.Value property can be null.
  /// </summary>
  /// <example><code>
  /// public void Foo([ItemCanBeNull]List&lt;string&gt; books)
  /// {
  ///   foreach (var book in books)
  ///   {
  ///     // Warning: Possible 'System.NullReferenceException'
  ///     Console.WriteLine(book.ToUpper());
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property |
    AttributeTargets.Delegate | AttributeTargets.Field)]
  public sealed class ItemCanBeNullAttribute : Attribute { }

  /// <summary>
  /// Indicates that the marked method builds string by the format pattern and (optional) arguments.
  /// The parameter, which contains the format string, should be given in constructor. The format string
  /// should be in <see cref="string.Format(IFormatProvider,string,object[])"/>-like form.
  /// </summary>
  /// <example><code>
  /// [StringFormatMethod("message")]
  /// void ShowError(string message, params object[] args) { /* do something */ }
  /// 
  /// void Foo() {
  ///   ShowError("Failed: {0}"); // Warning: Non-existing argument in format string
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Constructor | AttributeTargets.Method |
    AttributeTargets.Property | AttributeTargets.Delegate)]
  public sealed class StringFormatMethodAttribute : Attribute
  {
    /// <param name="formatParameterName">
    /// Specifies which parameter of an annotated method should be treated as the format string
    /// </param>
    public StringFormatMethodAttribute([NotNull] string formatParameterName)
    {
      FormatParameterName = formatParameterName;
    }

    [NotNull] public string FormatParameterName { get; }
  }

  /// <summary>
  /// Use this annotation to specify a type that contains static or const fields
  /// with values for the annotated property/field/parameter.
  /// The specified type will be used to improve completion suggestions.
  /// </summary>
  /// <example><code>
  /// namespace TestNamespace
  /// {
  ///   public class Constants
  ///   {
  ///     public static int INT_CONST = 1;
  ///     public const string STRING_CONST = "1";
  ///   }
  ///
  ///   public class Class1
  ///   {
  ///     [ValueProvider("TestNamespace.Constants")] public int myField;
  ///     public void Foo([ValueProvider("TestNamespace.Constants")] string str) { }
  ///
  ///     public void Test()
  ///     {
  ///       Foo(/*try completion here*/);//
  ///       myField = /*try completion here*/
  ///     }
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field,
    AllowMultiple = true)]
  public sealed class ValueProviderAttribute : Attribute
  {
    public ValueProviderAttribute([NotNull] string name)
    {
      Name = name;
    }

    [NotNull] public string Name { get; }
  }

  /// <summary>
  /// Indicates that the integral value falls into the specified interval.
  /// It's allowed to specify multiple non-intersecting intervals.
  /// Values of interval boundaries are inclusive.
  /// </summary>
  /// <example><code>
  /// void Foo([ValueRange(0, 100)] int value) {
  ///   if (value == -1) { // Warning: Expression is always 'false'
  ///     ...
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property |
    AttributeTargets.Method | AttributeTargets.Delegate,
    AllowMultiple = true)]
  public sealed class ValueRangeAttribute : Attribute
  {
    public object From { get; }
    public object To { get; }

    public ValueRangeAttribute(long from, long to)
    {
      From = from;
      To = to;
    }

    public ValueRangeAttribute(ulong from, ulong to)
    {
      From = from;
      To = to;
    }

    public ValueRangeAttribute(long value)
    {
      From = To = value;
    }

    public ValueRangeAttribute(ulong value)
    {
      From = To = value;
    }
  }

  /// <summary>
  /// Indicates that the integral value never falls below zero.
  /// </summary>
  /// <example><code>
  /// void Foo([NonNegativeValue] int value) {
  ///   if (value == -1) { // Warning: Expression is always 'false'
  ///     ...
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property |
    AttributeTargets.Method | AttributeTargets.Delegate)]
  public sealed class NonNegativeValueAttribute : Attribute { }

  /// <summary>
  /// Indicates that the function argument should be a string literal and match one
  /// of the parameters of the caller function. For example, ReSharper annotates
  /// the parameter of <see cref="System.ArgumentNullException"/>.
  /// </summary>
  /// <example><code>
  /// void Foo(string param) {
  ///   if (param == null)
  ///     throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class InvokerParameterNameAttribute : Attribute { }

  /// <summary>
  /// Indicates that the method is contained in a type that implements
  /// <c>System.ComponentModel.INotifyPropertyChanged</c> interface and this method
  /// is used to notify that some property value changed.
  /// </summary>
  /// <remarks>
  /// The method should be non-static and conform to one of the supported signatures:
  /// <list>
  /// <item><c>NotifyChanged(string)</c></item>
  /// <item><c>NotifyChanged(params string[])</c></item>
  /// <item><c>NotifyChanged{T}(Expression{Func{T}})</c></item>
  /// <item><c>NotifyChanged{T,U}(Expression{Func{T,U}})</c></item>
  /// <item><c>SetProperty{T}(ref T, T, string)</c></item>
  /// </list>
  /// </remarks>
  /// <example><code>
  /// public class Foo : INotifyPropertyChanged {
  ///   public event PropertyChangedEventHandler PropertyChanged;
  /// 
  ///   [NotifyPropertyChangedInvocator]
  ///   protected virtual void NotifyChanged(string propertyName) { ... }
  ///
  ///   string _name;
  /// 
  ///   public string Name {
  ///     get { return _name; }
  ///     set { _name = value; NotifyChanged("LastName"); /* Warning */ }
  ///   }
  /// }
  /// </code>
  /// Examples of generated notifications:
  /// <list>
  /// <item><c>NotifyChanged("Property")</c></item>
  /// <item><c>NotifyChanged(() =&gt; Property)</c></item>
  /// <item><c>NotifyChanged((VM x) =&gt; x.Property)</c></item>
  /// <item><c>SetProperty(ref myField, value, "Property")</c></item>
  /// </list>
  /// </example>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class NotifyPropertyChangedInvocatorAttribute : Attribute
  {
    public NotifyPropertyChangedInvocatorAttribute() { }
    public NotifyPropertyChangedInvocatorAttribute([NotNull] string parameterName)
    {
      ParameterName = parameterName;
    }

    [CanBeNull] public string ParameterName { get; }
  }

  /// <summary>
  /// Describes dependency between method input and output.
  /// </summary>
  /// <syntax>
  /// <p>Function Definition Table syntax:</p>
  /// <list>
  /// <item>FDT      ::= FDTRow [;FDTRow]*</item>
  /// <item>FDTRow   ::= Input =&gt; Output | Output &lt;= Input</item>
  /// <item>Input    ::= ParameterName: Value [, Input]*</item>
  /// <item>Output   ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}</item>
  /// <item>Value    ::= true | false | null | notnull | canbenull</item>
  /// </list>
  /// If the method has a single input parameter, its name could be omitted.<br/>
  /// Using <c>halt</c> (or <c>void</c>/<c>nothing</c>, which is the same) for the method output
  /// means that the method doesn't return normally (throws or terminates the process).<br/>
  /// Value <c>canbenull</c> is only applicable for output parameters.<br/>
  /// You can use multiple <c>[ContractAnnotation]</c> for each FDT row, or use single attribute
  /// with rows separated by semicolon. There is no notion of order rows, all rows are checked
  /// for applicability and applied per each program state tracked by the analysis engine.<br/>
  /// </syntax>
  /// <examples><list>
  /// <item><code>
  /// [ContractAnnotation("=&gt; halt")]
  /// public void TerminationMethod()
  /// </code></item>
  /// <item><code>
  /// [ContractAnnotation("null &lt;= param:null")] // reverse condition syntax
  /// public string GetName(string surname)
  /// </code></item>
  /// <item><code>
  /// [ContractAnnotation("s:null =&gt; true")]
  /// public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty()
  /// </code></item>
  /// <item><code>
  /// // A method that returns null if the parameter is null,
  /// // and not null if the parameter is not null
  /// [ContractAnnotation("null =&gt; null; notnull =&gt; notnull")]
  /// public object Transform(object data)
  /// </code></item>
  /// <item><code>
  /// [ContractAnnotation("=&gt; true, result: notnull; =&gt; false, result: null")]
  /// public bool TryParse(string s, out Person result)
  /// </code></item>
  /// </list></examples>
  [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
  public sealed class ContractAnnotationAttribute : Attribute
  {
    public ContractAnnotationAttribute([NotNull] string contract)
      : this(contract, false) { }

    public ContractAnnotationAttribute([NotNull] string contract, bool forceFullStates)
    {
      Contract = contract;
      ForceFullStates = forceFullStates;
    }

    [NotNull] public string Contract { get; }

    public bool ForceFullStates { get; }
  }

  /// <summary>
  /// Indicates whether the marked element should be localized.
  /// </summary>
  /// <example><code>
  /// [LocalizationRequiredAttribute(true)]
  /// class Foo {
  ///   string str = "my string"; // Warning: Localizable string
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.All)]
  public sealed class LocalizationRequiredAttribute : Attribute
  {
    public LocalizationRequiredAttribute() : this(true) { }

    public LocalizationRequiredAttribute(bool required)
    {
      Required = required;
    }

    public bool Required { get; }
  }

  /// <summary>
  /// Indicates that the value of the marked type (or its derivatives)
  /// cannot be compared using '==' or '!=' operators and <c>Equals()</c>
  /// should be used instead. However, using '==' or '!=' for comparison
  /// with <c>null</c> is always permitted.
  /// </summary>
  /// <example><code>
  /// [CannotApplyEqualityOperator]
  /// class NoEquality { }
  /// 
  /// class UsesNoEquality {
  ///   void Test() {
  ///     var ca1 = new NoEquality();
  ///     var ca2 = new NoEquality();
  ///     if (ca1 != null) { // OK
  ///       bool condition = ca1 == ca2; // Warning
  ///     }
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class | AttributeTargets.Struct)]
  public sealed class CannotApplyEqualityOperatorAttribute : Attribute { }

  /// <summary>
  /// When applied to a target attribute, specifies a requirement for any type marked
  /// with the target attribute to implement or inherit specific type or types.
  /// </summary>
  /// <example><code>
  /// [BaseTypeRequired(typeof(IComponent)] // Specify requirement
  /// class ComponentAttribute : Attribute { }
  /// 
  /// [Component] // ComponentAttribute requires implementing IComponent interface
  /// class MyComponent : IComponent { }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
  [BaseTypeRequired(typeof(Attribute))]
  public sealed class BaseTypeRequiredAttribute : Attribute
  {
    public BaseTypeRequiredAttribute([NotNull] Type baseType)
    {
      BaseType = baseType;
    }

    [NotNull] public Type BaseType { get; }
  }

  /// <summary>
  /// Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library),
  /// so this symbol will not be reported as unused (as well as by other usage inspections).
  /// </summary>
  [AttributeUsage(AttributeTargets.All)]
  public sealed class UsedImplicitlyAttribute : Attribute
  {
    public UsedImplicitlyAttribute()
      : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { }

    public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags)
      : this(useKindFlags, ImplicitUseTargetFlags.Default) { }

    public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags)
      : this(ImplicitUseKindFlags.Default, targetFlags) { }

    public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags)
    {
      UseKindFlags = useKindFlags;
      TargetFlags = targetFlags;
    }

    public ImplicitUseKindFlags UseKindFlags { get; }

    public ImplicitUseTargetFlags TargetFlags { get; }
  }

  /// <summary>
  /// Can be applied to attributes, type parameters, and parameters of a type assignable from <see cref="System.Type"/> .
  /// When applied to an attribute, the decorated attribute behaves the same as <see cref="UsedImplicitlyAttribute"/>.
  /// When applied to a type parameter or to a parameter of type <see cref="System.Type"/>,  indicates that the corresponding type
  /// is used implicitly.
  /// </summary>
  [AttributeUsage(AttributeTargets.Class | AttributeTargets.GenericParameter | AttributeTargets.Parameter)]
  public sealed class MeansImplicitUseAttribute : Attribute
  {
    public MeansImplicitUseAttribute()
      : this(ImplicitUseKindFlags.Default, ImplicitUseTargetFlags.Default) { }

    public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags)
      : this(useKindFlags, ImplicitUseTargetFlags.Default) { }

    public MeansImplicitUseAttribute(ImplicitUseTargetFlags targetFlags)
      : this(ImplicitUseKindFlags.Default, targetFlags) { }

    public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags, ImplicitUseTargetFlags targetFlags)
    {
      UseKindFlags = useKindFlags;
      TargetFlags = targetFlags;
    }

    [UsedImplicitly] public ImplicitUseKindFlags UseKindFlags { get; }

    [UsedImplicitly] public ImplicitUseTargetFlags TargetFlags { get; }
  }

  /// <summary>
  /// Specify the details of implicitly used symbol when it is marked
  /// with <see cref="MeansImplicitUseAttribute"/> or <see cref="UsedImplicitlyAttribute"/>.
  /// </summary>
  [Flags]
  public enum ImplicitUseKindFlags
  {
    Default = Access | Assign | InstantiatedWithFixedConstructorSignature,
    /// <summary>Only entity marked with attribute considered used.</summary>
    Access = 1,
    /// <summary>Indicates implicit assignment to a member.</summary>
    Assign = 2,
    /// <summary>
    /// Indicates implicit instantiation of a type with fixed constructor signature.
    /// That means any unused constructor parameters won't be reported as such.
    /// </summary>
    InstantiatedWithFixedConstructorSignature = 4,
    /// <summary>Indicates implicit instantiation of a type.</summary>
    InstantiatedNoFixedConstructorSignature = 8,
  }

  /// <summary>
  /// Specify what is considered to be used implicitly when marked
  /// with <see cref="MeansImplicitUseAttribute"/> or <see cref="UsedImplicitlyAttribute"/>.
  /// </summary>
  [Flags]
  public enum ImplicitUseTargetFlags
  {
    Default = Itself,
    Itself = 1,
    /// <summary>Members of entity marked with attribute are considered used.</summary>
    Members = 2,
    /// <summary> Inherited entities are considered used. </summary>
    WithInheritors = 4,
    /// <summary>Entity marked with attribute and all its members considered used.</summary>
    WithMembers = Itself | Members
  }

  /// <summary>
  /// This attribute is intended to mark publicly available API
  /// which should not be removed and so is treated as used.
  /// </summary>
  [MeansImplicitUse(ImplicitUseTargetFlags.WithMembers)]
  [AttributeUsage(AttributeTargets.All, Inherited = false)]
  public sealed class PublicAPIAttribute : Attribute
  {
    public PublicAPIAttribute() { }

    public PublicAPIAttribute([NotNull] string comment)
    {
      Comment = comment;
    }

    [CanBeNull] public string Comment { get; }
  }

  /// <summary>
  /// Tells code analysis engine if the parameter is completely handled when the invoked method is on stack.
  /// If the parameter is a delegate, indicates that delegate is executed while the method is executed.
  /// If the parameter is an enumerable, indicates that it is enumerated while the method is executed.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class InstantHandleAttribute : Attribute { }

  /// <summary>
  /// Indicates that a method does not make any observable state changes.
  /// The same as <c>System.Diagnostics.Contracts.PureAttribute</c>.
  /// </summary>
  /// <example><code>
  /// [Pure] int Multiply(int x, int y) => x * y;
  /// 
  /// void M() {
  ///   Multiply(123, 42); // Warning: Return value of pure method is not used
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class PureAttribute : Attribute { }

  /// <summary>
  /// Indicates that the return value of the method invocation must be used.
  /// </summary>
  /// <remarks>
  /// Methods decorated with this attribute (in contrast to pure methods) might change state,
  /// but make no sense without using their return value. <br/>
  /// Similarly to <see cref="PureAttribute"/>, this attribute
  /// will help detecting usages of the method when the return value in not used.
  /// Additionally, you can optionally specify a custom message, which will be used when showing warnings, e.g.
  /// <code>[MustUseReturnValue("Use the return value to...")]</code>.
  /// </remarks>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class MustUseReturnValueAttribute : Attribute
  {
    public MustUseReturnValueAttribute() { }

    public MustUseReturnValueAttribute([NotNull] string justification)
    {
      Justification = justification;
    }

    [CanBeNull] public string Justification { get; }
  }

  /// <summary>
  /// Indicates the type member or parameter of some type, that should be used instead of all other ways
  /// to get the value of that type. This annotation is useful when you have some "context" value evaluated
  /// and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one.
  /// </summary>
  /// <example><code>
  /// class Foo {
  ///   [ProvidesContext] IBarService _barService = ...;
  /// 
  ///   void ProcessNode(INode node) {
  ///     DoSomething(node, node.GetGlobalServices().Bar);
  ///     //              ^ Warning: use value of '_barService' field
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(
    AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter | AttributeTargets.Method |
    AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct | AttributeTargets.GenericParameter)]
  public sealed class ProvidesContextAttribute : Attribute { }

  /// <summary>
  /// Indicates that a parameter is a path to a file or a folder within a web project.
  /// Path can be relative or absolute, starting from web root (~).
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class PathReferenceAttribute : Attribute
  {
    public PathReferenceAttribute() { }

    public PathReferenceAttribute([NotNull, PathReference] string basePath)
    {
      BasePath = basePath;
    }

    [CanBeNull] public string BasePath { get; }
  }

  /// <summary>
  /// An extension method marked with this attribute is processed by code completion
  /// as a 'Source Template'. When the extension method is completed over some expression, its source code
  /// is automatically expanded like a template at call site.
  /// </summary>
  /// <remarks>
  /// Template method body can contain valid source code and/or special comments starting with '$'.
  /// Text inside these comments is added as source code when the template is applied. Template parameters
  /// can be used either as additional method parameters or as identifiers wrapped in two '$' signs.
  /// Use the <see cref="MacroAttribute"/> attribute to specify macros for parameters.
  /// </remarks>
  /// <example>
  /// In this example, the 'forEach' method is a source template available over all values
  /// of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block:
  /// <code>
  /// [SourceTemplate]
  /// public static void forEach&lt;T&gt;(this IEnumerable&lt;T&gt; xs) {
  ///   foreach (var x in xs) {
  ///      //$ $END$
  ///   }
  /// }
  /// </code>
  /// </example>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class SourceTemplateAttribute : Attribute { }

  /// <summary>
  /// Allows specifying a macro for a parameter of a <see cref="SourceTemplateAttribute">source template</see>.
  /// </summary>
  /// <remarks>
  /// You can apply the attribute on the whole method or on any of its additional parameters. The macro expression
  /// is defined in the <see cref="MacroAttribute.Expression"/> property. When applied on a method, the target
  /// template parameter is defined in the <see cref="MacroAttribute.Target"/> property. To apply the macro silently
  /// for the parameter, set the <see cref="MacroAttribute.Editable"/> property value = -1.
  /// </remarks>
  /// <example>
  /// Applying the attribute on a source template method:
  /// <code>
  /// [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")]
  /// public static void forEach&lt;T&gt;(this IEnumerable&lt;T&gt; collection) {
  ///   foreach (var item in collection) {
  ///     //$ $END$
  ///   }
  /// }
  /// </code>
  /// Applying the attribute on a template method parameter:
  /// <code>
  /// [SourceTemplate]
  /// public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) {
  ///   /*$ var $x$Id = "$newguid$" + x.ToString();
  ///   x.DoSomething($x$Id); */
  /// }
  /// </code>
  /// </example>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method, AllowMultiple = true)]
  public sealed class MacroAttribute : Attribute
  {
    /// <summary>
    /// Allows specifying a macro that will be executed for a <see cref="SourceTemplateAttribute">source template</see>
    /// parameter when the template is expanded.
    /// </summary>
    [CanBeNull] public string Expression { get; set; }

    /// <summary>
    /// Allows specifying which occurrence of the target parameter becomes editable when the template is deployed.
    /// </summary>
    /// <remarks>
    /// If the target parameter is used several times in the template, only one occurrence becomes editable;
    /// other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence,
    /// use values >= 0. To make the parameter non-editable when the template is expanded, use -1.
    /// </remarks>
    public int Editable { get; set; }

    /// <summary>
    /// Identifies the target parameter of a <see cref="SourceTemplateAttribute">source template</see> if the
    /// <see cref="MacroAttribute"/> is applied on a template method.
    /// </summary>
    [CanBeNull] public string Target { get; set; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcAreaMasterLocationFormatAttribute : Attribute
  {
    public AspMvcAreaMasterLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcAreaPartialViewLocationFormatAttribute : Attribute
  {
    public AspMvcAreaPartialViewLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcAreaViewLocationFormatAttribute : Attribute
  {
    public AspMvcAreaViewLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcMasterLocationFormatAttribute : Attribute
  {
    public AspMvcMasterLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcPartialViewLocationFormatAttribute : Attribute
  {
    public AspMvcPartialViewLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
  public sealed class AspMvcViewLocationFormatAttribute : Attribute
  {
    public AspMvcViewLocationFormatAttribute([NotNull] string format)
    {
      Format = format;
    }

    [NotNull] public string Format { get; }
  }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
  /// is an MVC action. If applied to a method, the MVC action name is calculated
  /// implicitly from the context. Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcActionAttribute : Attribute
  {
    public AspMvcActionAttribute() { }

    public AspMvcActionAttribute([NotNull] string anonymousProperty)
    {
      AnonymousProperty = anonymousProperty;
    }

    [CanBeNull] public string AnonymousProperty { get; }
  }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC area.
  /// Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcAreaAttribute : Attribute
  {
    public AspMvcAreaAttribute() { }

    public AspMvcAreaAttribute([NotNull] string anonymousProperty)
    {
      AnonymousProperty = anonymousProperty;
    }

    [CanBeNull] public string AnonymousProperty { get; }
  }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is
  /// an MVC controller. If applied to a method, the MVC controller name is calculated
  /// implicitly from the context. Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcControllerAttribute : Attribute
  {
    public AspMvcControllerAttribute() { }

    public AspMvcControllerAttribute([NotNull] string anonymousProperty)
    {
      AnonymousProperty = anonymousProperty;
    }

    [CanBeNull] public string AnonymousProperty { get; }
  }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC Master. Use this attribute
  /// for custom wrappers similar to <c>System.Web.Mvc.Controller.View(String, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcMasterAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC model type. Use this attribute
  /// for custom wrappers similar to <c>System.Web.Mvc.Controller.View(String, Object)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class AspMvcModelTypeAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC
  /// partial view. If applied to a method, the MVC partial view name is calculated implicitly
  /// from the context. Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcPartialViewAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method.
  /// </summary>
  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
  public sealed class AspMvcSuppressViewErrorAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that a parameter is an MVC display template.
  /// Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcDisplayTemplateAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC editor template.
  /// Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcEditorTemplateAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. Indicates that the marked parameter is an MVC template.
  /// Use this attribute for custom wrappers similar to
  /// <c>System.ComponentModel.DataAnnotations.UIHintAttribute(System.String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcTemplateAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
  /// is an MVC view component. If applied to a method, the MVC view name is calculated implicitly
  /// from the context. Use this attribute for custom wrappers similar to
  /// <c>System.Web.Mvc.Controller.View(Object)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcViewAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
  /// is an MVC view component name.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcViewComponentAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
  /// is an MVC view component view. If applied to a method, the MVC view component view name is default.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class AspMvcViewComponentViewAttribute : Attribute { }

  /// <summary>
  /// ASP.NET MVC attribute. When applied to a parameter of an attribute,
  /// indicates that this parameter is an MVC action name.
  /// </summary>
  /// <example><code>
  /// [ActionName("Foo")]
  /// public ActionResult Login(string returnUrl) {
  ///   ViewBag.ReturnUrl = Url.Action("Foo"); // OK
  ///   return RedirectToAction("Bar"); // Error: Cannot resolve action
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)]
  public sealed class AspMvcActionSelectorAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field)]
  public sealed class HtmlElementAttributesAttribute : Attribute
  {
    public HtmlElementAttributesAttribute() { }

    public HtmlElementAttributesAttribute([NotNull] string name)
    {
      Name = name;
    }

    [CanBeNull] public string Name { get; }
  }

  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class HtmlAttributeValueAttribute : Attribute
  {
    public HtmlAttributeValueAttribute([NotNull] string name)
    {
      Name = name;
    }

    [NotNull] public string Name { get; }
  }

  /// <summary>
  /// Razor attribute. Indicates that the marked parameter or method is a Razor section.
  /// Use this attribute for custom wrappers similar to
  /// <c>System.Web.WebPages.WebPageBase.RenderSection(String)</c>.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
  public sealed class RazorSectionAttribute : Attribute { }

  /// <summary>
  /// Indicates how method, constructor invocation, or property access
  /// over collection type affects the contents of the collection.
  /// Use <see cref="CollectionAccessType"/> to specify the access type.
  /// </summary>
  /// <remarks>
  /// Using this attribute only makes sense if all collection methods are marked with this attribute.
  /// </remarks>
  /// <example><code>
  /// public class MyStringCollection : List&lt;string&gt;
  /// {
  ///   [CollectionAccess(CollectionAccessType.Read)]
  ///   public string GetFirstString()
  ///   {
  ///     return this.ElementAt(0);
  ///   }
  /// }
  /// class Test
  /// {
  ///   public void Foo()
  ///   {
  ///     // Warning: Contents of the collection is never updated
  ///     var col = new MyStringCollection();
  ///     string x = col.GetFirstString();
  ///   }
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Property)]
  public sealed class CollectionAccessAttribute : Attribute
  {
    public CollectionAccessAttribute(CollectionAccessType collectionAccessType)
    {
      CollectionAccessType = collectionAccessType;
    }

    public CollectionAccessType CollectionAccessType { get; }
  }

  /// <summary>
  /// Provides a value for the <see cref="CollectionAccessAttribute"/> to define
  /// how the collection method invocation affects the contents of the collection.
  /// </summary>
  [Flags]
  public enum CollectionAccessType
  {
    /// <summary>Method does not use or modify content of the collection.</summary>
    None = 0,
    /// <summary>Method only reads content of the collection but does not modify it.</summary>
    Read = 1,
    /// <summary>Method can change content of the collection but does not add new elements.</summary>
    ModifyExistingContent = 2,
    /// <summary>Method can add new elements to the collection.</summary>
    UpdatedContent = ModifyExistingContent | 4
  }

  /// <summary>
  /// Indicates that the marked method is assertion method, i.e. it halts the control flow if
  /// one of the conditions is satisfied. To set the condition, mark one of the parameters with
  /// <see cref="AssertionConditionAttribute"/> attribute.
  /// </summary>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class AssertionMethodAttribute : Attribute { }

  /// <summary>
  /// Indicates the condition parameter of the assertion method. The method itself should be
  /// marked by <see cref="AssertionMethodAttribute"/> attribute. The mandatory argument of
  /// the attribute is the assertion type.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class AssertionConditionAttribute : Attribute
  {
    public AssertionConditionAttribute(AssertionConditionType conditionType)
    {
      ConditionType = conditionType;
    }

    public AssertionConditionType ConditionType { get; }
  }

  /// <summary>
  /// Specifies assertion type. If the assertion method argument satisfies the condition,
  /// then the execution continues. Otherwise, execution is assumed to be halted.
  /// </summary>
  public enum AssertionConditionType
  {
    /// <summary>Marked parameter should be evaluated to true.</summary>
    IS_TRUE = 0,
    /// <summary>Marked parameter should be evaluated to false.</summary>
    IS_FALSE = 1,
    /// <summary>Marked parameter should be evaluated to null value.</summary>
    IS_NULL = 2,
    /// <summary>Marked parameter should be evaluated to not null value.</summary>
    IS_NOT_NULL = 3,
  }

  /// <summary>
  /// Indicates that the marked method unconditionally terminates control flow execution.
  /// For example, it could unconditionally throw exception.
  /// </summary>
  [Obsolete("Use [ContractAnnotation('=> halt')] instead")]
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class TerminatesProgramAttribute : Attribute { }

  /// <summary>
  /// Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select,
  /// .Where). This annotation allows inference of [InstantHandle] annotation for parameters
  /// of delegate type by analyzing LINQ method chains.
  /// </summary>
  [AttributeUsage(AttributeTargets.Method)]
  public sealed class LinqTunnelAttribute : Attribute { }

  /// <summary>
  /// Indicates that IEnumerable passed as a parameter is not enumerated.
  /// Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection.
  /// </summary>
  /// <example><code>
  /// static void ThrowIfNull&lt;T&gt;([NoEnumeration] T v, string n) where T : class
  /// {
  ///   // custom check for null but no enumeration
  /// }
  /// 
  /// void Foo(IEnumerable&lt;string&gt; values)
  /// {
  ///   ThrowIfNull(values, nameof(values));
  ///   var x = values.ToList(); // No warnings about multiple enumeration
  /// }
  /// </code></example>
  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class NoEnumerationAttribute : Attribute { }

  /// <summary>
  /// Indicates that the marked parameter is a regular expression pattern.
  /// </summary>
  [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
  public sealed class RegexPatternAttribute : Attribute { }

  /// <summary>
  /// Prevents the Member Reordering feature from tossing members of the marked class.
  /// </summary>
  /// <remarks>
  /// The attribute must be mentioned in your member reordering patterns.
  /// </remarks>
  [AttributeUsage(
    AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct | AttributeTargets.Enum)]
  public sealed class NoReorderAttribute : Attribute { }

  /// <summary>
  /// XAML attribute. Indicates the type that has <c>ItemsSource</c> property and should be treated
  /// as <c>ItemsControl</c>-derived type, to enable inner items <c>DataContext</c> type resolve.
  /// </summary>
  [AttributeUsage(AttributeTargets.Class)]
  public sealed class XamlItemsControlAttribute : Attribute { }

  /// <summary>
  /// XAML attribute. Indicates the property of some <c>BindingBase</c>-derived type, that
  /// is used to bind some item of <c>ItemsControl</c>-derived type. This annotation will
  /// enable the <c>DataContext</c> type resolve for XAML bindings for such properties.
  /// </summary>
  /// <remarks>
  /// Property should have the tree ancestor of the <c>ItemsControl</c> type or
  /// marked with the <see cref="XamlItemsControlAttribute"/> attribute.
  /// </remarks>
  [AttributeUsage(AttributeTargets.Property)]
  public sealed class XamlItemBindingOfItemsControlAttribute : Attribute { }

  /// <summary>
  /// XAML attribute. Indicates the property of some <c>Style</c>-derived type, that
  /// is used to style items of <c>ItemsControl</c>-derived type. This annotation will
  /// enable the <c>DataContext</c> type resolve for XAML bindings for such properties.
  /// </summary>
  /// <remarks>
  /// Property should have the tree ancestor of the <c>ItemsControl</c> type or
  /// marked with the <see cref="XamlItemsControlAttribute"/> attribute.
  /// </remarks>
  [AttributeUsage(AttributeTargets.Property)]
  public sealed class XamlItemStyleOfItemsControlAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
  public sealed class AspChildControlTypeAttribute : Attribute
  {
    public AspChildControlTypeAttribute([NotNull] string tagName, [NotNull] Type controlType)
    {
      TagName = tagName;
      ControlType = controlType;
    }

    [NotNull] public string TagName { get; }

    [NotNull] public Type ControlType { get; }
  }

  [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
  public sealed class AspDataFieldAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
  public sealed class AspDataFieldsAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Property)]
  public sealed class AspMethodPropertyAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
  public sealed class AspRequiredAttributeAttribute : Attribute
  {
    public AspRequiredAttributeAttribute([NotNull] string attribute)
    {
      Attribute = attribute;
    }

    [NotNull] public string Attribute { get; }
  }

  [AttributeUsage(AttributeTargets.Property)]
  public sealed class AspTypePropertyAttribute : Attribute
  {
    public bool CreateConstructorReferences { get; }

    public AspTypePropertyAttribute(bool createConstructorReferences)
    {
      CreateConstructorReferences = createConstructorReferences;
    }
  }

  [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
  public sealed class RazorImportNamespaceAttribute : Attribute
  {
    public RazorImportNamespaceAttribute([NotNull] string name)
    {
      Name = name;
    }

    [NotNull] public string Name { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
  public sealed class RazorInjectionAttribute : Attribute
  {
    public RazorInjectionAttribute([NotNull] string type, [NotNull] string fieldName)
    {
      Type = type;
      FieldName = fieldName;
    }

    [NotNull] public string Type { get; }

    [NotNull] public string FieldName { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
  public sealed class RazorDirectiveAttribute : Attribute
  {
    public RazorDirectiveAttribute([NotNull] string directive)
    {
      Directive = directive;
    }

    [NotNull] public string Directive { get; }
  }

  [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
  public sealed class RazorPageBaseTypeAttribute : Attribute
  {
      public RazorPageBaseTypeAttribute([NotNull] string baseType)
      {
        BaseType = baseType;
      }
      public RazorPageBaseTypeAttribute([NotNull] string baseType, string pageName)
      {
          BaseType = baseType;
          PageName = pageName;
      }

      [NotNull] public string BaseType { get; }
      [CanBeNull] public string PageName { get; }
  }

  [AttributeUsage(AttributeTargets.Method)]
  public sealed class RazorHelperCommonAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Property)]
  public sealed class RazorLayoutAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Method)]
  public sealed class RazorWriteLiteralMethodAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Method)]
  public sealed class RazorWriteMethodAttribute : Attribute { }

  [AttributeUsage(AttributeTargets.Parameter)]
  public sealed class RazorWriteMethodParameterAttribute : Attribute { }
}

================================================
FILE: Diz.App.Winforms/Properties/AssemblyInfo.cs
================================================
using Diz.App.Winforms;
using LightInject;

[assembly: CompositionRootType(typeof(DizAppWinformsCompositionRoot))]

================================================
FILE: Diz.App.Winforms/Properties/PublishProfiles/FolderProfile.pubxml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Configuration>Release</Configuration>
        <Platform>Any CPU</Platform>
        <PublishDir>bin\Release\net9.0-windows\publish\</PublishDir>
        <PublishProtocol>FileSystem</PublishProtocol>
        <TargetFramework>net9.0-windows</TargetFramework>
        <SelfContained>false</SelfContained>
        <DeleteExistingFiles>True</DeleteExistingFiles>
    </PropertyGroup>
</Project>

================================================
FILE: Diz.App.Winforms/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Diz.App.Winforms.Properties {
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DiztinGUIsh.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
    }
}


================================================
FILE: Diz.App.Winforms/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</root>

================================================
FILE: Diz.App.Winforms/RegisterWinformsServices.cs
================================================
using Diz.App.Common;
using Diz.Core.util;
using Diz.Ui.Winforms;
using LightInject;

namespace Diz.App.Winforms;

public static class DizWinformsRegisterServices
{
    public static IServiceFactory CreateServiceFactoryAndRegisterTypes()
    {
        var serviceProvider = DizServiceProvider.CreateServiceContainer();
        RegisterDizUiServices(serviceProvider);
        
        return serviceProvider;
    }

    public static void RegisterDizUiServices(IServiceRegistry serviceRegistry)
    {
        // option #1: we can simply register services in any Diz*dll's that are found in a scan.
        // this is easy but we have less control
        // DizCoreServicesDllRegistration.RegisterServicesInDizDlls(serviceRegistry);

        // option #2: register everything by hand (this is what we'll do).
        
        // pull in all common stuff (platform-independent)
        serviceRegistry.RegisterFrom<DizAppCommonCompositionRoot>();
        
        // pull in winforms-specific UI stuff:
        serviceRegistry.RegisterFrom<DizUiWinformsCompositionRoot>();
        
        // finally, pull in OUR stuff, which is winforms-specific
        serviceRegistry.RegisterFrom<DizAppWinformsCompositionRoot>();
    }
}

================================================
FILE: Diz.App.Winforms/build/TidyPublishDir.targets
================================================
<!-- 
This file is invoked for publish targets 
On publish, move some files around to make the distribution distro look nicer.

reference info:
https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2019
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-5.0
-->
<Project>
    <Target Name="TidyPublishDir" AfterTargets="Publish">
        <!--<Message Text="xxxxxxxx Custom target after publish $(PublishDir) ****************" Importance="high" />-->
        
        <Error Condition="'$(PublishDir)' == ''" Text="PublishDir variable not set, can't continue."/>

        <!-- where we're going to move DLLs and other root-level things we don't want in the root dir anymore -->
        <PropertyGroup>
            <LibOutDir>$(PublishDir)lib\</LibOutDir>
            <DocsOutDir>$(PublishDir)docs\</DocsOutDir>
            <NewExeName>DIZ.exe</NewExeName>
        </PropertyGroup>

        <!-- list of *static* files to copy into the root dir -->
        <ItemGroup>
            <ExtraStaticFiles Include="dist\**\*.*"/>
            <!-- Don't include .md files here anymore, they'll be handled separately -->
        </ItemGroup>

        <!-- list of .md files to copy into the docs folder -->
        <ItemGroup>
            <MdFiles Include="..\README.md"/>
            <MdFiles Include="..\LICENSE.md"/>
        </ItemGroup>

        <!-- create a list of files we want to move in the output lib folder -->
        <ItemGroup>
            <LibFiles Include="$(PublishDir)**\*.dll"/>
            <LibFiles Include="$(PublishDir)**\*.xml"/>
<!--   MINIFYING THIS, so, exclude these         <LibFiles Include="$(PublishDir)**\*.pdb"/>-->
<!--   NORMALLY YES. for Diz, it's OK to not have these as long as our code defaults are OK         <LibFiles Include="$(PublishDir)**\*.config"/>-->
            <LibFiles Remove="$(LibOutDir)\**\*.*"/>
            <LibFiles Remove="$(PublishDir)$(ProjectName)*"/>
            <LibFiles Remove="$(PublishDir)$(ProjectName).exe"/>
        </ItemGroup>

        <!-- list of files to delete from the publish directory -->
        <ItemGroup>
            <FilesToDelete Include="$(PublishDir)**\*.pdb"/>
            <FilesToDelete Include="$(PublishDir)**\*.config"/>
        </ItemGroup>

        <!-- move file to lib/ dir -->
        <!-- note: THIS <Move> command is fine, but, we need to modify our manifests to search this new folder.
            works in net4.8 but not 5.0 yet.
        <Move SourceFiles="%(LibFiles.Identity)" DestinationFolder="$(LibOutDir)%(LibFiles.RecursiveDir)"/>
        -->

        <!-- copy any static files to the root dir, keep the same folder structure -->
        <Copy SourceFiles="%(ExtraStaticFiles.Identity)" DestinationFolder="$(PublishDir)%(ExtraStaticFiles.RecursiveDir)"/>

        <!-- copy .md files to the docs folder -->
        <MakeDir Directories="$(DocsOutDir)" Condition="@(MdFiles) != ''" />
        <Copy SourceFiles="%(MdFiles.Identity)" DestinationFolder="$(DocsOutDir)" Condition="@(MdFiles) != ''" />

        <!-- rename the main executable -->
        <Move SourceFiles="$(PublishDir)$(ProjectName).exe" DestinationFiles="$(PublishDir)$(NewExeName)" Condition="Exists('$(PublishDir)$(ProjectName).exe')" />

        <!-- delete unwanted files -->
        <Delete Files="@(FilesToDelete)" ContinueOnError="true" />

        <!-- done moving stuff. remove any directories that are now-empty left -->
        <ItemGroup>
            <Directories Include="$([System.IO.Directory]::GetDirectories('$(PublishDir)', '*', System.IO.SearchOption.AllDirectories))"/>
            <Directories>
                <Files>$([System.IO.Directory]::GetFiles("%(Directories.Identity)", "*", System.IO.SearchOption.AllDirectories).get_Length())</Files>
            </Directories>
        </ItemGroup>
        <RemoveDir Directories="@(Directories)" Condition="%(Files)=='0'"/>
    </Target>
</Project>

================================================
FILE: Diz.App.Winforms/dist/docs/HELP.md
================================================
DiztinGUIsh Introduction
------------------------

DiztinGUIsh is a Super NES ROM disassembler. Open a ROM file, flag each byte as code or data, add some extra info like labels and comments, 
and disassemble. The output will be one or more .asm files that are (idealy) equivalent to the original source code of the game. 
The assembly files can then be re-assembled with [Asar](https://github.com/RPGHacker/asar/releases) to check for integrity,
and/or to make simple changes to the code.

As you may guess, tagging every single byte as data or code is a tedious process, so DiztinGUIsh has many tools built in to make the 
process more bearable. Disassembling 65C816 code can be quite tricky, so some human input is still required to get a 100% accurate disassembly, but most of the job will be done automatically.

Diz works GREAT with Tracelog tools, like BSNES+. We modified a version of BSNES to also support live capture from a running BSNES,
which means you can run the game at full framerate and grab all the juicy data coming off the CPU. This will mark millions of instructions
correct with the right flags for you, and is a fantastic way to crack a ROM's secrets wide open.

Be sure to also check out BSNES's usage map importing features to fill in sections of data vs code.

* * *

DiztinGUIsh Main Window
-----------------------

This is the window where most of the work is done. It consists of one very large table, some text at the bottom, and some options at the top.

#### File

Create new projects, open & save [projects](#projectfiles), [export a disassembly](#disassembly), and exit from this menu.

#### Tools

This menu will bring up additional tools to help you with managing data.

*   **Visual Map**: This window lets you see a visual map of the entire ROM, including what each byte is flagged as.
*   **Constants**: This changes what base the "raw byte" column is shown in. You can pick from decimal, hexadecimal, and binary.
*   **Options**
    *   **Move With Step**: When enabled, the currently selected cell in the table will jump to the byte after the last modified byte after a auto step or mark many operation.

* * *

### Project Files

All of the flags, labels, comments, and other data you make to help with disassembling will be put into a single [Project File](#fileformat) (\*.diz). 
This file contains a _link_ to the ROM you are currently working on, but doesn't contain the ROM itself. This is for copyright reasons, and so you can
easily share project files without worry of sharing ROM files as well. Because of this, if the ROM file you are working on is deleted or is relocated on 
your computer, DiztinGUIsh will ask to relocate the file. The ROM's internal name and checksum are stored to make sure you relink the same ROM you started 
with, but it is technically possible to relink a different ROM. Not sure what would happen then, but it wouldn't be anything you'd want.

When you start DiztinGUIsh, you can start a new project or open an existing one. Opening an existing project is simple, though you may have to relink 
your ROM if it moved, or if you received this project file from a friend. When you start a new project, DiztinGUIsh will first prompt you to select a 
ROM file you want to work on.

#### Starting a Project

DiztinGUIsh currently supports seven types of _ROM Mapping Modes_: LoROM, HiROM, two SA-1 modes, SuperFX, ExHiROM, & ExLoROM. The program will try its best 
to detect what mode the ROM you selected uses. There is a chance it won't be able to figure it out, or it will guess wrong. After you select a ROM file,
DiztinGUIsh will show the ROM's internal name. If this doesn't look correct, try changing the ROM Map mode.

_Note: Some Japanese titles will display as gibberish, so it is possible that the correct ROM Mapping Mode will result in a garbage looking title._

_Note: Although mapping mode 2, Super MMC, is an option, it currently functions identically to HiROM._

DiztinGUIsh also provides a few extra jumpstart options on the New Project window. 
The table of numbers on the bottom half of the window show the ROM's _vectors_, which are special pointers that locate code that runs under special 
circumstances (interrupts, bootup, etc.). By default, DiztinGUIsh will check off the vectors it thinks are important. Checking off a vector will 
automatically generate a label at the location of the pointer (e.g. "Native\_NMI").

If the final checkbox is checked, DiztinGUIsh will automatically mark flags for the entire internal header. This includes the internal name, 
ROM meta info & mapping settings, developer codes, & the vectors.

* * *

### Table Grid View

In DiztinGUIsh, _one byte equals one row in the table_. Instructions will be one or more rows depending on how many operands there are. 
Pointers will be more than one row. Each byte has many pieces of data associated with it--these are stored in each of the table's columns.

#### Label

Here you can create a custom label for this location in the ROM. Labels are useful to identify what things are in the ROM. 
You can label code, data, or anything really. Labels will be automatically used in the disassembly when available.

#### PC

This column shows the "program counter" for the current byte. This is effectively the location in the SNES's address space where this byte will be found.

#### @

This column shows an ASCII representation of the current byte. Mainly useful for locating text within the ROM.

#### #

This column shows the raw byte. You can change what base this value is displayed in via the View -> Constants menu.

#### <\*>

This column shows _in points, out points, end points, & read points_.

*   In points are locations in ROM where execution can jump to from somewhere other than the instruction directly before it. These are denoted by a ">" symbol. 
    In points are usually the result of a branch, jump, or call instruction.
*   Out points are locations where execution can jump elsewhere other than the instruction directly after it. These are denoted by a "<" symbol. 
    Out points are usually the result of a branch, jump, call, or return instruction.
*   End points are special out points where execution cannot directly flow from this instruction to the next directly after. 
    These are denoted by a "X" symbol. End points are usually the result of a jump or return instruction.
*   Finally, read points are locations in ROM that are the intermediate address of some other load/store/math instruction in the ROM. 
    These are denoted by a "\*" symbol. Read points are often the start of a table of data.

#### Instruction

This column shows what instruction this byte would be disassembled to if it were treated as an opcode.

The instruction may be highlighted in yellow if DiztinGUIsh thinks the instruction is risky. That is, a rarely used instruction that more likely 
than not means that the code is desynched.

#### IA

This column shows the intermediate address of the instruction or pointer located at this byte. The intermediate address is basically the
"address of importance" of an instruction--what address is actually being read/stored/jumped to, etc. Often, the instruction operands only 
specify a small chunk of the intermediate address, and the rest of it has to be inferred by other registers such as the program counter, 
data bank register, or direct page register. This column does all the math for you and spits out the intermediate address of the instruction. 
Note that this is not to be confused with the _effective address_, which is the "final result" address after locating indirect operands and/or
adding index registers.

The intermediate address will be calculated assuming this byte is marked as an opcode--UNLESS it is marked as some sort of pointer. Then, 
the intermediate address will just be the value of the pointer.

_Note: If the byte is marked as a 16-bit pointer, the bank of the intermediate address will be derived from the Data Bank register (B)._

#### Flag

This column displays what kind of data this byte will be treated as. Your primary job with Diz is to  
correctly mark the ROM with these flags

*   **Unreached**: This is the default flag. Basically means unknown. Your goal in Diz is clear all (or enough) unreached sections
*   **Opcode**: This byte is the opcode of an instruction. Zero or more Operands may follow it.
*   **Operand**: This byte is an operand of an instruction. Which instruction? The one marked as an Opcode a byte or more before it.
*   **Data (8-bit)**: Generic 8-bit (1-byte) long data.
*   **Graphics**: Special 8-bit data specifically used as graphics. Isn't treated any differently than plain 8-bit data (_yet_).
*   **Music**: Special 8-bit data specifically used as music. Isn't treated any differently than plain 8-bit data (_yet_).
*   **Empty**: Special 8-bit data specifically used as empty filler. Isn't treated any differently than plain 8-bit data (_yet_).
*   **Data (16-bit)**: Generic 16-bit (2-byte) long data.
*   **Pointer (16-bit)**: The lower 16-bits of a pointer. The bank of the intermediate address is derived from the Data Bank register (B).
*   **Data (24-bit)**: Generic 24-bit (3-byte) long data.
*   **Pointer (24-bit)**: A full 24-bit pointer.
*   **Data (32-bit)**: Generic 32-bit (4-byte) long data.
*   **Pointer (32-bit)**: A full 24-bit pointer, followed by a filler byte. This is common so that pointers are separated by 4 bytes (a power of 2).
*   **Text**: Special 8-bit data specifically used as ASCII text. This will be disassembled into a human-readable string.

#### B

The value of the _Data Bank register_ during execution of this code. Some instructions derive their intermediate address using the value of the data bank register.
The data bank register is also used as the bank byte of a 16-bit pointer.

The value will be highlighted in yellow if the instruction at this location stores the data bank register (PHB). It will be highlighted in red if the
instruction writes to the data bank register (PLB : MVP : MVN). This way you can be on a lookout for changes to this register.

#### D

The value of the _Direct Page register_ during execution of this code. Some instructions derive their intermediate address using the value of the direct
page register.

The value will be highlighted in yellow if the instruction at this location stores the direct page register (PHD : TDC). It will be highlighted in red 
if the instruction writes to the direct page register (PLD : TCD). This way you can be on a lookout for changes to this register.

#### M

The current state of the M flag in the program status register (P). When the flag is cleared (m = 0), the accumulator A is 16 bits wide. 
When it is set (M = 1), the accumulator A is 8 bits wide. Some instructions interpret their operands differently according to the state of the M flag. 
If some code is desynched or doesn't make since, try toggling the M flag.

The value will be highlighted in yellow if the instruction at this location stores the program status register (PHP).
It will be highlighted in red if the instruction writes to the program status register and potentially modifies the M flag (PLP : REP : SEP). 
This way you can be on a lookout for changes to this flag.

#### X

The current state of the X flag in the program status register (P). When the flag is cleared (x = 0), the index registers X and Y are 16 bits wide.
When it is set (X = 1), the index registers X and Y are 8 bits wide. Some instructions interpret their operands differently according to the state 
of the X flag. If some code is desynched or doesn't make since, try toggling the X flag.

The value will be highlighted in yellow if the instruction at this location stores the program status register (PHP). It will be highlighted in red
if the instruction writes to the program status register and potentially modifies the X flag (PLP : REP : SEP). This way you can be on a lookout for
changes to this flag.

#### Comment

Here you can write notes about the project. These comments will be output into the disassembly, but _only on bytes that start a line_.
For example, a comment on a byte that is marked as an opcode will be written, but a comment on an operand byte will not be written.

#### Status Bar

The status bar at the bottom of the window will show the number of bytes reached, and the currently selected marking flag.

#### Navigation

Use the arrow keys to move to different cells. Page Up & Page Down will move 16 rows at a time, and Home & End will move 256 rows at a time.

Cells you can type in are highlighted in green.

Intermediate addresses of the currently selected cell will be highlighted in pink. So will instructions whose intermediate addresses are the 
currently selected cell.

* * *

### Stepping

**Hotkey: S, I**

Stepping is the method of marking bytes as code. Instead of marking each byte as opcode and operand separately, you can step through the instruction, 
and DiztinGUIsh will automatically assign opcode and operand flags as necessary.

Stepping an instruction will automatically copy the D, B, M, & X values from the previous instruction. If a REP or SEP instruction is stepped, 
the M and X values will be modified as necessary.

_Note: Most trace logs will reflect changes to the D, B, M, & X values on the instruction after the one that modifies the register. However, 
DiztinGUIsh likes to show the updated values on the same row as the instruction that updates the values._

There are two stepping commands: step, and step in. Step will advance the selector to the instruction directly following this instruction. 
Step in will advance to the intermediate address of this instruction. This is useful for taking a branch or jumping into a routine call. 
Note that plain step will still step in if the instruction is a jump instruction.

* * *

### Auto Stepping

**Hotkey: A, Ctrl + A**

There is a lot of code in a ROM, so stepping through each instruction can be time consuming. Therefore, this option will let you step through 
instructions automatically until something happens.

#### Auto Step (Safe)

This is the recommended way of auto stepping. When auto step hits a branch, it will not take it. When it hits a jump, it will jump. When it
hits a function call, it will save the program counter and jump to the routine. When it hits a return, it will try to restore the program
counter to what it was before the call. It also saves and restores the value of the program status register and the M and X flags.

Basically, it pretends to execute code until it hits something it can't do. Some jump instructions refer to values in RAM, which are not kept
track of. At this point, the auto step will pause and wait for you to continue it at a point that makes sense.

Auto Step will also stop if it hits a branch or jump that it has already seen in one go. This is to prevent it getting stuck on infinite loops.
It will also stop if it hits a risky instruction--that is, a rare instruction that more likely than not means that the code is desynched.
It will also stop if it hits an instruction that is already marked as something other than code.

#### Auto Step (Harsh)

This auto step will rush through bytes like a freight train and disassemble them one directly after the other. It doesn't care about jumps,
branches, or anything. The only smart thing it does is updates the M and X flags upon stepping through REP and SEP instructions.

Because of how hardy it is, it will never stop if it hits something risky. You have to specify how many bytes to disassemble. It will also
clobber over stuff that is already marked as something other than code.

* * *

### Goto

**Hotkey: Ctrl + G, T, U, H, N, F3**

This is an easy way to hop around the ROM without having to scroll all the way to where you want.

Hitting Ctrl + G will bring up the [Goto window](#gotowindow). You can type in a SNES address or ROM file offset in decimal or hex to go directly to that location.

You can press T to jump to the intermediate address of the currently selected instruction. Only if the intermediate address refers to ROM of course.

You can press U, H, or N to jump to the first unreached byte of the project, the nearest unreached block behind the selected address, or 
the nearest unreached block ahead of the selected address. These are useful just to get somewhere you haven't been yet.

The History window is a record of your recent activity in the project.  You probably want to be best friends with ALT+LEFT and ALT+RIGHT while stepping,
since branches can jump you all over the codebase and you can lose your train of thought

Press F3 to go to the "Next Unreached In Point". Handy when working with tracelog imports, which fill in a LOT of opcodes but leave small branches unmarked 
that are rarely taken by normal gameplay.

Example:
![image](https://github.com/IsoFrieze/DiztinGUIsh/assets/5413064/5910ca30-4d54-4d19-8dc8-5c8d292a2e65)

* * *

### Marking

**Hotkey: K, Ctrl + K, B, D, M, X**

For anything that isn't code, you will have to mark manually. You can select which flag type to mark with under the Edit -> Select Marker menu. 
The currently selected flag type is shown in the status bar at the bottom of the window.

Pressing K will mark a single instance of that flag type. That is, 8-bit data will mark 1 byte at a time, 16-bit data 2 bytes at a time, etc.

You can press Ctrl + K to bring up a window that lets you mark an entire range at once. You can specify SNES address or ROM file offset, 
in hex or decimal, and you can specify the range via start & end points, or just the number of bytes to mark.

Pressing B, D, M, or X will jump the selected cell to the data bank, direct page, M flag, or X flag cell respectively. You can hold Ctrl while 
pressing one of these keys to bring up the same window as Ctrl + K with default options to mark that value.

* * *

### Labels and Comments

**Hotkey: L, C**

Pressing L will jump the selected cell to the label cell automatically so you can add a label to this byte. 
Pressing C will do the same for the comment column.

#### Valid Labels

Asar has a limitation on what characters can make up a label, and DiztinGUIsh follows the same format. Currently, 
labels must only contain the following characters:

a-z A-Z 0-9 \_

Characters within a label that don't fit this description will be converted to \_s.

DiztinGUIsh currently does not support sublabels (starting with a .), or +/- labels (made of \+ - characters).

DiztinGUIsh also currently does not check for duplicate labels; that is, two more more addresses with the same label. 
For now, please use the [Label List](#labellist) to check for any duplicate labels.

* * *

### Misalignments & Desynching

**Hotkey: Ctrl + F**

_Desynching_ refers to incorrect instructions being disassembled due to opcodes being marked as operands and vice versa. 
Some instructions have a different amount of operand bytes associated with them depending on the state of the M and X flags. 
If these flags are assumed incorrectly, the size of the instruction will be assumed incorrectly, causing a byte that should 
be an operand being treated as an opcode or vice versa.

Sometimes desynched instructions are hard to catch. In fact, they can be disassembled and reassembled, and you wouldn't even notice. 
The SNES CPU would just execute the code as it would normally; it just wouldn't match what the disassembly says. 
For example, take the following bytecode: A9 00 8D 85 00. This could be LDA #$00 : STA $0085 or it could be LDA #$8D00 : STA $00.
Both are perfectly legitimate, but only one is correct.

A common cause of desynched code in DiztinGUIsh has to do with stepping through code while the X and M flags are incorrect. 
Sometimes, bytes can be marked as opcodes and operands incorrectly that accidentally overwrite already marked bytes.

In DiztinGUIsh, _misalignment_ refers to bytes that are marked incorrectly, due to the length of the instruction or data not
matching the flags. For example, the TAX instruction has no operands. But if the byte following this instruction is marked as 
an operand, this is a misalignment. Misalignments can also occur with data and pointers. If there is a block of 9 bytes marked 
as 16-bit data, there is a misalignment somewhere since the number of bytes is odd.

The Misaligned Flags checker window will look for misalignments. You can just scan the ROM without actually modifying anything.
Misalignments will be identified and output into the text box so you can correct them manually. You can also just have DiztinGUIsh 
attempt to fix all misalignments automatically. It uses a pretty brute force method, so it may not produce correct results, 
but at least it will get rid of all misalignments.

It is recommended to scan for misalignments before outputting a disassembly.

* * *

### In/Out/End/Read Points

**Hotkey: Ctrl + P**

As DiztinGUIsh steps through instructions, it will mark [in points, out points, end points, and read points](#tablegrid).
However, marking bytes as opcode and operand manually will not produce these points. Importing CDLs will also not generate points. 
Also, once a byte is marked with a point, you can't unmark it.

The Rescan for In/Out Points window will clear all points and readd them using the current flags.

It is recommended to rescan for in/out/end/read points before outputting a disassembly.

* * *

### Keyboard Hotkeys

Pretty much everything has a hotkey associated with it, so you can use the entire program with the keyboard.
Note that hotkeys won't work when the selected cell is editable, as typing anything will just put it into the box.

* * *

Goto Window
-----------

Using this window you can select any byte in the ROM without having to scroll all the way to it.

* * *

### SNES Address vs ROM file Offset

The SNES address is the location in the SNES's address space where the byte is located.

The ROM File Offset (also called the PC offset) is the raw offset of the byte in the ROM file. 
The first byte has an offset of 0. The ROM is always treated as unheadered, even if the ROM linked to the project has an SMC header.

* * *

### Hexadecimal vs Decimal

Hexadecimal is a base 16 counting system. It is what most hex editors use for displaying offsets, since 16 is a power of 2.

Decimal is a base 10 counting system.

_Note: Using decimal to specify the SNES address is silly, I've found._

* * *

Mark Many Window
----------------

This window lets you set flags and registers for more than one byte at a time.

* * *

### Property & Value

You can choose which property to modify, and what value to give for the entire specified range.

The property field will default to a different setting depending on what hotkey you used to open the window.

* * *

### Address Range

See the [Goto Window](#gotowindow) for info on ROM vs PC and Hex vs Dec.

Changing the bounds of the range will automatically update the number of bytes and vice versa. If the values you input
go past the end of the ROM, they will snap to the end of the ROM.

* * *

Fix Misaligned Flags Window
---------------------------

See [Misalignments & Desynching](#desynching).

* * *

Rescan for In/Out Points Window
-------------------------------

See [In/Out/End/Read Points](#inoutpoints).

* * *

Label List Window
-----------------

This window shows every single label that has been created, and the address it is associated with. 
Labels in this list will automatically be updated, added, or removed when they are modified via the Main Window.
You can also add, remove, or edit them from this window. The labels can be sorted by address or name by clicking on the table header.

#### Jump to

Clicking on this button will jump to the location of this label in the Main Window.

#### Import...

Use this to import a \*.csv file with a list of labels in the format described below. 
This is useful if you have an external program that generates labels for you.

We also support importing from BSNES's symbol file format.

#### Export...

This will export a \*.csv file with all of the current labels. The format is quite simple; each label is one line in the CSV file, formatted as such:

snes\_address,label\_name

Note: Since neither the address nor the label should contain spaces or quotation marks, DiztinGUIsh will expect no quotation marks surrounding either field.

#### Label Table

Pretty self-explanitory--the first column is the SNES address that the label name in the second column corresponds to.

You can modify labels by double-clicking on them. Hitting the del key will delete a label. You can even select more than one at once to delete.
To add a label, just add the address and label name to the empty row at the end of the table. Make sure the address is a valid 24-bit address 
in hexadecimal, that the address you enter isn't already in the list, and that the label name contains only valid characters. 
See [here](labelcomment) for what makes a valid label name.

Since DiztinGUIsh currently does not prevent you from reusing a label name more than once, it will warn you of duplicates by 
highlighting the rows that contain duplicate label names in yellow.

* * *

Export Disassembly Window
-------------------------

This window lets you set the options for outputting a disassembly that can reassembled by Asar.

* * *

### Output Format

This box lets you choose how each line of the disassembly will be formatted. There are several types of arguments you can specify. Arguments are put inbetween percent signs (%). Some arguments can be followed by a length parameter, which is defined by a colon (:) and then a number. A positive number will align the argument to the left; negative will align to the right.

*   **\***: Anything that isn't an argument will be output directly into the line.
*   **%%**: Output a percent sign.
*   **%label:length%**: Output the label for this line. Default length of -22.
*   **%code:length%**: Output the instruction, data, pointer, etc. for this line. This is where assembler directives will appear as well. Default length of 37.
*   **%ia%**: Output the intermediate address of this instruction or pointer if applicable. Forced length of 6.
*   **%pc%**: Output the SNES address of this code. Forced length of 6.
*   **%offset%**: Output the ROM file offset of this code. Forced length of -6.
*   **%bytes%**: Output the bytecode of this instruction. Forced length of 8.
*   **%comment:length%**: Output the comment for this line.
*   **%b%**: Output the Data Bank register for this line. Forced length of 2.
*   **%d%**: Output the Direct Page register for this line. Forced length of 4.
*   **%m:length%**: Output the M flag for this line. Default length of 1. If length is 1, it will output "M" when set and "m" when cleared. Otherwise, it will output "08" or "16".
*   **%x:length%**: Output the X flag for this line. Default length of 1. If length is 1, it will output "X" when set and "x" when cleared. Otherwise, it will output "08" or "16".

You can also check the box for generating all labels. This will print a labels.csv and all-labels.txt which will show all labels regardless
of whether they are used in the final assembly (handy if your labels are for memory addresses that are not directly referenced in the code)

* * *

### Unlabeled Instructions

This controls how DiztinGUIsh will output lines that have no labels.

*   **Create All**: Temporary labels will be added to every line.
*   **In Points Only**: Temporary labels will only be added to in points and read points.
*   **None**: No extra labels will be added.

* * *

### Bank Structure

This controls the structure of the output disassembly.

*   **All in one file**: The disassembly will be contained within one, potentially large file.
*   **One bank per file**: Each bank will be put in a separate bank\_\*.asm file. A file called main.asm will be created as the root file, 
     and a file called labels.asm will be created to store all label assignments (e.g. RAM addresses).

* * *

### Max Data Bytes Per Line

This controls the maximum number of bytes output per line on bytes marked as data.

This is actually not the max, but the "min-max"--a maximum of 5 bytes will still allow two 32-bit data elements (total of 8 bytes) per line.
A maximum of 4 bytes will limit this to one 32-bit data element (4 bytes). In other words, a data element will not be split over two lines.

* * *

### Reassembly with Asar

If DiztinGUIsh outputs a disassembly without any warnings, it should _always_ be assemblable with Asar. 
The code may be desynched or flagged incorrectly, but it should still assemble at least. You can assemble a 
disassembly via the command asar.exe \[name\].asm \[output\].sfc, where \[name\] is the disassembly file
(or main.asm if output to multiple files).

In theory if the world were perfect, the reassembled ROM should match the original ROM. Sometimes it will, 
and sometimes it won't. It depends on the code itself. The output should always _run_ similarly 
(unless the ROM has built-in modification or checksum detection).

The reason this may not be the case is due to mirroring, and the way DiztinGUIsh deals with labels. 
Take the following two code snippets: JML $C00054 : JML $400054. One has an intermediate address of $C00054 
and the other has intermediate address $400054. These two addresses refer to the same byte in the ROM due to
memory mapping mirroring. That is, they both refer to PC offset 0x54. DiztinGUIsh stores labels according to SNES addresses.

* * *

Project File Format
-------------------

The default file format is .diz, which is XML compressed with gzip. (you can rename the file to .xml.gz)

You can also save with a .dizraw extension, which is the same thing but without the gzip the compression. It still has 
a little bit of run-length and other compression.

Choose this option if you want to easily modify project files in an external program, or for use with git where
you want to see the diffs.  The underlying format is XML.

In short, what files really are:
*.diz files are really .xml.gz files
*.dizraw files are really just .xml files

* * *

16Bit Pointers and Banks
---------------------------------
By default, data marked as 16bit pointers will use the current bank as the bank for the IA.

If you set the bank on these 16bit pointer rows to a non-zero value, Diz will use that as the override

(Experimental) Comment Special Directives
---------------------------------

Special directives can be added to comments to alter label generation. All commands start with "!!". You can still put a semicolon in to make a comment.

USE AT YOUR OWN RISK. THESE HAVE MINIMAL CHECKING OR VALIDATION

```
!!n
```
- Don't generate labels for this line or the destination IA
- This is great if Diz is making up labels that aren't appropriate for this line (like PEA addresses, or for sections of code that modify the D register to load parts of the game dynamically) 

Example: override the current label for this line and paste the following text in:
```
!!o [whatever you want to show up there] ; [optional comment]
```

You can use structs, labels, math, constants, anything you want.  Example: Say you have a line like:

```asm
LDA.W #$0B,X
```

type in:

```
!!o !num_in_party
```

and the new line will be:

```asm
LDA.W #!num_in_party,X
```

If you use this with an string that looks like an asar define (i.e. starts with an exclamation point, like "!num_players", "!max_health", "!max_height", etc), then Diz will also automatically create a label for you in defines.asm and assign it to $0B and create a define for you in defines.asm.

-----

or let's say you have:

```asm
LDA.W some_label,X
```

then you can override with:

```
!!o some_address+some_other_address
```

```asm
LDA.W some_address+some_other_address,X
```

This lets you annotate constants as you go and re-use them through the project.

----

```!!is``` and - ```!!ie```

"include start" and "include end".

define a label on a line and use the !!is directive to dynamically-defined a region that will generate an "incsrc" directive.
further down, use the !!ir directive to mark the end of a dynamic region.

example:

```asm
STZ $00 ; whatever here, then

some_graphics:      !!is
...
...
...
                    !!ie
                    
STZ $00 ; whatever after
```

this will generate output like this, with the contents between start and end being in a new file that's included:

```asm
STZ $00
incsrc "some_graphics.asm"
STZ $00
```


================================================
FILE: Diz.App.Winforms/dist/docs/Library Licenses.txt
================================================
Castle.Core	http://www.apache.org/licenses/LICENSE-2.0.html	Apache 2.0												
xunit	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.abstractions	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.analyzers	https://raw.githubusercontent.com/xunit/xunit.analyzers/master/LICENSE	Apache 2.0												
xunit.assert	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.core	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.extensibility.core	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.extensibility.execution	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
xunit.runner.console	https://raw.githubusercontent.com/xunit/xunit/master/license.txt	Apache 2.0												
Moq	https://raw.githubusercontent.com/moq/moq4/master/License.txt	BSD 3clause												
ByteSize	https://github.com/omar/ByteSize/blob/master/LICENSE	MIT												
ExtendedXmlSerializer	https://github.com/ExtendedXmlSerializer/home/blob/master/LICENSE	MIT												
FastBitmapLib	https://licenses.nuget.org/MIT	MIT												
GitInfo	https://licenses.nuget.org/MIT	MIT												
IX.Abstractions	https://licenses.nuget.org/MIT	MIT												
IX.Abstractions.Collections	https://licenses.nuget.org/MIT	MIT												
IX.Abstractions.Threading	https://licenses.nuget.org/MIT	MIT												
IX.Observable	https://licenses.nuget.org/MIT	MIT												
IX.StandardExtensions	https://licenses.nuget.org/MIT	MIT												
IX.StandardExtensions.ComponentModel	https://licenses.nuget.org/MIT	MIT												
IX.StandardExtensions.Threading	https://licenses.nuget.org/MIT	MIT												
IX.Undoable	https://licenses.nuget.org/MIT	MIT												
JetBrains.Annotations	https://licenses.nuget.org/MIT	MIT												
LightInject	https://licenses.nuget.org/MIT	MIT												
LiveCharts	https://github.com/beto-rodriguez/Live-Charts/blob/master/LICENSE.TXT	MIT												
NReco.LambdaParser	https://raw.githubusercontent.com/nreco/lambdaparser/master/LICENSE	MIT												
SharpZipLib	https://licenses.nuget.org/MIT	MIT												
Sprache	https://github.com/sprache/Sprache/blob/master/licence.txt	MIT												
xunit.runner.visualstudio	https://licenses.nuget.org/MIT	MIT												
--------------------------------------------------														
"MOQ
BSD 3-Clause License

Copyright (c) 2007, Clarius Consulting, Manas Technology Solutions, InSTEDD,
and Contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.

    * Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

    * Neither the names of the copyright holders nor the names of its
    contributors may be used to endorse or promote products derived from this
    software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."														
--------------------------------------------------														


================================================
FILE: Diz.App.Winforms/dist/docs/hardware_registers.csv
================================================
002100,SNES_INIDISP
002101,SNES_OBJSEL
002102,SNES_OAMADDL
002103,SNES_OAMADDH
002104,SNES_OAMDATA
002105,SNES_BGMODE
002106,SNES_MOSAIC
002107,SNES_BG1SC
002108,SNES_BG2SC
002109,SNES_BG3SC
00210A,SNES_BG4SC
00210B,SNES_BG12NBA
00210C,SNES_BG34NBA
00210D,SNES_BG1HOFS
00210E,SNES_BG1VOFS
00210F,SNES_BG2HOFS
002110,SNES_BG2VOFS
002111,SNES_BG3HOFS
002112,SNES_BG3VOFS
002113,SNES_BG4HOFS
002114,SNES_BG4VOFS
002115,SNES_VMAINC
002116,SNES_VMADDL
002117,SNES_VMADDH
002118,SNES_VMDATAL
002119,SNES_VMDATAH
00211A,SNES_M7SEL
00211B,SNES_M7A
00211C,SNES_M7B
00211D,SNES_M7C
00211E,SNES_M7D
00211F,SNES_M7X
002120,SNES_M7Y
002121,SNES_CGADD
002122,SNES_CGDATA
002123,SNES_W12SEL
002124,SNES_W34SEL
002125,SNES_WOBJSEL
002126,SNES_WH0
002127,SNES_WH1
002128,SNES_WH2
002129,SNES_WH3
00212A,SNES_WBGLOG
00212B,SNES_WOBJLOG
00212C,SNES_TM
00212D,SNES_TS
00212E,SNES_TMW
00212F,SNES_TSW
002130,SNES_CGSWSEL
002131,SNES_CGADSUB
002132,SNES_COLDATA
002133,SNES_SETINI
002134,SNES_MPYL
002135,SNES_MPYM
002136,SNES_MPYH
002137,SNES_SLHV
002138,SNES_ROAMDATA
002139,SNES_RVMDATAL
00213A,SNES_RVMDATAH
00213B,SNES_RCGDATA
00213C,SNES_OPHCT
00213D,SNES_OPVCT
00213E,SNES_STAT77
00213F,SNES_STAT78
002140,SNES_APUIO0
002141,SNES_APUIO1
002142,SNES_APUIO2
002143,SNES_APUIO3
002180,SNES_WMDATA
002181,SNES_WMADDL
002182,SNES_WMADDM
002183,SNES_WMADDH
004016,SNES_JOY1
004017,SNES_JOY2
004200,SNES_NMITIMEN
004201,SNES_WRIO
004202,SNES_WRMPYA
004203,SNES_WRMPYB
004204,SNES_WRDIVL
004205,SNES_WRDIVH
004206,SNES_WRDIVB
004207,SNES_HTIMEL
004208,SNES_HTIMEH
004209,SNES_VTIMEL
00420A,SNES_VTIMEH
00420B,SNES_MDMAEN
00420C,SNES_HDMAEN
00420D,SNES_MEMSEL
004210,SNES_RDNMI
004211,SNES_TIMEUP
004212,SNES_HVBJOY
004213,SNES_RDIO
004214,SNES_RDDIVL
004215,SNES_RDDIVH
004216,SNES_RDMPYL
004217,SNES_RDMPYH
004218,SNES_CNTRL1L
004219,SNES_CNTRL1H
00421A,SNES_CNTRL2L
00421B,SNES_CNTRL2H
00421C,SNES_CNTRL3L
00421D,SNES_CNTRL3H
00421E,SNES_CNTRL4L
00421F,SNES_CNTRL4H
004300,SNES_DMA0PARAM
004301,SNES_DMA0REG
004302,SNES_DMA0ADDRL
004303,SNES_DMA0ADDRM
004304,SNES_DMA0ADDRH
004305,SNES_DMA0CNTL
004306,SNES_DMA0CNTH
004307,SNES_HDMA0BANK
004308,SNES_DMA0IDXL
004309,SNES_DMA0IDXH
00430A,SNES_HDMA0LINES
004310,SNES_DMA1PARAM
004311,SNES_DMA1REG
004312,SNES_DMA1ADDRL
004313,SNES_DMA1ADDRM
004314,SNES_DMA1ADDRH
004315,SNES_DMA1CNTL
004316,SNES_DMA1CNTH
004317,SNES_HDMA1BANK
004318,SNES_DMA1IDXL
004319,SNES_DMA1IDXH
00431A,SNES_HDMA1LINES
004320,SNES_DMA2PARAM
004321,SNES_DMA2REG
004322,SNES_DMA2ADDRL
004323,SNES_DMA2ADDRM
004324,SNES_DMA2ADDRH
004325,SNES_DMA2CNTL
004326,SNES_DMA2CNTH
004327,SNES_HDMA2BANK
004328,SNES_DMA2IDXL
004329,SNES_DMA2IDXH
00432A,SNES_HDMA2LINES
004330,SNES_DMA3PARAM
004331,SNES_DMA3REG
004332,SNES_DMA3ADDRL
004333,SNES_DMA3ADDRM
004334,SNES_DMA3ADDRH
004335,SNES_DMA3CNTL
004336,SNES_DMA3CNTH
004337,SNES_HDMA3BANK
004338,SNES_DMA3IDXL
004339,SNES_DMA3IDXH
00433A,SNES_HDMA3LINES
004340,SNES_DMA4PARAM
004341,SNES_DMA4REG
004342,SNES_DMA4ADDRL
004343,SNES_DMA4ADDRM
004344,SNES_DMA4ADDRH
004345,SNES_DMA4CNTL
004346,SNES_DMA4CNTH
004347,SNES_HDMA4BANK
004348,SNES_DMA4IDXL
004349,SNES_DMA4IDXH
00434A,SNES_HDMA4LINES
004350,SNES_DMA5PARAM
004351,SNES_DMA5REG
004352,SNES_DMA5ADDRL
004353,SNES_DMA5ADDRM
004354,SNES_DMA5ADDRH
004355,SNES_DMA5CNTL
004356,SNES_DMA5CNTH
004357,SNES_HDMA5BANK
004358,SNES_DMA5IDXL
004359,SNES_DMA5IDXH
00435A,SNES_HDMA5LINES
004360,SNES_DMA6PARAM
004361,SNES_DMA6REG
004362,SNES_DMA6ADDRL
004363,SNES_DMA6ADDRM
004364,SNES_DMA6ADDRH
004365,SNES_DMA6CNTL
004366,SNES_DMA6CNTH
004367,SNES_HDMA6BANK
004368,SNES_DMA6IDXL
004369,SNES_DMA6IDXH
00436A,SNES_HDMA6LINES
004370,SNES_DMA7PARAM
004371,SNES_DMA7REG
004372,SNES_DMA7ADDRL
004373,SNES_DMA7ADDRM
004374,SNES_DMA7ADDRH
004375,SNES_DMA7CNTL
004376,SNES_DMA7CNTH
004377,SNES_HDMA7BANK
004378,SNES_DMA7IDXL
004379,SNES_DMA7IDXH
00437A,SNES_HDMA7LINES

================================================
FILE: Diz.App.Winforms/packages.lock.json
================================================
{
  "version": 1,
  "dependencies": {
    "net9.0-windows7.0": {
      "GitInfo": {
        "type": "Direct",
        "requested": "[3.3.3, )",
        "resolved": "3.3.3",
        "contentHash": "l7m4M/figjWz4B3eIL2Qy3UJiP2vvTOTeavlCT/GGH0khg0uxLanh/cwTZ27AZNhim56q1Mk0nbyRXtLqF4vmg==",
        "dependencies": {
          "ThisAssembly.Constants": "1.4.1"
        }
      },
      "JetBrains.Annotations": {
        "type": "Direct",
        "requested": "[2023.3.0, )",
        "resolved": "2023.3.0",
        "contentHash": "PHfnvdBUdGaTVG9bR/GEfxgTwWM0Z97Y6X3710wiljELBISipSfF5okn/vz+C2gfO+ihoEyVPjaJwn8ZalVukA=="
      },
      "LightInject": {
        "type": "Direct",
        "requested": "[6.6.4, )",
        "resolved": "6.6.4",
        "contentHash": "xId1F9OpzVvyNu3wcdPR4EcNUihcT5U9wiUJOi0tetuDOia1uAiFJzqmYGdRPsqAsgDb6o8sfoQCx5yMFFDsVw=="
      },
      "System.Resources.Extensions": {
        "type": "Direct",
        "requested": "[8.0.0, )",
        "resolved": "8.0.0",
        "contentHash": "psnQ6GRQOvt+evda5C4nD5EuV49mz2Tv0DD2JDVDEbE/TKoMukxSkGJcsBJ0pajpPuFRr67syFYlkJ4Wj6A5Zw=="
      },
      "ByteSize": {
        "type": "Transitive",
        "resolved": "2.1.2",
        "contentHash": "dSiH9B0apNU5abV3OVUs3eTfHiidEAa8IMOLGW0eEl5tB8Ba1ngkGC7RT/RGy61ifGcPzCe7DMP78KB8pA5kNg=="
      },
      "CsvHelper": {
        "type": "Transitive",
        "resolved": "30.0.3",
Download .txt
gitextract_mof0964c/

├── .gitattributes
├── .github/
│   └── workflows/
│       └── dotnet.yml
├── .gitignore
├── .gitmodules
├── .idea/
│   └── .idea.DiztinGUIsh/
│       └── .idea/
│           ├── .gitignore
│           ├── .name
│           ├── encodings.xml
│           ├── indexLayout.xml
│           └── vcs.xml
├── .run/
│   ├── Diz.Ui.Eto (Experimental GUI, don't use).run.xml
│   └── DiztinGUIsh - WinForms (USE THIS).run.xml
├── Directory.Build.targets
├── Diz.App.Common/
│   ├── Diz.App.Common.csproj
│   ├── DizAppCompositionRoot.cs
│   ├── Main.cs
│   └── Properties/
│       └── AssemblyInfo.cs
├── Diz.App.Eto/
│   ├── Diz.App.Eto.csproj
│   ├── DizAppEtoCompositionRoot.cs
│   ├── DizEtoApp.cs
│   ├── Program.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   └── RegisterWinformsServices.cs
├── Diz.App.PowerShell/
│   ├── Cmdlets.cs
│   ├── Diz.App.PowerShell.csproj
│   ├── DizPowerShellCompositionRoot.cs
│   ├── DizPowershellLogger.cs
│   ├── ProjectFileAssemblyExporter.cs
│   ├── ProjectFileReader.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   └── launchSettings.json
│   ├── PsInterfaces.cs
│   ├── ServiceContainerCmdletBase.cs
│   ├── packages.lock.json
│   └── runner/
│       └── debug-startup.ps1
├── Diz.App.Winforms/
│   ├── App.config
│   ├── AppVersionInfo.cs
│   ├── Diz.App.Winforms.csproj
│   ├── Diz.App.Winforms.csproj.DotSettings
│   ├── DizAppWinformsCompositionRoot.cs
│   ├── Program.cs
│   ├── Properties/
│   │   ├── Annotations.cs
│   │   ├── AssemblyInfo.cs
│   │   ├── PublishProfiles/
│   │   │   └── FolderProfile.pubxml
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── RegisterWinformsServices.cs
│   ├── build/
│   │   └── TidyPublishDir.targets
│   ├── dist/
│   │   └── docs/
│   │       ├── HELP.md
│   │       ├── Library Licenses.txt
│   │       └── hardware_registers.csv
│   ├── licensing/
│   │   └── Library Licenses.xlsx
│   └── packages.lock.json
├── Diz.Controllers/
│   ├── Diz.Controllers/
│   │   ├── Diz.Controllers.csproj
│   │   ├── packages.lock.json
│   │   └── src/
│   │       ├── AssemblyInfo.cs
│   │       ├── controllers/
│   │       │   ├── IImportRomDialogController.cs
│   │       │   ├── IProjectView.cs
│   │       │   ├── ImportROMDialogController.cs
│   │       │   ├── LogCreatorExportSettingsEditorController.cs
│   │       │   ├── MarkManyController.cs
│   │       │   ├── NavigationEntry.cs
│   │       │   ├── ProgressBarWorker.cs
│   │       │   ├── ProjectController.cs
│   │       │   ├── ProjectOpenerGuiController.cs
│   │       │   ├── ProjectsController.cs
│   │       │   └── StartFormController.cs
│   │       ├── interfaces/
│   │       │   ├── IControllers.cs
│   │       │   ├── IViewers.cs
│   │       │   └── Interfaces.cs
│   │       ├── services/
│   │       │   └── Registration.cs
│   │       └── util/
│   │           ├── DizDocument.cs
│   │           ├── LargeFilesReader.cs
│   │           └── RomByteRowBase.cs
│   ├── Diz.Controllers.Test/
│   │   └── Diz.Controllers.Test/
│   │       ├── Diz.Controllers.Test.csproj
│   │       └── src/
│   │           ├── ImportRomDialogontroller.cs
│   │           └── LogCreatorSettingsEditorControllerTests.cs
│   └── packages.lock.json
├── Diz.Core/
│   ├── Diz.Core.csproj
│   ├── Interfaces.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── app.config
│   ├── commands/
│   │   └── Commands.cs
│   ├── datasubset/
│   │   ├── DataSubset.cs
│   │   ├── DataSubsetSupport.cs
│   │   └── DataSubsetWithSelection.cs
│   ├── export/
│   │   ├── LogWriterSettings.cs
│   │   └── LogWriterSettingsValidator.cs
│   ├── model/
│   │   ├── Annotation.cs
│   │   ├── ArchProvider.cs
│   │   ├── Extensions.cs
│   │   ├── LabelProvider.cs
│   │   ├── Project.cs
│   │   ├── ProjectFactory.cs
│   │   ├── ProjectImportSettingsFactory.cs
│   │   ├── ROMByte.cs
│   │   ├── RomBytes.cs
│   │   ├── project/
│   │   │   ├── DataUtils.cs
│   │   │   ├── LinkedRomBytesFileSearchProvider.cs
│   │   │   └── ProjectRomBytesInit.cs
│   │   └── snes/
│   │       ├── Data.cs
│   │       └── DataTags.cs
│   ├── packages.lock.json
│   ├── serialization/
│   │   ├── FileByteProviderMultipleFiles.cs
│   │   ├── FileByteProviderSingleFile.cs
│   │   ├── ImportSettings.cs
│   │   ├── ProjectFileManager.cs
│   │   ├── ProjectSerializer.cs
│   │   ├── binary_serializer_old/
│   │   │   └── BinarySerializer.cs
│   │   └── xml_serializer/
│   │       ├── MigrationRunner.cs
│   │       ├── PostSerializeMigrations.cs
│   │       ├── ProjectXMLSerializer.cs
│   │       ├── RepeaterCompression.cs
│   │       ├── RomByteEncoding.cs
│   │       ├── RomBytesXMLSerializer.cs
│   │       ├── SubstitutionCompression.cs
│   │       ├── XMLSerializerSupport.cs
│   │       └── XmlSerializerFactory.cs
│   ├── services/
│   │   └── CoreServices.cs
│   ├── util/
│   │   ├── ByteUtil.cs
│   │   ├── ChecksumUtil.cs
│   │   ├── CorrectingRange.cs
│   │   ├── Fake64Encoding.cs
│   │   ├── FsUtils.cs
│   │   ├── LabelSearchTerms.cs
│   │   ├── ParentAwareCollection.cs
│   │   ├── Profiler.cs
│   │   ├── RomUtil.cs
│   │   ├── ServiceProvider.cs
│   │   ├── Util.cs
│   │   └── WorkerTaskManager.cs
│   └── vendor/
│       └── LightInject.AutoFactory.cs
├── Diz.Core.Interfaces/
│   ├── AssemblyInfo.cs
│   ├── CpuInterfaces.cs
│   ├── Diz.Core.Interfaces.csproj
│   ├── Enums.cs
│   ├── LabelInterfaces.cs
│   ├── ModelInterfaces.cs
│   ├── OtherInterfaces.cs
│   └── packages.lock.json
├── Diz.Cpu.65816/
│   ├── Diz.Cpu.65816.csproj
│   ├── packages.lock.json
│   └── src/
│       ├── AddRomDataCommand.cs
│       ├── AddRomDataCommandValidator.cs
│       ├── AssemblyInfo.cs
│       ├── AutoStepper65816.cs
│       ├── CPU65C816.cs
│       ├── Cpu.cs
│       ├── CpuDispatcher.cs
│       ├── CpuUtils.cs
│       ├── CpuVectorTable.cs
│       ├── DataAddSnesApiDecorator.cs
│       ├── SampleRomData.cs
│       ├── ServiceRegistration.cs
│       ├── SnesData.cs
│       └── import/
│           ├── CachedVectorTableEntries.cs
│           ├── ISnesRomImportSettingsBuilder.cs
│           ├── ImportRomSettingsBuilder.cs
│           ├── ImportUtils.cs
│           ├── MigrationBugfix050JapaneseText.cs
│           ├── MigrationNoOp.cs
│           ├── SnesDefaultSettingsFactory.cs
│           ├── SnesRomAnalyzer.cs
│           └── SnesVectorNames.cs
├── Diz.Import/
│   ├── Diz.Import.csproj
│   ├── packages.lock.json
│   └── src/
│       ├── AssemblyInfo.cs
│       ├── LabelImporter.cs
│       ├── LabelImporterCsv.cs
│       ├── ServiceRegistration.cs
│       ├── bizhawk/
│       │   └── BizHawkCdlImporter.cs
│       └── bsnes/
│           ├── BsnesSymbolLabelImporter.cs
│           ├── tracelog/
│           │   ├── BSNESImportStreamProcessor.cs
│           │   ├── BSNESTraceLogCapture.cs
│           │   ├── BSNESTraceLogImporter.cs
│           │   ├── BsnesTraceLogImporter.Caching.cs
│           │   ├── BsnesTraceLogImporter.ModificationsList.cs
│           │   ├── BsnesTraceLogImporter.Parsers.cs
│           │   ├── BsnesTraceLogImporter.Stats.cs
│           │   └── BsnesTraceLogImporter.Util.cs
│           └── usagemap/
│               └── BSNESUsageMapImporter.cs
├── Diz.Test/
│   ├── Diz.Test.csproj
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── Resources/
│   │   ├── asartestrun.asm
│   │   ├── emptyrom.asm
│   │   ├── samplerom-a-few-lines.asm
│   │   └── serialize-dictionary-test.xml
│   ├── Tests/
│   │   ├── LogCreatorTests/
│   │   │   ├── AssemblyStrings.cs
│   │   │   └── LogCreator.cs
│   │   ├── PerformanceTests/
│   │   │   └── TraceLogPerformanceTests.cs
│   │   ├── ProjectSessionTest.cs
│   │   ├── RomInterfaceTests/
│   │   │   ├── AccessTests.cs
│   │   │   ├── CartTitleTests.cs
│   │   │   └── TestServiceInterfaces.cs
│   │   ├── RomModeDetectionTests.cs
│   │   ├── SerializationTests/
│   │   │   ├── CompressionTest.cs
│   │   │   ├── LoadSavePerformanceTests.cs
│   │   │   ├── MigrationTests.cs
│   │   │   ├── ProjectLoadSaveTest.cs
│   │   │   ├── ProjectServicesTests.cs
│   │   │   └── RomByteTests.cs
│   │   ├── TracelogTests/
│   │   │   └── TraceLogTests.cs
│   │   └── UtilsTests/
│   │       ├── OptimizedHexConversionTests.cs
│   │       └── SuperFamiCheckTests.cs
│   ├── Utils/
│   │   ├── AppServicesForTests.cs
│   │   ├── AsarRunner.cs
│   │   ├── AssemblyPipelineTester.cs
│   │   ├── BenchmarkXunitLogger.cs
│   │   ├── CorrectingRangeTests.cs
│   │   ├── DizTestCompositionRoot.cs
│   │   ├── EmbeddedResourceDataAttribute.cs
│   │   ├── EmptyRomTestData.cs
│   │   ├── ExternalRunners.cs
│   │   ├── ExternalToolRunner.cs
│   │   ├── LogWriterHelper.cs
│   │   ├── ServiceContainerFixture.cs
│   │   ├── SuperFamiCheckUtil/
│   │   │   ├── DizSuperFamiCheckParse.cs
│   │   │   └── SuperFamiCheck.cs
│   │   ├── TestUtil.cs
│   │   ├── XmlTestUtilBase.cs
│   │   └── XmlTestUtils.cs
│   ├── app.config
│   ├── bugs/
│   │   ├── Bug050_JapaneseText.cs
│   │   └── FileIoFixture.cs
│   ├── external-tools/
│   │   └── distribution info.txt
│   └── packages.lock.json
├── Diz.Ui.Eto/
│   ├── Diz.Ui.Eto.csproj
│   ├── DizEtoAppSettingsProvider.cs
│   ├── DizUiEtoCompositionRoot.cs
│   ├── EtoCommonGui.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   └── ui/
│       ├── EtoMainGridForm.cs
│       ├── EtoProgressForm.cs
│       └── PlaceholderForm.cs
├── Diz.Ui.Views/
│   ├── Diz.Ui.Views.csproj
│   └── ProjectViewer.cs
├── DiztinGUIsh.sln
├── DiztinGUIsh.sln.DotSettings
├── LICENSE.md
├── README.md
├── TRACE CAPTURE INSTRUCTIONS.md
├── contributing.md
└── global.json
Download .txt
SYMBOL INDEX (1789 symbols across 168 files)

FILE: Diz.App.Common/DizAppCompositionRoot.cs
  class DizAppCommonCompositionRoot (line 12) | [UsedImplicitly] public class DizAppCommonCompositionRoot : IComposition...
    method Compose (line 14) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.App.Common/Main.cs
  class DizAppCommon (line 6) | public static class DizAppCommon
    method StartApp (line 8) | public static void StartApp(IServiceFactory serviceFactory, string[] a...

FILE: Diz.App.Eto/DizAppEtoCompositionRoot.cs
  class DizAppEtoCompositionRoot (line 9) | [UsedImplicitly] public class DizAppEtoCompositionRoot : ICompositionRoot
    method Compose (line 11) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.App.Eto/DizEtoApp.cs
  class DizEtoApp (line 8) | public class DizEtoApp(IViewFactory viewFactory) : IDizApp
    method Run (line 10) | public void Run(string initialProjectFileToOpen = "")

FILE: Diz.App.Eto/Program.cs
  class Program (line 5) | internal static class Program
    method Main (line 7) | [STAThread]

FILE: Diz.App.Eto/RegisterWinformsServices.cs
  class DizEtoRegisterServices (line 8) | public static class DizEtoRegisterServices
    method CreateServiceFactoryAndRegisterTypes (line 10) | public static IServiceFactory CreateServiceFactoryAndRegisterTypes()
    method RegisterDizUiServices (line 18) | public static void RegisterDizUiServices(IServiceRegistry serviceRegis...

FILE: Diz.App.PowerShell/Cmdlets.cs
  class BuildAssemblyFilesCmdlet (line 12) | [UsedImplicitly]
    method ProcessRecord (line 20) | protected override void ProcessRecord()
    method BuildAssembly (line 34) | [SuppressMessage("ReSharper", "UnusedMethodReturnValue.Local")]
    method StopProcessing (line 43) | protected override void StopProcessing() {}
    method EndProcessing (line 44) | protected override void EndProcessing() {}

FILE: Diz.App.PowerShell/DizPowerShellCompositionRoot.cs
  class DizPowerShellCompositionRoot (line 6) | public class DizPowerShellCompositionRoot : ICompositionRoot
    method Compose (line 8) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.App.PowerShell/DizPowershellLogger.cs
  class DizPowershellLogger (line 3) | public class DizPowershellLogger : IDizLogger
    method DizPowershellLogger (line 7) | public DizPowershellLogger(IPowershellLogger powershellLogger)
    method Info (line 12) | public void Info(string msg) =>
    method Warn (line 15) | public void Warn(string msg) =>
    method Error (line 18) | public void Error(string msg) =>
    method Debug (line 21) | public void Debug(string msg) =>

FILE: Diz.App.PowerShell/ProjectFileAssemblyExporter.cs
  class ProjectFileAssemblyExporter (line 9) | public class ProjectFileAssemblyExporter : IProjectFileAssemblyExporter
    method ProjectFileAssemblyExporter (line 15) | public ProjectFileAssemblyExporter(IDizLogger logger, IProjectFileOpen...
    method OpenProjectFile (line 22) | private Project? OpenProjectFile(string projectFileName)
    method ExportAssembly (line 32) | public bool ExportAssembly(string projectFileName)
    method ExportAssembly (line 38) | public bool ExportAssembly(Project project)

FILE: Diz.App.PowerShell/ProjectFileReader.cs
  class ProjectFileReader (line 7) | public class ProjectFileReader : IProjectFileOpener
    method ProjectFileReader (line 13) | public ProjectFileReader(IProjectFileManager projectFileManager) =>
    method SetOpenFilename (line 16) | public void SetOpenFilename(string projectFilename) =>
    method Read (line 19) | public Project? Read()

FILE: Diz.App.PowerShell/PsInterfaces.cs
  type IPowershellLogger (line 5) | public interface IPowershellLogger
    method WriteObject (line 7) | void WriteObject(object objectToSend);
    method WriteDebug (line 8) | void WriteDebug(string text);
    method WriteCommandDetail (line 9) | void WriteCommandDetail(string text);
  type IDizLogger (line 12) | public interface IDizLogger
    method Info (line 14) | void Info(string msg);
    method Warn (line 15) | void Warn(string msg);
    method Error (line 16) | void Error(string s);
    method Debug (line 17) | void Debug(string msg);

FILE: Diz.App.PowerShell/ServiceContainerCmdletBase.cs
  class ServiceContainerCmdletBase (line 7) | public abstract class ServiceContainerCmdletBase : PSCmdlet
    method BeginProcessing (line 11) | protected override void BeginProcessing()
    method EndProcessing (line 16) | protected override void EndProcessing()

FILE: Diz.App.Winforms/AppVersionInfo.cs
  class AppVersionInfo (line 7) | [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
    method AppVersionInfo (line 13) | public AppVersionInfo()
    method GetVersionInfo (line 31) | [SuppressMessage("ReSharper", "HeuristicUnreachableCode")]

FILE: Diz.App.Winforms/DizAppWinformsCompositionRoot.cs
  class DizAppWinformsCompositionRoot (line 11) | [UsedImplicitly] public class DizAppWinformsCompositionRoot : ICompositi...
    method Compose (line 13) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.App.Winforms/Program.cs
  class Program (line 14) | internal static class Program
    method Main (line 16) | [STAThread]

FILE: Diz.App.Winforms/Properties/Annotations.cs
  class CanBeNullAttribute (line 52) | [AttributeUsage(
  class NotNullAttribute (line 66) | [AttributeUsage(
  class ItemNotNullAttribute (line 86) | [AttributeUsage(
  class ItemCanBeNullAttribute (line 106) | [AttributeUsage(
  class StringFormatMethodAttribute (line 124) | [AttributeUsage(
    method StringFormatMethodAttribute (line 132) | public StringFormatMethodAttribute([NotNull] string formatParameterName)
  class ValueProviderAttribute (line 167) | [AttributeUsage(
    method ValueProviderAttribute (line 172) | public ValueProviderAttribute([NotNull] string name)
  class ValueRangeAttribute (line 192) | [AttributeUsage(
    method ValueRangeAttribute (line 201) | public ValueRangeAttribute(long from, long to)
    method ValueRangeAttribute (line 207) | public ValueRangeAttribute(ulong from, ulong to)
    method ValueRangeAttribute (line 213) | public ValueRangeAttribute(long value)
    method ValueRangeAttribute (line 218) | public ValueRangeAttribute(ulong value)
  class NonNegativeValueAttribute (line 234) | [AttributeUsage(
  class InvokerParameterNameAttribute (line 250) | [AttributeUsage(AttributeTargets.Parameter)]
  class NotifyPropertyChangedInvocatorAttribute (line 291) | [AttributeUsage(AttributeTargets.Method)]
    method NotifyPropertyChangedInvocatorAttribute (line 294) | public NotifyPropertyChangedInvocatorAttribute() { }
    method NotifyPropertyChangedInvocatorAttribute (line 295) | public NotifyPropertyChangedInvocatorAttribute([NotNull] string parame...
  class ContractAnnotationAttribute (line 347) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    method ContractAnnotationAttribute (line 350) | public ContractAnnotationAttribute([NotNull] string contract)
    method ContractAnnotationAttribute (line 353) | public ContractAnnotationAttribute([NotNull] string contract, bool for...
  class LocalizationRequiredAttribute (line 373) | [AttributeUsage(AttributeTargets.All)]
    method LocalizationRequiredAttribute (line 376) | public LocalizationRequiredAttribute() : this(true) { }
    method LocalizationRequiredAttribute (line 378) | public LocalizationRequiredAttribute(bool required)
  class CannotApplyEqualityOperatorAttribute (line 406) | [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class | At...
  class BaseTypeRequiredAttribute (line 420) | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    method BaseTypeRequiredAttribute (line 424) | public BaseTypeRequiredAttribute([NotNull] Type baseType)
  class UsedImplicitlyAttribute (line 436) | [AttributeUsage(AttributeTargets.All)]
    method UsedImplicitlyAttribute (line 439) | public UsedImplicitlyAttribute()
    method UsedImplicitlyAttribute (line 442) | public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags)
    method UsedImplicitlyAttribute (line 445) | public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags)
    method UsedImplicitlyAttribute (line 448) | public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags, Impl...
  class MeansImplicitUseAttribute (line 465) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.GenericParamet...
    method MeansImplicitUseAttribute (line 468) | public MeansImplicitUseAttribute()
    method MeansImplicitUseAttribute (line 471) | public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags)
    method MeansImplicitUseAttribute (line 474) | public MeansImplicitUseAttribute(ImplicitUseTargetFlags targetFlags)
    method MeansImplicitUseAttribute (line 477) | public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags, Im...
  type ImplicitUseKindFlags (line 492) | [Flags]
  type ImplicitUseTargetFlags (line 513) | [Flags]
  class PublicAPIAttribute (line 530) | [MeansImplicitUse(ImplicitUseTargetFlags.WithMembers)]
    method PublicAPIAttribute (line 534) | public PublicAPIAttribute() { }
    method PublicAPIAttribute (line 536) | public PublicAPIAttribute([NotNull] string comment)
  class InstantHandleAttribute (line 549) | [AttributeUsage(AttributeTargets.Parameter)]
  class PureAttribute (line 563) | [AttributeUsage(AttributeTargets.Method)]
  class MustUseReturnValueAttribute (line 577) | [AttributeUsage(AttributeTargets.Method)]
    method MustUseReturnValueAttribute (line 580) | public MustUseReturnValueAttribute() { }
    method MustUseReturnValueAttribute (line 582) | public MustUseReturnValueAttribute([NotNull] string justification)
  class ProvidesContextAttribute (line 605) | [AttributeUsage(
  class PathReferenceAttribute (line 614) | [AttributeUsage(AttributeTargets.Parameter)]
    method PathReferenceAttribute (line 617) | public PathReferenceAttribute() { }
    method PathReferenceAttribute (line 619) | public PathReferenceAttribute([NotNull, PathReference] string basePath)
  class SourceTemplateAttribute (line 650) | [AttributeUsage(AttributeTargets.Method)]
  class MacroAttribute (line 681) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method, Al...
  class AspMvcAreaMasterLocationFormatAttribute (line 707) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcAreaMasterLocationFormatAttribute (line 710) | public AspMvcAreaMasterLocationFormatAttribute([NotNull] string format)
  class AspMvcAreaPartialViewLocationFormatAttribute (line 718) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcAreaPartialViewLocationFormatAttribute (line 721) | public AspMvcAreaPartialViewLocationFormatAttribute([NotNull] string f...
  class AspMvcAreaViewLocationFormatAttribute (line 729) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcAreaViewLocationFormatAttribute (line 732) | public AspMvcAreaViewLocationFormatAttribute([NotNull] string format)
  class AspMvcMasterLocationFormatAttribute (line 740) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcMasterLocationFormatAttribute (line 743) | public AspMvcMasterLocationFormatAttribute([NotNull] string format)
  class AspMvcPartialViewLocationFormatAttribute (line 751) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcPartialViewLocationFormatAttribute (line 754) | public AspMvcPartialViewLocationFormatAttribute([NotNull] string format)
  class AspMvcViewLocationFormatAttribute (line 762) | [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | Att...
    method AspMvcViewLocationFormatAttribute (line 765) | public AspMvcViewLocationFormatAttribute([NotNull] string format)
  class AspMvcActionAttribute (line 779) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | A...
    method AspMvcActionAttribute (line 782) | public AspMvcActionAttribute() { }
    method AspMvcActionAttribute (line 784) | public AspMvcActionAttribute([NotNull] string anonymousProperty)
  class AspMvcAreaAttribute (line 797) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
    method AspMvcAreaAttribute (line 800) | public AspMvcAreaAttribute() { }
    method AspMvcAreaAttribute (line 802) | public AspMvcAreaAttribute([NotNull] string anonymousProperty)
  class AspMvcControllerAttribute (line 816) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | A...
    method AspMvcControllerAttribute (line 819) | public AspMvcControllerAttribute() { }
    method AspMvcControllerAttribute (line 821) | public AspMvcControllerAttribute([NotNull] string anonymousProperty)
  class AspMvcMasterAttribute (line 833) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class AspMvcModelTypeAttribute (line 840) | [AttributeUsage(AttributeTargets.Parameter)]
  class AspMvcPartialViewAttribute (line 849) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | A...
  class AspMvcSuppressViewErrorAttribute (line 855) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
  class AspMvcDisplayTemplateAttribute (line 863) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class AspMvcEditorTemplateAttribute (line 871) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class AspMvcTemplateAttribute (line 879) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class AspMvcViewAttribute (line 888) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | A...
  class AspMvcViewComponentAttribute (line 895) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class AspMvcViewComponentViewAttribute (line 902) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method | A...
  class AspMvcActionSelectorAttribute (line 916) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)]
  class HtmlElementAttributesAttribute (line 919) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property |...
    method HtmlElementAttributesAttribute (line 922) | public HtmlElementAttributesAttribute() { }
    method HtmlElementAttributesAttribute (line 924) | public HtmlElementAttributesAttribute([NotNull] string name)
  class HtmlAttributeValueAttribute (line 932) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
    method HtmlAttributeValueAttribute (line 935) | public HtmlAttributeValueAttribute([NotNull] string name)
  class RazorSectionAttribute (line 948) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
  class CollectionAccessAttribute (line 978) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |...
    method CollectionAccessAttribute (line 981) | public CollectionAccessAttribute(CollectionAccessType collectionAccess...
  type CollectionAccessType (line 993) | [Flags]
  class AssertionMethodAttribute (line 1011) | [AttributeUsage(AttributeTargets.Method)]
  class AssertionConditionAttribute (line 1019) | [AttributeUsage(AttributeTargets.Parameter)]
    method AssertionConditionAttribute (line 1022) | public AssertionConditionAttribute(AssertionConditionType conditionType)
  type AssertionConditionType (line 1034) | public enum AssertionConditionType
  class TerminatesProgramAttribute (line 1050) | [Obsolete("Use [ContractAnnotation('=> halt')] instead")]
  class LinqTunnelAttribute (line 1059) | [AttributeUsage(AttributeTargets.Method)]
  class NoEnumerationAttribute (line 1078) | [AttributeUsage(AttributeTargets.Parameter)]
  class RegexPatternAttribute (line 1084) | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | At...
  class NoReorderAttribute (line 1093) | [AttributeUsage(
  class XamlItemsControlAttribute (line 1101) | [AttributeUsage(AttributeTargets.Class)]
  class XamlItemBindingOfItemsControlAttribute (line 1113) | [AttributeUsage(AttributeTargets.Property)]
  class XamlItemStyleOfItemsControlAttribute (line 1125) | [AttributeUsage(AttributeTargets.Property)]
  class AspChildControlTypeAttribute (line 1128) | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    method AspChildControlTypeAttribute (line 1131) | public AspChildControlTypeAttribute([NotNull] string tagName, [NotNull...
  class AspDataFieldAttribute (line 1142) | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
  class AspDataFieldsAttribute (line 1145) | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
  class AspMethodPropertyAttribute (line 1148) | [AttributeUsage(AttributeTargets.Property)]
  class AspRequiredAttributeAttribute (line 1151) | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    method AspRequiredAttributeAttribute (line 1154) | public AspRequiredAttributeAttribute([NotNull] string attribute)
  class AspTypePropertyAttribute (line 1162) | [AttributeUsage(AttributeTargets.Property)]
    method AspTypePropertyAttribute (line 1167) | public AspTypePropertyAttribute(bool createConstructorReferences)
  class RazorImportNamespaceAttribute (line 1173) | [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    method RazorImportNamespaceAttribute (line 1176) | public RazorImportNamespaceAttribute([NotNull] string name)
  class RazorInjectionAttribute (line 1184) | [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    method RazorInjectionAttribute (line 1187) | public RazorInjectionAttribute([NotNull] string type, [NotNull] string...
  class RazorDirectiveAttribute (line 1198) | [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    method RazorDirectiveAttribute (line 1201) | public RazorDirectiveAttribute([NotNull] string directive)
  class RazorPageBaseTypeAttribute (line 1209) | [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
    method RazorPageBaseTypeAttribute (line 1212) | public RazorPageBaseTypeAttribute([NotNull] string baseType)
    method RazorPageBaseTypeAttribute (line 1216) | public RazorPageBaseTypeAttribute([NotNull] string baseType, string pa...
  class RazorHelperCommonAttribute (line 1226) | [AttributeUsage(AttributeTargets.Method)]
  class RazorLayoutAttribute (line 1229) | [AttributeUsage(AttributeTargets.Property)]
  class RazorWriteLiteralMethodAttribute (line 1232) | [AttributeUsage(AttributeTargets.Method)]
  class RazorWriteMethodAttribute (line 1235) | [AttributeUsage(AttributeTargets.Method)]
  class RazorWriteMethodParameterAttribute (line 1238) | [AttributeUsage(AttributeTargets.Parameter)]

FILE: Diz.App.Winforms/Properties/Resources.Designer.cs
  class Resources (line 19) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 28) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Diz.App.Winforms/RegisterWinformsServices.cs
  class DizWinformsRegisterServices (line 8) | public static class DizWinformsRegisterServices
    method CreateServiceFactoryAndRegisterTypes (line 10) | public static IServiceFactory CreateServiceFactoryAndRegisterTypes()
    method RegisterDizUiServices (line 18) | public static void RegisterDizUiServices(IServiceRegistry serviceRegis...

FILE: Diz.Controllers/Diz.Controllers.Test/Diz.Controllers.Test/src/ImportRomDialogontroller.cs
  class ImportRomDialogControllerTest (line 19) | public class ImportRomDialogControllerTest : ContainerFixture
    method Configure (line 29) | protected override void Configure(IServiceRegistry serviceRegistry)
    method Run (line 62) | private void Run(Action? uiActions = null)
    method Defaults (line 70) | [Fact]
    method WithNoLabels (line 78) | [Fact]
    method WithTwoLabels (line 85) | [Fact]
    method LabelGenerationDisable (line 111) | [Theory, MemberData(nameof(EnableDisableLabelGeneration))]
    method ControllerProperties (line 129) | [Fact]

FILE: Diz.Controllers/Diz.Controllers.Test/Diz.Controllers.Test/src/LogCreatorSettingsEditorControllerTests.cs
  class LogCreatorSettingsEditorControllerTests (line 16) | public class LogCreatorSettingsEditorControllerTests : ContainerFixture
    method CreateFilesystemMockObject (line 18) | private static IFilesystemService CreateFilesystemMockObject()
    method CreateLogCreatorSettingsEditorView (line 28) | private static ILogCreatorSettingsEditorView CreateLogCreatorSettingsE...
    method Basics (line 37) | [Fact]
    method TestSampleTextGeneration (line 50) | [Fact]

FILE: Diz.Controllers/Diz.Controllers/src/controllers/IImportRomDialogController.cs
  type IImportRomDialogController (line 7) | public interface IImportRomDialogController
    method PromptUserForImportOptions (line 16) | ImportRomSettings PromptUserForImportOptions(string romFilename);
    method Submit (line 20) | bool Submit();
    method ReadRomVectorTableEntryValueWord (line 21) | public int ReadRomVectorTableEntryValueWord(int vectorEntryTableStartO...
    method IsProbablyValidDetection (line 22) | bool IsProbablyValidDetection();
    method GetDetectionMessage (line 23) | string GetDetectionMessage();

FILE: Diz.Controllers/Diz.Controllers/src/controllers/IProjectView.cs
  type ILongRunningTaskHandler (line 9) | public interface ILongRunningTaskHandler
  type IMainGridWindowView (line 15) | public interface IMainGridWindowView : IProjectView, IFormViewer
  type IProjectView (line 20) | public interface IProjectView : ILongRunningTaskHandler, ISnesNavigation
    method OnProjectOpenFail (line 23) | void OnProjectOpenFail(string errorMsg);
    method OnProjectSaved (line 24) | void OnProjectSaved();
    method OnExportFinished (line 25) | void OnExportFinished(LogCreatorOutput.OutputResult result);
    method AskToSelectNewRomFilename (line 27) | string AskToSelectNewRomFilename(string promptSubject, string promptTe...
    method OnProjectOpenWarnings (line 28) | void OnProjectOpenWarnings(IEnumerable<string> warnings);
  type ISnesNavigation (line 31) | public interface ISnesNavigation
    class HistoryArgs (line 33) | public class HistoryArgs
    method SelectOffset (line 44) | void SelectOffset(int pcOffset, HistoryArgs historyArgs = null);
    method SelectOffsetWithOvershoot (line 45) | void SelectOffsetWithOvershoot(int pcOffset, int overshootAmount = 0);

FILE: Diz.Controllers/Diz.Controllers/src/controllers/ImportROMDialogController.cs
  class ImportRomDialogController (line 15) | [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
    method GetDetectionMessage (line 48) | public string GetDetectionMessage()
    method ImportRomDialogController (line 67) | public ImportRomDialogController(ICommonGui commonGui, IImportRomDialo...
    method PromptUserForImportOptions (line 75) | public ImportRomSettings PromptUserForImportOptions(string romFilename)
    method PromptUserForOptions (line 84) | private bool PromptUserForOptions(string romFilename)
    method ReAnalyze (line 104) | private void ReAnalyze()
    method BuilderOnPropertyChanged (line 109) | private void BuilderOnPropertyChanged(object sender, PropertyChangedEv...
    method IsOffsetInRange (line 114) | private bool IsOffsetInRange(int offset) =>
    method IsProbablyValidDetection (line 117) | public bool IsProbablyValidDetection() =>
    method Refresh (line 122) | private void Refresh()
    method SyncVectorTableEntriesFromGui (line 128) | private void SyncVectorTableEntriesFromGui()
    method Warn (line 137) | private bool Warn(string msg)
    method Submit (line 144) | public bool Submit()
    method ReadRomVectorTableEntryValueWord (line 173) | public int ReadRomVectorTableEntryValueWord(int vectorEntryTableStartO...
    method ReadRomWord (line 180) | private int ReadRomWord(int romOffset) =>

FILE: Diz.Controllers/Diz.Controllers/src/controllers/LogCreatorExportSettingsEditorController.cs
  class LogCreatorSettingsEditorController (line 16) | [UsedImplicitly]
    type PromptCreateDirResult (line 19) | private enum PromptCreateDirResult
    method LogCreatorSettingsEditorController (line 47) | public LogCreatorSettingsEditorController(ILogCreatorSettingsEditorVie...
    method PromptSetupAndValidateExportSettings (line 63) | public bool PromptSetupAndValidateExportSettings() =>
    method OnPropertyChanged (line 66) | [NotifyPropertyChangedInvocator]
    method EnsureSelectRealOutputDirectory (line 70) | public bool EnsureSelectRealOutputDirectory(bool forcePrompt = false)
    method GetSampleOutput (line 89) | public string GetSampleOutput()
    method PromptToCreateOutputDirIfNeeded (line 106) | private PromptCreateDirResult PromptToCreateOutputDirIfNeeded(string e...
    method CreateOutputDirIfNeeded (line 120) | private void CreateOutputDirIfNeeded()
    method PromptForPath (line 131) | private bool PromptForPath()
    method GetOutputDirectoryName (line 144) | private string? GetOutputDirectoryName() =>
    method DoesOutputDirExist (line 147) | private bool DoesOutputDirExist() =>
    method OnClosed (line 150) | private void OnClosed(object? sender, EventArgs eventArgs) =>
    method ValidateExportSettings (line 153) | public bool ValidateExportSettings()

FILE: Diz.Controllers/Diz.Controllers/src/controllers/MarkManyController.cs
  class MarkManyController (line 11) | public class MarkManyController<TDataSource> : IMarkManyController<TData...
    method MarkManyController (line 19) | public MarkManyController(int offset, MarkCommand.MarkManyProperty ini...
    method CreateCommandFromView (line 36) | private MarkCommand CreateCommandFromView() =>
    method GetMarkCommand (line 45) | public MarkCommand GetMarkCommand()

FILE: Diz.Controllers/Diz.Controllers/src/controllers/NavigationEntry.cs
  class NavigationEntry (line 9) | public class NavigationEntry
    method NavigationEntry (line 17) | public NavigationEntry(int snesOffset, [CanBeNull] ISnesNavigation.His...

FILE: Diz.Controllers/Diz.Controllers/src/controllers/ProgressBarWorker.cs
  class ProgressBarWorker (line 10) | public abstract class ProgressBarWorker
    method ProgressBarWorker (line 19) | protected ProgressBarWorker(IProgressView view)
    method UpdateProgress (line 24) | protected void UpdateProgress(int i)
    method Thread_DoWork (line 30) | protected abstract void Thread_DoWork();
    method Run (line 38) | public void Run()
    method Setup (line 45) | protected virtual void Setup()
    method WaitForJobToFinish (line 71) | private void WaitForJobToFinish()
    method Thread_Main (line 78) | private void Thread_Main()
    method SignalJobIsDone (line 97) | private void SignalJobIsDone()
  class ProgressBarJob (line 106) | public class ProgressBarJob : ProgressBarWorker
    method RunAndWaitForCompletion (line 110) | public static void RunAndWaitForCompletion(Action action, string overr...
    method Thread_DoWork (line 132) | protected override void Thread_DoWork()
    method UpdateProgress (line 144) | protected void UpdateProgress(long currentProgress)
    method ProgressBarJob (line 164) | public ProgressBarJob(IProgressView view) : base(view)

FILE: Diz.Controllers/Diz.Controllers/src/controllers/ProjectController.cs
  class ProjectController (line 26) | [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
    method DoLongRunningTask (line 44) | public void DoLongRunningTask(Action task, string description = null)
    method OpenProject (line 58) | public bool OpenProject(string filename)
    method CreateProjectFileManager (line 95) | private IProjectFileManager CreateProjectFileManager()
    method OnProjectOpenSuccess (line 102) | private void OnProjectOpenSuccess(string filename, Project project)
    method Project_PropertyChanged (line 115) | private void Project_PropertyChanged(object sender, PropertyChangedEve...
    method SaveProject (line 121) | public string SaveProject(string filename)
    method ImportBizHawkCdl (line 147) | public void ImportBizHawkCdl(string filename)
    method ImportRomAndCreateNewProject (line 159) | public bool ImportRomAndCreateNewProject(string romFilename)
    method ImportRomAndCreateNewProject (line 171) | private void ImportRomAndCreateNewProject(ImportRomSettings importSett...
    method SetupImportController (line 181) | private IImportRomDialogController SetupImportController()
    method ImportLabelsCsv (line 189) | public void ImportLabelsCsv(ILabelEditorView labelEditor, bool replace...
    method AskToSelectNewRomFilename (line 207) | private string AskToSelectNewRomFilename(string error) =>
    method WriteAssemblyOutput (line 210) | public void WriteAssemblyOutput()
    method WriteAssemblyOutput (line 215) | private void WriteAssemblyOutput(LogWriterSettings settings, bool show...
    method UpdateExportSettings (line 229) | public void UpdateExportSettings(LogWriterSettings selectedSettings)
    method MarkChanged (line 243) | public void MarkChanged()
    method SelectOffset (line 249) | public void SelectOffset(int offset, [CanBeNull] ISnesNavigation.Histo...
    method NormalizeWramLabels (line 252) | public void NormalizeWramLabels()
    method FixMisalignedFlags (line 261) | public int FixMisalignedFlags()
    method RescanForInOut (line 270) | public bool RescanForInOut()
    method ImportBsnesUsageMap (line 281) | public long ImportBsnesUsageMap(string fileName)
    method ImportBsnesTraceLogs (line 310) | public long ImportBsnesTraceLogs(string[] fileNames)
    method ImportBsnesTraceLogsBinary (line 332) | public long ImportBsnesTraceLogsBinary(IEnumerable<string> filenames, ...
    method CloseProject (line 354) | public void CloseProject()
    method ConfirmSettingsThenExportAssembly (line 371) | public bool ConfirmSettingsThenExportAssembly()
    method ExportAssemblyWithCurrentSettings (line 381) | public bool ExportAssemblyWithCurrentSettings() =>
    method ShowSettingsEditorUntilValid (line 384) | [CanBeNull]
    method PromptUserTryAgainOrAbortExport (line 404) | private bool PromptUserTryAgainOrAbortExport() =>
    method WriteAssemblyOutputIfSettingsValid (line 407) | public bool WriteAssemblyOutputIfSettingsValid() =>
    method WriteAssemblyOutputIfSettingsValid (line 410) | public bool WriteAssemblyOutputIfSettingsValid(LogWriterSettings setti...
    method ShowExportSettingsEditor (line 432) | [CanBeNull]
    method CreateExportSettingsEditorController (line 441) | [CanBeNull]

FILE: Diz.Controllers/Diz.Controllers/src/controllers/ProjectsController.cs
  class ProjectsManager (line 15) | public class ProjectsManager : IProjectsManager
    method ProjectsManager (line 24) | public ProjectsManager(IProjectLoader projectLoader)
    method GetProject (line 36) | public Project GetProject(string filename)
    method GetSampleProject (line 57) | public Project GetSampleProject() =>
    method GetLastOpenedProject (line 60) | public Project GetLastOpenedProject()
    method OpenProjectFile (line 67) | public void OpenProjectFile(string filename)
    method OpenLastLoadedProject (line 75) | public void OpenLastLoadedProject() =>
    method AfterProjectOpenAttempt (line 78) | private void AfterProjectOpenAttempt(string filenameAttempted, Project...
  type IProjectLoader (line 98) | public interface IProjectLoader
    method LoadProject (line 100) | public Project LoadProject(string filename);
  class ProjectFileLoader (line 106) | public class ProjectFileLoader : IProjectLoader
    method LoadProject (line 110) | public Project LoadProject(string filename)
  class ProjectLoaderWithSampleDataDecorator (line 121) | public class ProjectLoaderWithSampleDataDecorator : IProjectLoader
    method ProjectLoaderWithSampleDataDecorator (line 132) | public ProjectLoaderWithSampleDataDecorator(IProjectLoader previous, I...
    method LoadProject (line 139) | public Project LoadProject(string filename)
    method CreateNewSampleProject (line 146) | private Project CreateNewSampleProject()

FILE: Diz.Controllers/Diz.Controllers/src/interfaces/IControllers.cs
  type IProjectController (line 25) | public interface IProjectController :
    class ProjectChangedEventArgs (line 34) | public class ProjectChangedEventArgs
      type ProjectChangedType (line 36) | public enum ProjectChangedType
    method OpenProject (line 55) | bool OpenProject(string filename);
    method SaveProject (line 56) | string SaveProject(string filename);
    method ImportRomAndCreateNewProject (line 58) | bool ImportRomAndCreateNewProject(string romFilename);
    method ImportLabelsCsv (line 59) | void ImportLabelsCsv(ILabelEditorView labelEditor, bool replaceAll);
    method SelectOffset (line 60) | void SelectOffset(int offset, [CanBeNull] ISnesNavigation.HistoryArgs ...
    method ConfirmSettingsThenExportAssembly (line 62) | bool ConfirmSettingsThenExportAssembly();
    method ExportAssemblyWithCurrentSettings (line 63) | bool ExportAssemblyWithCurrentSettings();
    method MarkChanged (line 64) | void MarkChanged();
  type IProjectOpenerHandler (line 67) | public interface IProjectOpenerHandler : ILongRunningTaskHandler
    method OnProjectOpenSuccess (line 69) | public void OnProjectOpenSuccess(string filename, Project project);
    method OnProjectOpenWarnings (line 70) | public void OnProjectOpenWarnings(IReadOnlyList<string> warnings);
    method OnProjectOpenFail (line 71) | public void OnProjectOpenFail(string fatalError);
    method AskToSelectNewRomFilename (line 72) | public string AskToSelectNewRomFilename(string error);
    method OpenProject (line 74) | Project OpenProject(string filename, bool showPopupAlertOnLoaded);
  type IExportDisassembly (line 77) | public interface IExportDisassembly
    method UpdateExportSettings (line 79) | void UpdateExportSettings(LogWriterSettings selectedSettings);
    method WriteAssemblyOutput (line 80) | void WriteAssemblyOutput();
  type IFixInstructionUtils (line 83) | public interface IFixInstructionUtils
    method RescanForInOut (line 87) | bool RescanForInOut();
  type ITraceLogImporters (line 90) | public interface ITraceLogImporters
    method ImportBizHawkCdl (line 92) | void ImportBizHawkCdl(string filename);
    method ImportBsnesUsageMap (line 93) | long ImportBsnesUsageMap(string fileName);
    method ImportBsnesTraceLogs (line 94) | long ImportBsnesTraceLogs(string[] fileNames);
  type IProjectNavigation (line 97) | public interface IProjectNavigation
    method GoTo (line 101) | void GoTo(int offset);
    method GoToUnreached (line 102) | void GoToUnreached(bool end, bool direction);
    method GoToIntermediateAddress (line 103) | void GoToIntermediateAddress(int offset);
  type ILabelImporter (line 107) | public interface ILabelImporter
    method ImportLabelsCsv (line 109) | void ImportLabelsCsv(ILabelEditorView labelEditor, bool replaceAll);
  type IMainFormController (line 113) | public interface IMainFormController :
    method SetProject (line 132) | void SetProject(string filename, Project project);
  type IMarkManyController (line 136) | public interface IMarkManyController<out TDataSource>
    method GetMarkCommand (line 140) | MarkCommand GetMarkCommand();
  type ILogCreatorSettingsEditorController (line 143) | public interface ILogCreatorSettingsEditorController : INotifyPropertyCh...
    method PromptSetupAndValidateExportSettings (line 151) | bool PromptSetupAndValidateExportSettings();
    method EnsureSelectRealOutputDirectory (line 153) | bool EnsureSelectRealOutputDirectory(bool forcePrompt = false);
    method GetSampleOutput (line 154) | string GetSampleOutput();
  type IDizAppSettings (line 158) | public interface IDizAppSettings : INotifyPropertyChanged
  type IDizDocument (line 164) | public interface IDizDocument : INotifyPropertyChanged

FILE: Diz.Controllers/Diz.Controllers/src/interfaces/IViewers.cs
  type IFormViewer (line 10) | public interface IFormViewer
    method Show (line 14) | void Show();
    method BringFormToTop (line 15) | void BringFormToTop();
  type IModalDialog (line 18) | public interface IModalDialog
    method PromptDialog (line 25) | bool PromptDialog();
  type IProgressView (line 29) | public interface IProgressView : IFormViewer, IModalDialog, IProgress<in...
    method IsVisible (line 32) | bool IsVisible();
    method SignalJobIsDone (line 39) | void SignalJobIsDone();
  type IMarkManyView (line 43) | public interface IMarkManyView<TDataSource> : IModalDialog
    method GetPropertyValue (line 47) | object GetPropertyValue();
    method AttemptSetSettings (line 50) | void AttemptSetSettings(Dictionary<MarkCommand.MarkManyProperty, objec...
    method SaveCurrentSettings (line 51) | Dictionary<MarkCommand.MarkManyProperty, object> SaveCurrentSettings();
  type IBytesGridViewer (line 56) | public interface IBytesGridViewer<TByteItem> : IRowBaseViewer<TByteItem>...
    method SelectRow (line 61) | void SelectRow(int row);
    method BeginEditingSelectionComment (line 64) | void BeginEditingSelectionComment();
    method BeginEditingSelectionLabel (line 65) | void BeginEditingSelectionLabel();
    class SelectedOffsetChangedEventArgs (line 67) | public class SelectedOffsetChangedEventArgs : EventArgs
  type ILabelEditorView (line 79) | public interface ILabelEditorView : IFormViewer
    method PromptForCsvFilename (line 83) | string PromptForCsvFilename();
    method ShowLineItemError (line 84) | void ShowLineItemError(string exMessage, int errLine);
    method SetProjectController (line 86) | void SetProjectController([CanBeNull] IProjectController projectContro...
    method RepopulateFromData (line 87) | void RepopulateFromData();
    method RebindProject (line 88) | void RebindProject();
    method FocusOrCreateLabelAtSelectedRomOffsetIa (line 90) | void FocusOrCreateLabelAtSelectedRomOffsetIa();
    method FocusOrCreateLabelAtRomOffsetIa (line 91) | void FocusOrCreateLabelAtRomOffsetIa(int selectedOffset);
    method FocusOrCreateLabelAtSnesAddress (line 92) | void FocusOrCreateLabelAtSnesAddress(int snesAddress);
  type IRegionListView (line 95) | public interface IRegionListView : IFormViewer
    method SetProjectController (line 97) | void SetProjectController([CanBeNull] IProjectController projectContro...
    method RebindProject (line 98) | void RebindProject();
  type IImportRomDialogView (line 101) | public interface IImportRomDialogView
    method ShowAndWaitForUserToConfirmSettings (line 106) | bool ShowAndWaitForUserToConfirmSettings();
    method RefreshUi (line 107) | void RefreshUi();
  type ICommonGui (line 110) | public interface ICommonGui
    method PromptToConfirmAction (line 112) | bool PromptToConfirmAction(string msg);
    method ShowError (line 114) | void ShowError(string msg);
    method ShowWarning (line 115) | void ShowWarning(string msg);
    method ShowMessage (line 116) | void ShowMessage(string msg);
  type ILogCreatorSettingsEditorView (line 119) | public interface ILogCreatorSettingsEditorView : IFormViewer
    method PromptForLogPathFromFileOrFolderDialog (line 123) | [CanBeNull] string PromptForLogPathFromFileOrFolderDialog(bool askForF...
    method PromptCreatePath (line 124) | bool PromptCreatePath(string buildFullOutputPath, string extraMsg);
    method PromptEditAndConfirmSettings (line 130) | bool PromptEditAndConfirmSettings();
  type IDataGridEditorForm (line 134) | public interface IDataGridEditorForm : IFormViewer, IProjectView

FILE: Diz.Controllers/Diz.Controllers/src/interfaces/Interfaces.cs
  type IDizApp (line 10) | public interface IDizApp
    method Run (line 12) | void Run(string initialProjectFileToOpen = "");
  type IGridRow (line 15) | public interface IGridRow<out TItem>
  type IDataGridRow (line 22) | public interface IDataGridRow : IGridRow<ByteEntry>, INotifyPropertyChanged
  type IDataSubsetRomByteDataGridLoader (line 27) | public interface IDataSubsetRomByteDataGridLoader<TRow, TItem> : IDataSu...
  type IProjectsManager (line 37) | public interface IProjectsManager : IProjects, IProjectLoadListener, ISa...
  type IProjectLoadListener (line 39) | public interface IProjectLoadListener
    method OpenProjectFile (line 42) | void OpenProjectFile(string filename);
  type IProjects (line 45) | public interface IProjects
    method GetProject (line 47) | Project GetProject(string filename);
  type ISampleProjectLoader (line 50) | public interface ISampleProjectLoader
    method GetSampleProject (line 52) | Project GetSampleProject();
  type ILastProjectLoaded (line 55) | public interface ILastProjectLoaded
    method GetLastOpenedProject (line 57) | Project GetLastOpenedProject();
    method OpenLastLoadedProject (line 58) | void OpenLastLoadedProject();
  type IViewFactory (line 62) | public interface IViewFactory
    method GetImportRomView (line 64) | IImportRomDialogView GetImportRomView();
    method GetProgressBarView (line 65) | IProgressView GetProgressBarView();
    method GetExportDisassemblyView (line 66) | ILogCreatorSettingsEditorView GetExportDisassemblyView();
    method GetLabelEditorView (line 67) | ILabelEditorView GetLabelEditorView();
    method GetMainGridWindowView (line 68) | IMainGridWindowView GetMainGridWindowView();
    method GetAboutView (line 69) | IFormViewer GetAboutView();
    method GetRegionEditorView (line 70) | IRegionListView GetRegionEditorView();
  type IControllerFactory (line 73) | public interface IControllerFactory
    method GetAssemblyExporterSettingsController (line 75) | ILogCreatorSettingsEditorController GetAssemblyExporterSettingsControl...
    method GetImportRomDialogController (line 76) | IImportRomDialogController GetImportRomDialogController();
    method GetLargeFileReaderProgressController (line 77) | ILargeFilesReaderController GetLargeFileReaderProgressController();

FILE: Diz.Controllers/Diz.Controllers/src/services/Registration.cs
  class DizControllersCompositionRoot (line 11) | [UsedImplicitly]
    method Compose (line 14) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.Controllers/Diz.Controllers/src/util/DizDocument.cs
  class DizDocument (line 19) | [UsedImplicitly]
    method DizDocument (line 56) | public DizDocument(IDizAppSettings appSettings)

FILE: Diz.Controllers/Diz.Controllers/src/util/LargeFilesReader.cs
  class LargeFilesReader (line 10) | public class LargeFilesReader : ProgressBarWorker, ILargeFilesReaderCont...
    method Thread_DoWork (line 18) | protected override void Thread_DoWork()
    method UpdateProgress (line 45) | protected void UpdateProgress(long currentPositionInBytes)
    method LargeFilesReader (line 59) | public LargeFilesReader(IProgressView view) : base(view) { }
  type ILargeFilesReaderController (line 62) | public interface ILargeFilesReaderController
    method Run (line 66) | void Run();

FILE: Diz.Controllers/Diz.Controllers/src/util/RomByteRowBase.cs
  class RomByteRowBase (line 6) | public class RomByteRowBase : INotifyPropertyChangedExt
    method OnRomBytePropertyChanged (line 165) | private void OnRomBytePropertyChanged(object sender, PropertyChangedEv...
    method OnPropertyChanged (line 195) | [NotifyPropertyChangedInvocator]
    method GetBackgroundColorForMarkedAsOpcode (line 200) | protected Color? GetBackgroundColorForMarkedAsOpcode(string colPropName)
    method GetBackColorInOut (line 217) | private Color? GetBackColorInOut()
    method GetInstructionBackgroundColor (line 226) | private Color? GetInstructionBackgroundColor()
    method GetDataBankColor (line 236) | private Color? GetDataBankColor()
    method GetDirectPageColor (line 253) | private Color? GetDirectPageColor()
    method GetMFlagColor (line 272) | public Color? GetMFlagColor() => GetMxFlagColor(0x20);
    method GetXFlagColor (line 273) | public Color? GetXFlagColor() => GetMxFlagColor(0x10);
    method GetMxFlagColor (line 275) | private Color? GetMxFlagColor(int nextByteMask)
  class RomByteRowAttributes (line 295) | public static class RomByteRowAttributes
    method IsColumnEditable (line 297) | public static bool IsColumnEditable(string propertyName) => TestAttrib...
    method GetColumnDisplayName (line 299) | public static string GetColumnDisplayName(string propertyName) => Test...
    method GetColumnIsReadOnly (line 301) | public static bool GetColumnIsReadOnly(string propertyName) => TestAtt...
    method IsPropertyBrowsable (line 303) | public static bool IsPropertyBrowsable(string propertyName) => TestAtt...
    method TestAttribute (line 305) | private static TResult TestAttribute<TAttribute, TResult>(
  type IRowBaseViewer (line 313) | public interface IRowBaseViewer<out TItem>

FILE: Diz.Core.Interfaces/CpuInterfaces.cs
  type ISteppable (line 4) | public interface ISteppable
    method Step (line 6) | int Step(int offset, bool branch, bool force, int prevOffset);
  type IAutoSteppable (line 9) | public interface IAutoSteppable
    method AutoStepSafe (line 11) | public int AutoStepSafe(int offset);
    method AutoStepHarsh (line 12) | public int AutoStepHarsh(int offset, int count);
  type IMarkOperandAndOpcode (line 15) | public interface IMarkOperandAndOpcode
    method MarkAsOpcodeAndOperandsStartingAt (line 17) | public void MarkAsOpcodeAndOperandsStartingAt(

FILE: Diz.Core.Interfaces/Enums.cs
  class ColorDescriptionAttribute (line 6) | [AttributeUsage(AttributeTargets.All)]
  type FlagType (line 11) | public enum FlagType : byte
  type Architecture (line 56) | public enum Architecture : byte
  type InOutPoint (line 63) | [Flags]
  type RomSpeed (line 73) | public enum RomSpeed : byte
  type RomMapMode (line 80) | public enum RomMapMode : byte
  type ColumnType (line 100) | public enum ColumnType : int

FILE: Diz.Core.Interfaces/LabelInterfaces.cs
  type IRegion (line 6) | public interface IRegion : INotifyPropertyChanged
  type IReadOnlyContextMapping (line 35) | public interface IReadOnlyContextMapping : INotifyPropertyChanged
  type IContextMapping (line 41) | public interface IContextMapping : IReadOnlyContextMapping
  type IReadOnlyLabel (line 48) | public interface IReadOnlyLabel
  type IAnnotationLabel (line 56) | public interface IAnnotationLabel : IReadOnlyLabel
    method GetName (line 67) | string GetName(string contextName = "");
  type IReadOnlyLabelProvider (line 70) | public interface IReadOnlyLabelProvider
    method GetLabel (line 74) | IAnnotationLabel? GetLabel(int snesAddress);
    method GetLabelName (line 75) | string? GetLabelName(int snesAddress);
    method GetLabelComment (line 76) | string GetLabelComment(int snesAddress);
  type IMirroredLabelCacheSearch (line 83) | public interface IMirroredLabelCacheSearch
    method SearchOptimizedForMirroredLabel (line 85) | (int labelAddress, IAnnotationLabel? labelEntry) SearchOptimizedForMir...
  type ILabelProvider (line 88) | public interface ILabelProvider : IReadOnlyLabelProvider
    method AddLabel (line 90) | void AddLabel(int snesAddress, IAnnotationLabel label, bool overwrite ...
    method DeleteAllLabels (line 91) | void DeleteAllLabels();
    method RemoveLabel (line 94) | void RemoveLabel(int snesAddress);
    method SetAll (line 96) | void SetAll(Dictionary<int, IAnnotationLabel> newLabels);
    method AppendLabels (line 97) | void AppendLabels(Dictionary<int, IAnnotationLabel> newLabels, bool sm...
    method SortLabels (line 99) | void SortLabels();
  type IReadOnlyLabels (line 102) | public interface IReadOnlyLabels

FILE: Diz.Core.Interfaces/ModelInterfaces.cs
  type IReadOnlyByteSource (line 10) | public interface IReadOnlyByteSource
    method GetRomByte (line 12) | byte? GetRomByte(int offset);
    method GetRomWord (line 13) | int? GetRomWord(int offset);
    method GetRomLong (line 14) | int? GetRomLong(int offset);
    method GetRomDoubleWord (line 15) | int? GetRomDoubleWord(int offset);
  type IInOutPointSettable (line 18) | public interface IInOutPointSettable
    method SetInOutPoint (line 20) | public void SetInOutPoint(int i, InOutPoint point);
    method ClearInOutPoint (line 21) | public void ClearInOutPoint(int i);
    method RescanInOutPoints (line 23) | void RescanInOutPoints();
  type IInOutPointGettable (line 26) | public interface IInOutPointGettable
    method GetInOutPoint (line 28) | InOutPoint GetInOutPoint(int offset);
  type IRomByteFlagsGettable (line 31) | public interface IRomByteFlagsGettable
    method GetMxFlags (line 33) | int GetMxFlags(int i);
    method GetMFlag (line 34) | bool GetMFlag(int i);
    method GetXFlag (line 35) | bool GetXFlag(int i);
    method GetDataBank (line 37) | int GetDataBank(int offset);
    method GetDirectPage (line 38) | int GetDirectPage(int offset);
    method GetFlag (line 39) | FlagType GetFlag(int offset);
  type IRomByteFlagsSettable (line 42) | public interface IRomByteFlagsSettable
    method SetMxFlags (line 44) | void SetMxFlags(int i, int mx);
    method SetMFlag (line 45) | void SetMFlag(int romOffset, bool value);
    method SetXFlag (line 46) | void SetXFlag(int romOffset, bool value);
    method SetDataBank (line 48) | void SetDataBank(int romOffset, int result);
    method SetDirectPage (line 49) | void SetDirectPage(int romOffset, int result);
    method SetFlag (line 50) | void SetFlag(int offset, FlagType flagType);
  type IArchitectureGettable (line 53) | public interface IArchitectureGettable
    method GetArchitecture (line 55) | public Architecture GetArchitecture(int i);
  type IArchitectureSettable (line 58) | public interface IArchitectureSettable
    method SetArchitecture (line 60) | public void SetArchitecture(int i, Architecture arch);
  type IRomMapProvider (line 63) | public interface IRomMapProvider
  type IRomSize (line 70) | public interface IRomSize
    method GetRomSize (line 72) | int GetRomSize();
    method GetBankSize (line 73) | int GetBankSize();
  type ISnesBankInfo (line 76) | public interface ISnesBankInfo
    method GetNumberOfBanks (line 78) | int GetNumberOfBanks();
    method GetBankName (line 79) | string GetBankName(int bankIndex);
  class CpuInstructionDataFormatted (line 82) | public class CpuInstructionDataFormatted
  type IInstructionGettable (line 100) | public interface IInstructionGettable
    method GetInstructionLength (line 102) | int GetInstructionLength(int offset);
    method GetInstructionStr (line 103) | string GetInstructionStr(int offset);
    method GetInstructionData (line 104) | public CpuInstructionDataFormatted GetInstructionData(int offset);
  type IMarkable (line 107) | public interface IMarkable
    method Mark (line 109) | int Mark(Action<int> markAction, int offset, int count);
  type IRomByteBase (line 112) | public interface IRomByteBase
  type ISnesRomByte (line 118) | public interface ISnesRomByte : INotifyPropertyChanged
  type IRomByte (line 129) | public interface IRomByte :
    method EqualsButNoRomByte (line 134) | public bool EqualsButNoRomByte(IRomByte other);
  type IRomBytes (line 137) | public interface IRomBytes<out T> : IEnumerable<T>, INotifyCollectionCha...
    method Clear (line 140) | void Clear();
    method SetBytesFrom (line 146) | void SetBytesFrom(IReadOnlyList<byte> copyFrom, int dstStartingOffset);
  type IRomBytesProvider (line 149) | public interface IRomBytesProvider
  class RomBytesProviderExtension (line 154) | public static class RomBytesProviderExtension
    method CreateListRawRomBytes (line 157) | public static List<byte> CreateListRawRomBytes(this IEnumerable<IRomBy...
  type ITemporaryLabelProvider (line 164) | public interface ITemporaryLabelProvider : ILabelProvider
    method AddOrReplaceTemporaryLabel (line 168) | public void AddOrReplaceTemporaryLabel(int snesAddress, IAnnotationLab...
    method ClearTemporaryLabels (line 169) | public void ClearTemporaryLabels();
    method LockLabelsCache (line 170) | void LockLabelsCache();
    method UnlockLabelsCache (line 171) | void UnlockLabelsCache();
  type ILabelService (line 174) | public interface ILabelService :
  type ILabelServiceWithTempLabels (line 180) | public interface ILabelServiceWithTempLabels :
  type IData (line 192) | public interface IData :
  class DataExtensions (line 211) | public static class DataExtensions
    method GetApi (line 213) | public static T? GetApi<T>(this IData @this) where T : class, IArchite...
    method GetTag (line 215) | public static T? GetTag<T>(this IData @this) where T : class, IDataTag =>
  type ISnesCachedVerificationInfo (line 219) | public interface ISnesCachedVerificationInfo
  type IDataStoreProvider (line 225) | public interface IDataStoreProvider<T> : IEnumerable<T> where T : class
    method AddIfDoesntExist (line 227) | bool AddIfDoesntExist(T type);
    method Get (line 228) | TSearchFor Get<TSearchFor>() where TSearchFor : class, T;
  type IArchitectureApi (line 232) | public interface IArchitectureApi
  type IDataTag (line 237) | public interface IDataTag
  type ISnesIntermediateAddress (line 242) | public interface ISnesIntermediateAddress
    method GetIntermediateAddressOrPointer (line 244) | int GetIntermediateAddressOrPointer(int offset);
    method GetIntermediateAddress (line 247) | int GetIntermediateAddress(int offset, bool resolve = false);
    method IsMatchingIntermediateAddress (line 249) | bool IsMatchingIntermediateAddress(int intermediateAddress, int addres...
  type ISnesAddressConverter (line 252) | public interface ISnesAddressConverter
    method ConvertPCtoSnes (line 254) | int ConvertPCtoSnes(int offset);
    method ConvertSnesToPc (line 255) | int ConvertSnesToPc(int offset);

FILE: Diz.Core.Interfaces/OtherInterfaces.cs
  type IRegionProvider (line 5) | public interface IRegionProvider
    method GetRegion (line 8) | IRegion? GetRegion(int snesAddress);
    method CreateNewRegion (line 11) | IRegion? CreateNewRegion();
  type ICommentTextProvider (line 14) | public interface ICommentTextProvider
    method GetCommentText (line 17) | string GetCommentText(int snesAddress);
    method GetComment (line 20) | string? GetComment(int snesAddress);
  type IAnnotationProvider (line 24) | public interface IAnnotationProvider
    method GetOneAnnotationAtPc (line 26) | public T GetOneAnnotationAtPc<T>(int pcOffset) where T : Annotation, n...
  type IByteGraphProvider (line 29) | public interface IByteGraphProvider
    method BuildFlatByteEntryForSnes (line 31) | ByteEntry BuildFlatByteEntryForSnes(int snesAddress);
    method BuildFlatByteEntryForRom (line 32) | ByteEntry BuildFlatByteEntryForRom(int snesAddress);
  type IAppVersionInfo (line 37) | public interface IAppVersionInfo
    type AppVersionInfoType (line 39) | enum AppVersionInfoType
    method GetVersionInfo (line 45) | string GetVersionInfo(AppVersionInfoType type);

FILE: Diz.Core/Interfaces.cs
  type IDataRange (line 8) | public interface IDataRange
    method ManualUpdate (line 16) | public void ManualUpdate(int newStartIndex, int newRangeCount);
  type IDataFactory (line 19) | public interface IDataFactory
    method Create (line 22) | Data Create();
  type ISampleDataFactory (line 26) | public interface ISampleDataFactory : IDataFactory
  type IProjectFileAssemblyExporter (line 32) | public interface IProjectFileAssemblyExporter
    method ExportAssembly (line 34) | bool ExportAssembly(string projectFileName);
  type IProjectProvider (line 38) | public interface IProjectProvider
    method Read (line 40) | Project? Read();
  type IProjectFileOpener (line 44) | public interface IProjectFileOpener : IProjectProvider
    method SetOpenFilename (line 46) | void SetOpenFilename(string projectFilename);
  class ProjectFileProviderExtensions (line 49) | public static class ProjectFileProviderExtensions
    method ReadProjectFromFile (line 51) | public static Project? ReadProjectFromFile(this IProjectFileOpener @th...
  type IProjectFactoryFromRomImportSettings (line 58) | public interface IProjectFactoryFromRomImportSettings : IProjectProvider

FILE: Diz.Core/commands/Commands.cs
  class MarkCommand (line 3) | public class MarkCommand
    type MarkManyProperty (line 5) | public enum MarkManyProperty

FILE: Diz.Core/datasubset/DataSubset.cs
  type IDataSubsetLoader (line 12) | public interface IDataSubsetLoader<TRow, TItem>
    method RowValueNeeded (line 15) | TRow RowValueNeeded(int largeOffset, DataSubset<TRow, TItem> subset);
    method OnBigWindowChangeStart (line 17) | void OnBigWindowChangeStart(DataSubset<TRow, TItem> subset);
    method OnBigWindowChangeFinished (line 18) | void OnBigWindowChangeFinished(DataSubset<TRow, TItem> subset);
  class DataSubset (line 21) | public class DataSubset<TRow, TItem> : INotifyPropertyChangedExt
    method UpdateDimensions (line 89) | protected virtual void UpdateDimensions(int newRowCount, int newStarti...
    method OnWindowDimensionsChanging (line 98) | [SuppressMessage("ReSharper", "UnusedParameter.Local")]
    method CacheRows (line 135) | private void CacheRows()
    method DropRowCache (line 151) | private void DropRowCache()
    method SetNotifyChangedForAllRows (line 161) | private void SetNotifyChangedForAllRows(bool register)
    method OnRowPropertyChanged (line 175) | private void OnRowPropertyChanged(object sender, PropertyChangedEventA...
    method RowValueNeededForLargeOffset (line 203) | protected TRow RowValueNeededForLargeOffset(int largeOffset) =>
    method IsRowOffsetValid (line 206) | public bool IsRowOffsetValid(int rowOffset) =>
    method IsLargeOffsetContainedInVisibleRows (line 209) | public bool IsLargeOffsetContainedInVisibleRows(int largeOffset) =>
    method IsValidLargeOffset (line 212) | public bool IsValidLargeOffset(int largeOffset) =>
    method GetRowIndexFromLargeOffset (line 215) | public int GetRowIndexFromLargeOffset(int largeOffset) =>
    method GetLargeOffsetFromRowOffset (line 220) | public int GetLargeOffsetFromRowOffset(int rowOffset) =>
    method OnPropertyChanged (line 227) | [NotifyPropertyChangedInvocator]

FILE: Diz.Core/datasubset/DataSubsetSupport.cs
  class DataSubsetLoader (line 6) | public abstract class DataSubsetLoader<TRow, TItem> : IDataSubsetLoader<...
    class Entry (line 8) | public class Entry
    method OnBigWindowChangeStart (line 35) | public virtual void OnBigWindowChangeStart(DataSubset<TRow, TItem> sub...
    method IncrementAllAgeScores (line 42) | private void IncrementAllAgeScores()
    method RowValueNeeded (line 48) | public virtual TRow RowValueNeeded(int largeOffset, DataSubset<TRow, T...
    method GetOrCreateRowEntry (line 55) | private Entry GetOrCreateRowEntry(int largeIndex, DataSubset<TRow, TIt...
    method CreateNewRow (line 70) | protected abstract TRow CreateNewRow(DataSubset<TRow, TItem> subset, i...
    method OnBigWindowChangeFinished (line 78) | public virtual void OnBigWindowChangeFinished(DataSubset<TRow, TItem> ...
  class DataSubsetSimpleLoader (line 98) | public class DataSubsetSimpleLoader<TRow, TItem> : IDataSubsetLoader<TRo...
    method RowValueNeeded (line 102) | public TRow RowValueNeeded(int largeOffset, DataSubset<TRow, TItem> su...
    method OnBigWindowChangeStart (line 115) | public void OnBigWindowChangeStart(DataSubset<TRow, TItem> subset) {}
    method OnBigWindowChangeFinished (line 116) | public void OnBigWindowChangeFinished(DataSubset<TRow, TItem> subset) {}

FILE: Diz.Core/datasubset/DataSubsetWithSelection.cs
  class DataSubsetWithSelection (line 8) | public class DataSubsetWithSelection<TRow, TItem> : DataSubset<TRow, TItem>
    method EnsureViewContainsLargeIndex (line 42) | private void EnsureViewContainsLargeIndex(int largeIndex)
    method EnsureViewContainsSelectionIfNeeded (line 85) | private void EnsureViewContainsSelectionIfNeeded()
    method ClampSelectionIfNeeded (line 91) | private void ClampSelectionIfNeeded() =>
    method GetClampedIndexIfNeeded (line 94) | private int GetClampedIndexIfNeeded(int largeIndex) =>
    method GetLargeIndexClampedToVisibleRows (line 99) | public int GetLargeIndexClampedToVisibleRows(int largeIndexToClamp) =>
    method SelectRow (line 102) | public void SelectRow(int rowIndex) =>
    method UpdateDimensions (line 105) | protected override void UpdateDimensions(int newRowCount, int newStart...

FILE: Diz.Core/export/LogWriterSettings.cs
  type ILogWriterSettings (line 17) | public interface ILogWriterSettings
  type LogWriterSettings (line 21) | public record LogWriterSettings : ILogWriterSettings

FILE: Diz.Core/export/LogWriterSettingsValidator.cs
  class LogWriterSettingsValidator (line 7) | public class LogWriterSettingsValidator : AbstractValidator<LogWriterSet...
    method LogWriterSettingsValidator (line 9) | public LogWriterSettingsValidator(IFilesystemService fs)
  class LogWriterSettingsOutputString (line 18) | public class LogWriterSettingsOutputString : AbstractValidator<LogWriter...
    method LogWriterSettingsOutputString (line 20) | public LogWriterSettingsOutputString()
  class LogWriterSettingsOutputMultipleFiles (line 35) | public class LogWriterSettingsOutputMultipleFiles : AbstractValidator<Lo...
    method OutputDirReallyExistsOnDisk (line 39) | private bool OutputDirReallyExistsOnDisk(LogWriterSettings settings)
    method PathLooksLikeDirectoryNameOnly (line 47) | private bool PathLooksLikeDirectoryNameOnly(string fileOrFolderPath) =>
    method LogWriterSettingsOutputMultipleFiles (line 51) | public LogWriterSettingsOutputMultipleFiles(IFilesystemService fs)

FILE: Diz.Core/model/Annotation.cs
  class Annotation (line 18) | public abstract class Annotation : AnnotationBase
  method OnParentChanged (line 25) | public void OnParentChanged(ByteEntry parent)
  class AnnotationBase (line 32) | public abstract class AnnotationBase : INotifyPropertyChangedExt
    method OnPropertyChanged (line 36) | [NotifyPropertyChangedInvocator]
  class MarkAnnotation (line 43) | public class MarkAnnotation : Annotation, IComparable<MarkAnnotation>, I...
    method Equals (line 53) | protected bool Equals(MarkAnnotation other)
    method Equals (line 58) | public override bool Equals(object obj)
    method GetHashCode (line 66) | public override int GetHashCode()
    method CompareTo (line 71) | public int CompareTo(MarkAnnotation other)
    method CompareTo (line 78) | public int CompareTo(object obj)
  class ByteAnnotation (line 86) | public class ByteAnnotation : Annotation, IComparable<ByteAnnotation>, I...
    method CompareTo (line 97) | public int CompareTo(ByteAnnotation other)
    method CompareTo (line 104) | public int CompareTo(object obj)
    method Equals (line 111) | protected bool Equals(ByteAnnotation other)
    method Equals (line 116) | public override bool Equals(object obj)
    method GetHashCode (line 124) | public override int GetHashCode()
  class OpcodeAnnotation (line 131) | public class OpcodeAnnotation : Annotation, IComparable<OpcodeAnnotation...
    method Equals (line 171) | protected bool Equals(OpcodeAnnotation other)
    method Equals (line 176) | public override bool Equals(object obj)
    method GetHashCode (line 183) | public override int GetHashCode()
    method CompareTo (line 195) | public int CompareTo(OpcodeAnnotation other)
    method CompareTo (line 210) | public int CompareTo(object obj)
  class BranchAnnotation (line 222) | public class BranchAnnotation : Annotation, IComparable<BranchAnnotation...
    method Equals (line 236) | protected bool Equals(BranchAnnotation other)
    method Equals (line 241) | public override bool Equals(object obj)
    method GetHashCode (line 248) | public override int GetHashCode()
    method CompareTo (line 254) | public int CompareTo(BranchAnnotation other)
    method CompareTo (line 261) | public int CompareTo(object obj)
  class ContextMapping (line 270) | [Serializable]
    method OnPropertyChanged (line 290) | protected virtual void OnPropertyChanged([CallerMemberName] string? pr...
  class Label (line 303) | public class Label : Annotation, IAnnotationLabel, IComparable<Label>, I...
    method GetName (line 324) | public string GetName(string contextName = "")
    method Equals (line 333) | private bool Equals(Label other)
    method Equals (line 340) | public override bool Equals(object obj)
    method GetHashCode (line 348) | public override int GetHashCode()
    method GetContextMappingsHashCode (line 359) | private int GetContextMappingsHashCode()
    method CompareTo (line 373) | public int CompareTo(Label other)
    method CompareContextMappings (line 387) | private int CompareContextMappings(Label other)
    method CompareTo (line 410) | public int CompareTo(object obj)
    class ContextMappingComparer (line 420) | private class ContextMappingComparer : IEqualityComparer<IContextMapping>
      method Equals (line 422) | public bool Equals(IContextMapping x, IContextMapping y)
      method GetHashCode (line 429) | public int GetHashCode(IContextMapping obj)
    method IsDefault (line 438) | public bool IsDefault() => !string.IsNullOrEmpty(Name) && !string.IsNu...
  class TempLabel (line 443) | public class TempLabel : Label
    type TempLabelFlags (line 445) | [Flags]
  class Comment (line 455) | public class Comment : Annotation, IComparable<Comment>, IComparable
    method Equals (line 467) | protected bool Equals(Comment other)
    method Equals (line 472) | public override bool Equals(object obj)
    method GetHashCode (line 479) | public override int GetHashCode()
    method CompareTo (line 484) | public int CompareTo(Comment other)
    method CompareTo (line 491) | public int CompareTo(object obj)

FILE: Diz.Core/model/ArchProvider.cs
  class DataStoreProvider (line 9) | public class DataStoreProvider<T> : IDataStoreProvider<T> where T : class
    method AddIfDoesntExist (line 13) | public bool AddIfDoesntExist(T type)
    method Get (line 22) | public TSearchFor Get<TSearchFor>() where TSearchFor : class, T
    method GetEnumerator (line 34) | public IEnumerator<T> GetEnumerator() => Items.GetEnumerator();
    method GetEnumerator (line 35) | IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)Items).GetEnu...

FILE: Diz.Core/model/Extensions.cs
  class DataExtensions (line 5) | public static class DataExtensions
    method GetRomByteUnsafe (line 13) | public static byte GetRomByteUnsafe(this IReadOnlyByteSource data, int...
    method GetRomWordUnsafe (line 19) | public static int GetRomWordUnsafe(this IReadOnlyByteSource data, int ...
    method GetRomLongUnsafe (line 25) | public static int GetRomLongUnsafe(this IReadOnlyByteSource data, int ...
    method GetRomDoubleWordUnsafe (line 31) | public static int GetRomDoubleWordUnsafe(this IReadOnlyByteSource data...

FILE: Diz.Core/model/LabelProvider.cs
  class LabelsMirroredLabelCacheSearch (line 17) | public class LabelsMirroredLabelCacheSearch : IMirroredLabelCacheSearch
    method LabelsMirroredLabelCacheSearch (line 21) | public LabelsMirroredLabelCacheSearch(IEnumerable<KeyValuePair<int, IA...
    method SearchOptimizedForMirroredLabel (line 50) | public (int labelAddress, IAnnotationLabel labelEntry) SearchOptimized...
  class LabelProviderBase (line 78) | public abstract class LabelProviderBase
    method GetLabel (line 80) | public abstract IAnnotationLabel GetLabel(int snesAddress);
    method GetLabelName (line 82) | public string GetLabelName(int snesAddress) =>
    method GetLabelComment (line 85) | public string GetLabelComment(int snesAddress) =>
  class LabelsServiceWithTemp (line 89) | public class LabelsServiceWithTemp : LabelProviderBase, ILabelServiceWit...
    method LabelsServiceWithTemp (line 91) | public LabelsServiceWithTemp(Data data)
    method AddOrReplaceTemporaryLabel (line 120) | public void AddOrReplaceTemporaryLabel(int snesAddress, IAnnotationLab...
    method ClearTemporaryLabels (line 132) | public void ClearTemporaryLabels()
    method LockLabelsCache (line 140) | public void LockLabelsCache()
    method UnlockLabelsCache (line 146) | public void UnlockLabelsCache()
    method ConcatNormalAndTempLabels (line 166) | private IEnumerable<KeyValuePair<int, IAnnotationLabel>> ConcatNormalA...
    method GetLabel (line 169) | public override IAnnotationLabel GetLabel(int snesAddress)
    method DeleteAllLabels (line 179) | public void DeleteAllLabels()
    method RemoveLabel (line 190) | public void RemoveLabel(int snesAddress)
    method AddLabel (line 202) | public void AddLabel(int snesAddress, IAnnotationLabel labelToAdd, boo...
    method SetAll (line 215) | public void SetAll(Dictionary<int, IAnnotationLabel> newLabels)
    method AppendLabels (line 226) | public void AppendLabels(Dictionary<int, IAnnotationLabel> newLabels, ...
    method Equals (line 237) | public bool Equals(LabelsServiceWithTemp other)
    method Equals (line 243) | public override bool Equals(object obj)
    method GetHashCode (line 250) | public override int GetHashCode()
    method SortLabels (line 271) | public void SortLabels()
  class ByteSourceLabelProvider (line 281) | public class ByteSourceLabelProvider : LabelProviderBase, ILabelService,...
    method Equals (line 283) | public bool Equals(ByteSourceLabelProvider other)
    method Equals (line 290) | public override bool Equals(object obj)
    method GetHashCode (line 298) | public override int GetHashCode()
    method ByteSourceLabelProvider (line 316) | public ByteSourceLabelProvider(ByteSource byteSource)
    method IsLabel (line 324) | public static bool IsLabel(Annotation annotation) => annotation.GetTyp...
    method DeleteAllLabels (line 326) | public void DeleteAllLabels()
    method RemoveLabel (line 331) | public void RemoveLabel(int snesAddress)
    method SetAll (line 336) | public void SetAll(Dictionary<int, IAnnotationLabel> newLabels)
    method GetLabel (line 345) | public override Label GetLabel(int snesAddress) => ByteSource.GetOneAn...
    method AddLabel (line 347) | public void AddLabel(int snesAddress, IAnnotationLabel labelToAdd, boo...
  class LabelsCollection (line 362) | public class LabelsCollection : LabelProviderBase, ILabelService, IEquat...
    method AddLabel (line 370) | public void AddLabel(int snesAddress, IAnnotationLabel labelToAdd, boo...
    method DeleteAllLabels (line 383) | public void DeleteAllLabels()
    method RemoveLabel (line 388) | public void RemoveLabel(int snesAddress)
    method SetAll (line 393) | public void SetAll(Dictionary<int, IAnnotationLabel> newLabels)
    method AppendLabels (line 399) | public void AppendLabels(Dictionary<int, IAnnotationLabel> newLabels, ...
    method SortLabels (line 427) | public void SortLabels()
    method GetLabel (line 434) | public override IAnnotationLabel GetLabel(int snesAddress) =>
    method Equals (line 441) | public bool Equals(LabelsCollection other)
    method Equals (line 448) | public override bool Equals(object obj)
    method GetHashCode (line 456) | public override int GetHashCode()

FILE: Diz.Core/model/Project.cs
  type IProject (line 15) | public interface IProject :
  class ProjectSettings (line 23) | [TypeConverter(typeof(ExpandableObjectConverter))]
    method ToString (line 41) | public override string ToString() => "";
  class ProjectUserSettings (line 44) | public class ProjectUserSettings
  class Project (line 60) | public class Project : IProject
    method Project (line 185) | public Project()
    method GetAbsolutePathToRomFile (line 191) | private string GetAbsolutePathToRomFile()
    method GetFullBasePathToRomFile (line 198) | private string? GetFullBasePathToRomFile(string projFileName)
    method SessionOnPropertyChanged (line 207) | private void SessionOnPropertyChanged(object? sender, PropertyChangedE...
    method ProjectPropertyChanged (line 219) | private void ProjectPropertyChanged(object? sender, PropertyChangedEve...
    method Equals (line 238) | protected bool Equals(Project other)
    method Equals (line 243) | public override bool Equals(object? obj)
    method GetHashCode (line 251) | public override int GetHashCode()
  type IProjectWithSession (line 266) | public interface IProjectWithSession {
  type IProjectSession (line 271) | public interface IProjectSession : INotifyPropertyChanged
  class ProjectSession (line 286) | public class ProjectSession : IProjectSession
    method ProjectSession (line 313) | public ProjectSession(IProjectWithSession project, string projectFileN...

FILE: Diz.Core/model/ProjectFactory.cs
  type IProjectFactory (line 6) | public interface IProjectFactory
    method Create (line 8) | public IProject Create();
  class ProjectFactory (line 11) | public class ProjectFactory : IProjectFactory
    method ProjectFactory (line 15) | public ProjectFactory(IDataFactory dataFactory)
    method Create (line 20) | public IProject Create() =>
  type IProjectImporter (line 27) | public interface IProjectImporter
    method CreateProjectFromDefaultSettings (line 37) | IProject CreateProjectFromDefaultSettings(string romFilename);
    method CreateProjectFromSettings (line 47) | IProject CreateProjectFromSettings(IRomImportSettings importSettings);
  type IProjectImportDefaultSettingsFactory (line 50) | public interface IProjectImportDefaultSettingsFactory : IProjectImportSe...
  class ProjectImporter (line 55) | public class ProjectImporter : IProjectImporter
    method ProjectImporter (line 60) | public ProjectImporter(
    method CreateProjectFromDefaultSettings (line 68) | public IProject CreateProjectFromDefaultSettings(string romFilename)
    method CreateProjectFromSettings (line 74) | public IProject CreateProjectFromSettings(IRomImportSettings importSet...

FILE: Diz.Core/model/ProjectImportSettingsFactory.cs
  type IProjectImportSettingsFactory (line 5) | public interface IProjectImportSettingsFactory
    method Create (line 7) | IRomImportSettings Create(string romFilename = null);
  class ProjectImportSettingsFactory (line 11) | public class ProjectImportSettingsFactory : IProjectImportSettingsFactory
    method Create (line 13) | public IRomImportSettings Create(string romFilename = null) =>

FILE: Diz.Core/model/ROMByte.cs
  class RomByteData (line 12) | public class RomByteData : INotifyPropertyChangedExt
    method SetCachedOffset (line 77) | public void SetCachedOffset(int offset)
    method Equals (line 87) | private bool Equals(RomByte other)
    method EqualsButNoRomByte (line 92) | public bool EqualsButNoRomByte(RomByte other)
    method Equals (line 97) | public override bool Equals(object? obj)
    method GetHashCode (line 104) | public override int GetHashCode()
    method OnPropertyChanged (line 122) | public void OnPropertyChanged(string propertyName)
  class RomByte (line 128) | public class RomByte : RomByteData, IRomByte
    method EqualsButNoRomByte (line 134) | bool IRomByte.EqualsButNoRomByte(IRomByte other)

FILE: Diz.Core/model/RomBytes.cs
  class RomBytes (line 13) | public class RomBytes : IRomBytes<RomByte>
    method RomBytes (line 45) | public RomBytes()
    method SetFrom (line 50) | public void SetFrom(RomByte[] romBytes)
    method SetBytesFrom (line 59) | public void SetBytesFrom(IReadOnlyList<byte> copyFrom, int dstStarting...
    method Add (line 68) | public void Add(RomByte romByte)
    method Create (line 74) | public void Create(int size)
    method Clear (line 79) | public void Clear()
    method Equals (line 85) | protected bool Equals(RomBytes other)
    method Equals (line 90) | public override bool Equals(object obj)
    method GetHashCode (line 98) | public override int GetHashCode()
    method GetEnumerator (line 105) | public IEnumerator<RomByte> GetEnumerator()
    method GetEnumerator (line 110) | IEnumerator IEnumerable.GetEnumerator()
    method Bytes_CollectionChanged (line 119) | private void Bytes_CollectionChanged(object sender, NotifyCollectionCh...
    method RomByteObjectChanged (line 133) | private void RomByteObjectChanged(object sender, System.ComponentModel...
  class RomBytesExtensions (line 142) | public static class RomBytesExtensions
    method CreateRomBytesFromRom (line 144) | public static void CreateRomBytesFromRom(this RomBytes @this, IEnumera...
    method GetRomBytes (line 163) | public static byte[] GetRomBytes(this IData @this, int pcOffset, int c...
    method CopyRomDataIn (line 172) | public static void CopyRomDataIn(this IRomBytes<IRomByte> @this, IEnum...

FILE: Diz.Core/model/project/DataUtils.cs
  class DataFactory (line 5) | public class DataFactory : IDataFactory
    method Create (line 11) | public Data Create() => new();

FILE: Diz.Core/model/project/LinkedRomBytesFileSearchProvider.cs
  type IReadFromFileBytes (line 10) | public interface IReadFromFileBytes
    method ReadRomFileBytes (line 12) | byte[] ReadRomFileBytes(string filename);
  class ReadFromFileBytes (line 15) | public class ReadFromFileBytes : IReadFromFileBytes
    method ReadRomFileBytes (line 17) | public byte[] ReadRomFileBytes(string filename) =>
  type ILinkedRomBytesProvider (line 24) | public interface ILinkedRomBytesProvider
    method SearchAndReadFromCompatibleRom (line 32) | (string filename, byte[] romBytes)? SearchAndReadFromCompatibleRom(str...
  class LinkedRomBytesFileSearchProvider (line 35) | [UsedImplicitly]
    method LinkedRomBytesFileSearchProvider (line 40) | public LinkedRomBytesFileSearchProvider(IReadFromFileBytes romBytesRea...
    method SearchAndReadFromCompatibleRom (line 48) | public (string filename, byte[] romBytes)? SearchAndReadFromCompatible...
    method GetRomFileContentsIfCompatible (line 68) | private byte[]? GetRomFileContentsIfCompatible(string romFilename, out...
    method GetRomFileBytesOrFailReason (line 88) | private byte[]? GetRomFileBytesOrFailReason(string romFilename, out st...

FILE: Diz.Core/model/snes/Data.cs
  class Data (line 13) | public class Data : IData
    method Data (line 81) | public Data()
    method GetRomSize (line 88) | public int GetRomSize() =>
    method GetArchitecture (line 91) | public Architecture GetArchitecture(int i) => RomBytes[i].Arch;
    method SetArchitecture (line 92) | public void SetArchitecture(int i, Architecture arch) => RomBytes[i].A...
    method GetComment (line 94) | [CanBeNull]
    method GetCommentText (line 98) | public string GetCommentText(int snesAddress)
    method AddComment (line 111) | public void AddComment(int i, string v, bool overwrite)
    method GetRomByte (line 126) | public byte? GetRomByte(int pcOffset)
    method GetSnesByte (line 131) | public byte? GetSnesByte(int snesAddress)
    method GetRomWord (line 136) | public int? GetRomWord(int offset)
    method GetRomLong (line 149) | public int? GetRomLong(int offset)
    method GetRomDoubleWord (line 162) | public int? GetRomDoubleWord(int offset)
    method ConvertPCtoSnes (line 175) | public int ConvertPCtoSnes(int offset)
    method ConvertSnesToPc (line 180) | public int ConvertSnesToPc(int address)
    method Mark (line 185) | public int Mark(Action<int> markAction, int offset, int count)
    method GetFileBytes (line 198) | public IEnumerable<byte> GetFileBytes() =>
    method Equals (line 203) | protected bool Equals(Data other)
    method Equals (line 209) | public override bool Equals(object obj)
    method GetHashCode (line 216) | public override int GetHashCode()
    method CreateNewRegion (line 234) | [CanBeNull] public IRegion CreateNewRegion() => new Region();
    method GetRegion (line 235) | [CanBeNull]  public IRegion GetRegion(int snesAddress)
  class Region (line 246) | public class Region : IRegion

FILE: Diz.Core/model/snes/DataTags.cs
  class SampleDataGenerationTag (line 5) | public class SampleDataGenerationTag : IDataTag

FILE: Diz.Core/serialization/FileByteProviderMultipleFiles.cs
  class FileByteProviderMultipleFiles (line 11) | public class FileByteProviderMultipleFiles : IFileByteProvider
    method ReadAllBytes (line 13) | public byte[] ReadAllBytes(string filename)
    method ReadMultipleSaveFiles (line 24) | private static byte[] ReadMultipleSaveFiles(string filename)
    method WriteBytes (line 65) | public void WriteBytes(string filename, byte[] data)
  class FileSplitWriter (line 94) | public class FileSplitWriter
    method FileSplitWriter (line 101) | public FileSplitWriter(string outputDir)
    method OutputSplitFiles (line 106) | public void OutputSplitFiles(string content)
    method SanitizeFileChars (line 173) | private static string SanitizeFileChars(string nextToken) =>
    method SwitchToNewOutputFile (line 176) | private void SwitchToNewOutputFile(string filePostfix = "")
    method CreateFullFilename (line 189) | private string CreateFullFilename(string filePostfix)

FILE: Diz.Core/serialization/FileByteProviderSingleFile.cs
  class FileByteProviderSingleFile (line 6) | public class FileByteProviderSingleFile : IFileByteProvider
    method ReadAllBytes (line 8) | public byte[] ReadAllBytes(string filename) =>
    method WriteBytes (line 11) | public void WriteBytes(string filename, byte[] data) =>

FILE: Diz.Core/serialization/ImportSettings.cs
  type IRomImportSettings (line 9) | public interface IRomImportSettings : INotifyPropertyChanged
  class ImportRomSettings (line 20) | public class ImportRomSettings : IRomImportSettings

FILE: Diz.Core/serialization/ProjectFileManager.cs
  type IProjectSerializer (line 16) | public interface IProjectSerializer
    method Load (line 18) | ProjectOpenResult Load(byte[] rawBytes);
    method Save (line 19) | byte[] Save(Project project);
  type IProjectXmlSerializer (line 23) | public interface IProjectXmlSerializer : IProjectSerializer
  type IAddRomDataCommand (line 30) | public interface IAddRomDataCommand
    method TryReadAttachedProjectRom (line 37) | public void TryReadAttachedProjectRom();
  type IFileByteReader (line 40) | public interface IFileByteReader
    method ReadAllBytes (line 42) | byte[] ReadAllBytes(string filename);
  type IFileByteWriter (line 45) | public interface IFileByteWriter
    method WriteBytes (line 47) | void WriteBytes(string filename, byte[] data);
  type IFileByteProvider (line 50) | public interface IFileByteProvider : IFileByteReader, IFileByteWriter;
  type IProjectFileUserPrefs (line 52) | public interface IProjectFileUserPrefs
    method LoadUserPreferences (line 54) | void LoadUserPreferences(string projectFilename, Project project);
    method SaveUserPreferences (line 55) | void SaveUserPreferences(string projectFilename, ProjectUserSettings p...
  class ProjectFileUserPrefs (line 58) | class ProjectFileUserPrefs : IProjectFileUserPrefs
    method LoadUserPreferences (line 60) | public void LoadUserPreferences(string projectFilename, Project project)
    method SaveUserPreferences (line 77) | public void SaveUserPreferences(string projectFilename, ProjectUserSet...
    method LoadUserPrefsXmlStrFromFile (line 93) | private static string LoadUserPrefsXmlStrFromFile(string filename) =>
    method BuildUserPrefsFilenameFromProjectName (line 96) | private static string BuildUserPrefsFilenameFromProjectName(string pro...
    method GetUserPrefsXmlSerializerConfigContainer (line 102) | private static IConfigurationContainer GetUserPrefsXmlSerializerConfig...
  class StubProjectFileUserPrefs (line 109) | public class StubProjectFileUserPrefs : IProjectFileUserPrefs {
    method LoadUserPreferences (line 110) | public void LoadUserPreferences(string projectFilename, Project projec...
    method SaveUserPreferences (line 111) | public void SaveUserPreferences(string projectFilename, ProjectUserSet...
  class ProjectFileManager (line 115) | public class ProjectFileManager(
    method Open (line 124) | public ProjectOpenResult Open(string filename)
    method OnPostProjectDeserialized (line 136) | private void OnPostProjectDeserialized(string filename, ProjectXmlSeri...
    method VerifyIntegrityDeserialized (line 163) | private static void VerifyIntegrityDeserialized(ProjectXmlSerializer.R...
    method Deserialize (line 170) | private (IProjectSerializer serializer, ProjectOpenResult projectOpenR...
    method ReadProjectFileBytes (line 178) | private byte[]? ReadProjectFileBytes(string filename)
    method IsDirectoryBasedProject (line 190) | private static bool IsDirectoryBasedProject(string filename) =>
    method CreateFileBytesProvider (line 193) | private IFileByteProvider CreateFileBytesProvider(string filename)
    method IsBinaryFileFormat (line 199) | public static bool IsBinaryFileFormat(byte[]? data)
    method GetSerializerForFormat (line 211) | private IProjectSerializer GetSerializerForFormat(byte[]? data)
    method IsLikelyCompressed (line 231) | private static bool IsLikelyCompressed(string filename) =>
    method Save (line 234) | public string? Save(Project project, string filename)
    method Save (line 250) | private void Save(Project project, string filename, IProjectSerializer...
    method DoSave (line 277) | private byte[]? DoSave(Project project, string filename, IProjectSeria...
    method DeserializeWith (line 288) | protected virtual ProjectOpenResult DeserializeWith(IProjectSerializer...
    method SerializeWith (line 291) | protected virtual byte[] SerializeWith(Project project, IProjectSerial...
  type IProjectFileManager (line 297) | public interface IProjectFileManager
    method Open (line 310) | ProjectOpenResult Open(string filename);
    method Save (line 318) | string? Save(Project project, string filename);

FILE: Diz.Core/serialization/ProjectSerializer.cs
  class ProjectSerializer (line 8) | public abstract class ProjectSerializer
    method ProjectSerializer (line 10) | protected ProjectSerializer(IMigrationRunner migrationRunner)
    method Save (line 17) | public abstract byte[] Save(Project project);
    method Load (line 18) | public abstract ProjectOpenResult Load(byte[] rawBytes);
    method SaveToFile (line 20) | public void SaveToFile(Project project, string filename)
    method LoadFromFile (line 25) | public ProjectOpenResult LoadFromFile(string filename)
    method DebugVerifyProjectEquality (line 30) | protected static void DebugVerifyProjectEquality(Project project1, Pro...

FILE: Diz.Core/serialization/binary_serializer_old/BinarySerializer.cs
  class BinarySerializer (line 21) | internal class BinarySerializer : ProjectSerializer
    method Save (line 26) | public override byte[] Save(Project project)
    method Load (line 39) | public override (ProjectXmlSerializer.Root xmlRoot, string warning) Lo...
    method LoadProject (line 55) | private (Project project, string warning, byte version) LoadProject(by...
    method SaveStringToBytes (line 140) | private static void SaveStringToBytes(string str, ICollection<byte> by...
    method VoidTheWarranty (line 152) | private void VoidTheWarranty()
    method SaveVersion (line 160) | [SuppressMessage("ReSharper", "UnusedParameter.Local")]
    method ValidateSaveVersion (line 260) | private static void ValidateSaveVersion(int version) {
    method ValidateProjectFileVersion (line 267) | private static void ValidateProjectFileVersion(int version)
    method ReadComments (line 281) | private void ReadComments(Project project, byte[] bytes, ref int point...
    method ReadLabels (line 292) | private void ReadLabels(Project project, byte[] bytes, ref int pointer...

FILE: Diz.Core/serialization/xml_serializer/MigrationRunner.cs
  class MigrationRunner (line 10) | public class MigrationRunner : IMigrationRunner
    method MigrationRunner (line 25) | public MigrationRunner(IEnumerable<IMigration> migrations) : this()
    method MigrationRunner (line 31) | public MigrationRunner()
    method PreMigrationChecks (line 35) | private void PreMigrationChecks()
    method RunAllMigrations (line 58) | private void RunAllMigrations(Action<IMigration> applyAction)
    method FinalChecks (line 81) | private void FinalChecks(int finalVersionReached)
    method ValidateVersionForNext (line 90) | private bool ValidateVersionForNext(int proposedVersion, int currentVe...
    method EnsureVersionIsSameOrNext (line 104) | private static bool EnsureVersionIsSameOrNext(int proposedVersion, int...
    method OnLoadingBeforeAddLinkedRom (line 108) | public void OnLoadingBeforeAddLinkedRom(IAddRomDataCommand romAddCmd)
    method OnLoadingAfterAddLinkedRom (line 113) | public void OnLoadingAfterAddLinkedRom(IAddRomDataCommand romAddCmd)
  class DizMigrationException (line 120) | public class DizMigrationException : Exception
    method DizMigrationException (line 122) | public DizMigrationException([CanBeNull] string message, [CanBeNull] E...
    method DizMigrationException (line 126) | public DizMigrationException([CanBeNull] string message) : base(message)

FILE: Diz.Core/serialization/xml_serializer/PostSerializeMigrations.cs
  type IMigrationEvents (line 5) | public interface IMigrationEvents
    method OnLoadingBeforeAddLinkedRom (line 10) | void OnLoadingBeforeAddLinkedRom(IAddRomDataCommand romAddCmd) { }
    method OnLoadingAfterAddLinkedRom (line 11) | void OnLoadingAfterAddLinkedRom(IAddRomDataCommand romAddCmd) { }
  type IMigration (line 14) | public interface IMigration : IMigrationEvents
  type IMigrationRunner (line 21) | public interface IMigrationRunner : IMigrationEvents

FILE: Diz.Core/serialization/xml_serializer/ProjectXMLSerializer.cs
  class ProjectOpenResult (line 15) | public class ProjectOpenResult
    class Result (line 17) | public class Result
  class ProjectXmlSerializer (line 46) | public class ProjectXmlSerializer : ProjectSerializer, IProjectXmlSerial...
    class Root (line 84) | public class Root
    method ProjectXmlSerializer (line 103) | public ProjectXmlSerializer(IXmlSerializerFactory xmlSerializerFactory...
    method Save (line 111) | public override byte[] Save(Project project)
    method GetSerializerConfig (line 136) | private IConfigurationContainer GetSerializerConfig(
    method Load (line 141) | public override ProjectOpenResult Load(byte[] projectFileRawXmlBytes)
    method DeserializeProjectXml (line 179) | private Root DeserializeProjectXml(string xmlStr) =>
    method RunPreDeserializeIntegrityChecks (line 183) | private int RunPreDeserializeIntegrityChecks(string rawXml)
    method RunIntegrityChecks (line 204) | private void RunIntegrityChecks(int saveVersion, string watermark)

FILE: Diz.Core/serialization/xml_serializer/RepeaterCompression.cs
  class RepeaterCompression (line 8) | public static class RepeaterCompression
    method Decompress (line 10) | public static void Decompress(ref List<string> lines)
    method Compress (line 36) | public static void Compress(ref List<string> lines)

FILE: Diz.Core/serialization/xml_serializer/RomByteEncoding.cs
  class RomByteEncoding (line 14) | public class RomByteEncoding
    method DecodeRomByte (line 43) | public RomByte DecodeRomByte(string line)
    method PrepLine (line 81) | private StringBuilder PrepLine(string line)
    method EncodeByte (line 106) | public static string EncodeByte(RomByte instance)

FILE: Diz.Core/serialization/xml_serializer/RomBytesXMLSerializer.cs
  class RomBytesOutputFormatSettings (line 31) | [TypeConverter(typeof(ExpandableObjectConverter))]
    method ToString (line 105) | public override string ToString() => "";
  class RomBytesSerializer (line 109) | sealed class RomBytesSerializer : ISerializer<RomBytes>
    method Get (line 131) | public RomBytes Get(IFormatReader parameter)
    method DecodeAllBytes (line 138) | private RomByte[] DecodeAllBytes(IReadOnlyList<string> allLines)
    method CreateDecodeRomBytesTask (line 163) | private static Task<RomByte[]> CreateDecodeRomBytesTask(IReadOnlyList<...
    method DecodeRomBytes (line 169) | private static RomByte[] DecodeRomBytes(IReadOnlyList<string> allLines...
    method FinishRead (line 194) | private static RomBytes FinishRead(RomByte[] romBytes)
    method ReadMainDataRaw (line 201) | private static List<string> ReadMainDataRaw(string allLines)
    method ReadHeader (line 225) | private static (List<string> lines, List<string> options) ReadHeader(s...
    method CheckForCompatibleVersion (line 236) | private static void CheckForCompatibleVersion(IEnumerable<string> opti...
    method ParseVersionNumFromOptions (line 295) | private static int ParseVersionNumFromOptions(IEnumerable<string> opti...
    method Write (line 313) | public void Write(IFormatWriter writer, RomBytes instance)
    method PostProcessOutputData (line 364) | private void PostProcessOutputData(ICollection<string> options, ref Li...

FILE: Diz.Core/serialization/xml_serializer/SubstitutionCompression.cs
  class SubstitutionCompression (line 7) | public static class SubstitutionCompression
    class CompressionEntry (line 9) | private class CompressionEntry
    method DecodeCompression_Table1 (line 29) | public static void DecodeCompression_Table1(ref List<string> lines)
    method EncodeCompression_Table1 (line 42) | public static void EncodeCompression_Table1(ref List<string> lines)

FILE: Diz.Core/serialization/xml_serializer/XMLSerializerSupport.cs
  type IXmlSerializerFactory (line 6) | public interface IXmlSerializerFactory
    method GetSerializer (line 8) | public IConfigurationContainer GetSerializer(RomBytesOutputFormatSetti...

FILE: Diz.Core/serialization/xml_serializer/XmlSerializerFactory.cs
  class InvalidCharStrippingConverter (line 17) | public class InvalidCharStrippingConverter : IConverter<string>
    method Parse (line 19) | public string Parse(string data) => data;
    method Format (line 21) | public string Format(string instance)
    method IsValidXmlChar (line 36) | private static bool IsValidXmlChar(char c)
    method IsSatisfiedBy (line 45) | public bool IsSatisfiedBy(TypeInfo parameter)
  class XmlSerializerFactory (line 51) | public class XmlSerializerFactory(
    method GetSerializer (line 56) | public IConfigurationContainer GetSerializer([CanBeNull] RomBytesOutpu...
    class SerializationMonitor (line 104) | private class SerializationMonitor : ISerializationMonitor
      method OnSerializing (line 106) | public void OnSerializing(IFormatWriter writer, object instance)
      method OnSerialized (line 111) | public void OnSerialized(IFormatWriter writer, object instance)
      method OnDeserializing (line 116) | public void OnDeserializing(IFormatReader reader, Type instanceType)
      method OnActivating (line 121) | public void OnActivating(IFormatReader reader, Type instanceType)
      method OnActivated (line 126) | public void OnActivated(object instance)
      method OnDeserialized (line 131) | public void OnDeserialized(IFormatReader reader, object instance)
    class GenericInterceptor (line 137) | public abstract class GenericInterceptor<T> : ISerializationIntercepto...
      method Serializing (line 139) | public virtual T Serializing(IFormatWriter writer, T instance) => in...
      method Deserialized (line 140) | public virtual T Deserialized(IFormatReader reader, T instance) => i...
      method Activating (line 141) | public abstract T Activating(Type instanceType);
    class AnnotationLabelInterceptor (line 151) | public sealed class AnnotationLabelInterceptor : GenericInterceptor<IA...
      method Activating (line 157) | public override IAnnotationLabel Activating(Type instanceType) => ne...
    class SnesDataInterceptor (line 160) | public sealed class SnesDataInterceptor : GenericInterceptor<Data>
      method SnesDataInterceptor (line 163) | public SnesDataInterceptor(IDataFactory dataFactory)
      method Activating (line 169) | public override Data Activating(Type instanceType) =>

FILE: Diz.Core/services/CoreServices.cs
  class DizCoreServicesDllRegistration (line 14) | public static class DizCoreServicesDllRegistration
    method RegisterServicesInDizDlls (line 16) | public static void RegisterServicesInDizDlls(IServiceRegistry serviceR...
  class DizCoreServicesCompositionRoot (line 22) | [UsedImplicitly]
    method Compose (line 25) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.Core/util/ByteUtil.cs
  class ByteUtil (line 11) | public static class ByteUtil
    method TryParseNum_Stripped (line 21) | public static bool TryParseNum_Stripped(ref string addressTxt, NumberS...
    method ReadStringsTable (line 51) | public static int ReadStringsTable(byte[] bytes, int startingIndex, in...
    method ReadNullTerminatedString (line 76) | public static int ReadNullTerminatedString(byte[] bytes, int startingO...
    method IntegerToByteArray (line 86) | public static byte[] IntegerToByteArray(uint val)
    method IntegerIntoByteArray (line 97) | public static void IntegerIntoByteArray(uint src, IList<byte> dst, int...
    method AppendIntegerToByteList (line 104) | public static void AppendIntegerToByteList(uint src, IList<byte> dst)
    method ConvertByteArrayToUInt32 (line 111) | public static uint ConvertByteArrayToUInt32(IReadOnlyList<byte> src, i...
    method ConvertByteArrayToInt32 (line 120) | public static int ConvertByteArrayToInt32(IReadOnlyList<byte> src, int...
    method ByteArrayToInt24 (line 129) | public static int ByteArrayToInt24(IReadOnlyList<byte> src, int srcSta...
    method ByteArrayToInt16 (line 137) | public static int ByteArrayToInt16(IReadOnlyList<byte> src, int srcSta...
    method StringToNullTermByteArray (line 144) | public static byte[] StringToNullTermByteArray(string src)
    method ByteParseHex1 (line 177) | public static byte ByteParseHex1(char hexChar)
    method ByteParseHex2 (line 187) | public static byte ByteParseHex2(char hexChar1, char hexChar2)
    method ByteParseHex4 (line 193) | public static uint ByteParseHex4(char hexChar1, char hexChar2, char he...
    method ByteParseHex (line 202) | public static uint ByteParseHex(string str)
    method ByteParseHex (line 212) | public static uint ByteParseHex(string str, int strStartIndex, int num...
    method ReadShiftJisEncodedString (line 252) | public static string ReadShiftJisEncodedString(IReadOnlyList<byte> buf...
    method ConvertUtf8ToShiftJisEncodedBytes (line 255) | public static byte[] ConvertUtf8ToShiftJisEncodedBytes(string str) =>
    method GetRawShiftJisBytesFromStr (line 258) | public static byte[] GetRawShiftJisBytesFromStr(string inputStr)
    method PadCartridgeTitleBytes (line 267) | public static byte[] PadCartridgeTitleBytes(byte[] srcBytes) =>
    method PadBytes (line 270) | private static byte[] PadBytes(IEnumerable<byte> srcBytes, int numPadB...
    method ReadStringFromByteArray (line 275) | public static string ReadStringFromByteArray(IReadOnlyList<byte> bytes...

FILE: Diz.Core/util/ChecksumUtil.cs
  class ChecksumUtil (line 10) | public static class ChecksumUtil
    method ComputeChecksumFromRom (line 14) | public static uint ComputeChecksumFromRom(IList<byte> romdata) =>
    method IsRomChecksumValid (line 16) | public static bool IsRomChecksumValid(IList<byte> romdata, RomMapMode ...
    method UpdateRomChecksum (line 18) | public static void UpdateRomChecksum(IList<byte> romdata, RomMapMode m...
    class AsarChecksumUtil (line 27) | private static class AsarChecksumUtil
      method getchecksum (line 31) | [SuppressMessage("ReSharper", "SuggestVarOrType_BuiltInTypes")]
      method goodchecksum (line 58) | internal static bool goodchecksum(IList<byte> romdata, RomMapMode mo...
      method fixchecksum (line 69) | internal static void fixchecksum(IList<byte> romdata, RomMapMode mod...
      method bitround (line 82) | private static uint bitround(uint x)
    method writeromdata_byte (line 93) | private static void writeromdata_byte(this IList<byte> @this, int pcOf...
    method writeromdata (line 96) | private static void writeromdata(this IList<byte> @this, int pcOffset,...

FILE: Diz.Core/util/CorrectingRange.cs
  class CorrectingRange (line 8) | public class CorrectingRange : IDataRange
    method CorrectingRange (line 15) | public CorrectingRange(int maxCount)
    method ManualUpdate (line 51) | public void ManualUpdate(int newStartIndex, int newRangeCount)
    method OnStartIndexChanged (line 58) | private void OnStartIndexChanged() => UpdateRangeCountToBounds();
    method OnRangeCountChanged (line 59) | private void OnRangeCountChanged() => UpdateStartIndexToBounds();
    method UpdateRangeCountToBounds (line 61) | private void UpdateRangeCountToBounds() => rangeCount = ClampCount(ran...
    method UpdateStartIndexToBounds (line 62) | private void UpdateStartIndexToBounds() => rangeStartIndex = ClampInde...
    method ClampCount (line 64) | private int ClampCount(int count)
    method IsValidIndex (line 76) | private bool IsValidIndex(int index) =>
    method ClampIndex (line 79) | private int ClampIndex(int index)
    method AssertValid (line 88) | [Conditional("DEBUG")]

FILE: Diz.Core/util/Fake64Encoding.cs
  class Fake64Encoding (line 16) | public static class Fake64Encoding
    method DecodeHackyBase64 (line 18) | public static byte DecodeHackyBase64(char input)
    method EncodeHackyBase64 (line 23) | public static char EncodeHackyBase64(byte input)

FILE: Diz.Core/util/FsUtils.cs
  type IFilesystemService (line 7) | public interface IFilesystemService
    method DirectoryExists (line 9) | bool DirectoryExists(string? outputDirectoryName);
    method CreateDirectory (line 10) | void CreateDirectory(string name);
  class FilesystemService (line 17) | public class FilesystemService : IFilesystemService
    method DirectoryExists (line 19) | public virtual bool DirectoryExists(string? outputDirectoryName) =>
    method CreateDirectory (line 22) | public virtual void CreateDirectory(string name) =>

FILE: Diz.Core/util/LabelSearchTerms.cs
  class LabelSearchTerms (line 9) | public class LabelSearchTerms
    class AddressComparison (line 14) | private class AddressComparison
      type ComparisonType (line 16) | public enum ComparisonType
    method LabelSearchTerms (line 28) | public LabelSearchTerms(string searchInput)
    method TryParseSpecialTerm (line 48) | private bool TryParseSpecialTerm(string term)
    method TryParseAddressComparison (line 69) | private AddressComparison? TryParseAddressComparison(string term)
    method TryParseHexAddress (line 116) | private static int? TryParseHexAddress(string addressString)
    method DoesLabelMatch (line 132) | public bool DoesLabelMatch(int snesAddress, IAnnotationLabel label)

FILE: Diz.Core/util/ParentAwareCollection.cs
  type IParentAware (line 7) | public interface IParentAware<in TParent>
    method OnParentChanged (line 9) | public void OnParentChanged(TParent parent);
  class ParentAwareCollection (line 12) | public class ParentAwareCollection<TParent, TItem> : Collection<TItem>
    method SetItemParent (line 32) | private void SetItemParent(TItem item, TParent newParent)
    method SetAllItemParentsTo (line 40) | private void SetAllItemParentsTo(TParent newParent)
    method ClearItems (line 48) | protected override void ClearItems()
    method InsertItem (line 54) | protected override void InsertItem(int index, TItem item)
    method RemoveItem (line 60) | protected override void RemoveItem(int index)
    method SetItem (line 67) | protected override void SetItem(int index, TItem item)

FILE: Diz.Core/util/Profiler.cs
  class ProfilerDotTrace (line 20) | public static class ProfilerDotTrace
    class CaptureSnapshot (line 22) | public class CaptureSnapshot : IDisposable
      method CaptureSnapshot (line 25) | public CaptureSnapshot(bool shouldSkip = false)
      method ReleaseUnmanagedResources (line 32) | private void ReleaseUnmanagedResources()
      method Dispose (line 38) | public void Dispose()
    method Init (line 77) | private static bool Init()
    method BeginSnapshot (line 96) | public static void BeginSnapshot()
    method EndSnapshot (line 108) | public static void EndSnapshot()
    method Shutdown (line 120) | public static void Shutdown()

FILE: Diz.Core/util/RomUtil.cs
  class RomUtil (line 9) | public static class RomUtil
    method CalculateSnesOffsetWithWrap (line 16) | public static int CalculateSnesOffsetWithWrap(int snesAddress, int off...
    method GetBankFromSnesAddress (line 21) | public static int GetBankFromSnesAddress(int snesAddress)
    method GetBankSize (line 26) | public static int GetBankSize(RomMapMode mode)
    method GetRomSpeed (line 32) | public static RomSpeed GetRomSpeed(RomMapMode mode, IReadOnlyList<byte...
    method GetRomSpeed (line 35) | public static RomSpeed GetRomSpeed(int offset, IReadOnlyList<byte> rom...
    method GetCartridgeTitleFromRom (line 47) | public static string GetCartridgeTitleFromRom(IReadOnlyList<byte> allR...
    method GetCartridgeTitleStartingRomOffset (line 51) | public static int GetCartridgeTitleStartingRomOffset(int romSettingOff...
    method GetCartridgeTitleFromBuffer (line 60) | public static string GetCartridgeTitleFromBuffer(IReadOnlyList<byte> b...
    method ConvertSnesToPc (line 63) | public static int ConvertSnesToPc(int address, RomMapMode mode, int size)
    method ConvertSnesToPcRaw (line 69) | private static int ConvertSnesToPcRaw(int address, RomMapMode mode, in...
    method ConvertPCtoSnes (line 151) | public static int ConvertPCtoSnes(int offset, RomMapMode romMapMode, R...
    method UnmirroredOffset (line 180) | public static int UnmirroredOffset(int offset, int size)
    method TypeToLabel (line 203) | public static string TypeToLabel(FlagType flag)
    method GetByteLengthForFlag (line 225) | public static int GetByteLengthForFlag(FlagType flag)
    method DetectRomMapMode (line 251) | public static RomMapMode DetectRomMapMode(IReadOnlyList<byte> romBytes...
    method DetectRomMapModeBustedGames (line 286) | public static bool DetectRomMapModeBustedGames(IReadOnlyList<byte> rom...
    method GetRomSettingOffset (line 312) | public static int GetRomSettingOffset(RomMapMode mode)
    method PointToString (line 324) | public static string PointToString(InOutPoint point)
    method BoolToSize (line 338) | public static string BoolToSize(bool b)
    method ReadStringFromByteArray (line 344) | public static string ReadStringFromByteArray(byte[] bytes, int count, ...
    method ReadRomFileBytes (line 359) | [NotNull]
    method RemoveSmcHeader (line 369) | private static byte[] RemoveSmcHeader(byte[] allFileBytes)
    method GenerateHeaderFlags (line 385) | public static Dictionary<int, FlagType> GenerateHeaderFlags(int romSet...
    method CreateRomMappingFromRomByteSource (line 430) | public static ByteSourceMapping CreateRomMappingFromRomByteSource(Byte...
    method CreateRomMappingFromRomRawBytes (line 443) | public static ByteSourceMapping CreateRomMappingFromRomRawBytes(
    method CreateSnesAddressSpace (line 457) | public static ByteSource CreateSnesAddressSpace()
    method IsLocationPoint (line 468) | public static bool IsLocationPoint(this IInOutPointGettable data, int ...
    method IsLocationAnEndPoint (line 471) | public static bool IsLocationAnEndPoint(this IInOutPointGettable data,...
    method IsLocationAReadPoint (line 474) | public static bool IsLocationAReadPoint(this IInOutPointGettable data,...
    method GetSnesAddressFromWramAddress (line 479) | public static int GetSnesAddressFromWramAddress(int wramAddress)
    method GetWramAddressFromSnesAddress (line 492) | public static int GetWramAddressFromSnesAddress(int snesAddress)
    method AreLabelsSameMirror (line 524) | public static bool AreLabelsSameMirror(int snesAddress, int labelAddress)
    method NormalizeSnesWramAddress (line 552) | public static int NormalizeSnesWramAddress(int snesAddress)
    method AreSnesAddressesSameMirroredIoRegion (line 558) | public static bool AreSnesAddressesSameMirroredIoRegion(int snesAddres...
    method GetUnmirroredIoRegionFromBank (line 566) | public static int GetUnmirroredIoRegionFromBank(int snesAddress)
    method AreSnesAddressesSameMirroredWramAddresses (line 588) | public static bool AreSnesAddressesSameMirroredWramAddresses(int snesA...
    method IsValidPlusMinusLabel (line 597) | public static bool IsValidPlusMinusLabel(string label)
    method ConvertNumToHexStr (line 615) | public static string ConvertNumToHexStr(int num, int numByteDigitsToDi...

FILE: Diz.Core/util/ServiceProvider.cs
  class DizServiceProvider (line 5) | public static class DizServiceProvider
    method CreateServiceContainer (line 11) | public static IServiceContainer CreateServiceContainer()

FILE: Diz.Core/util/Util.cs
  class Util (line 20) | public static class Util
    method RemoveAll (line 22) | public static void RemoveAll<TItem>(this ICollection<TItem> collection...
    method AddRange (line 33) | public static void AddRange<TItem>(this ICollection<TItem> collection,...
    method GetRelativePath (line 40) | public static string GetRelativePath(string fileSpec, string? folder)
    method TryGetRelativePath (line 52) | public static string TryGetRelativePath(string fileSpec, string? folde...
    method GetDirNameOrEmpty (line 67) | public static string? GetDirNameOrEmpty(string path) =>
    type NumberBase (line 70) | public enum NumberBase
    method NumberToBaseString (line 75) | public static string NumberToBaseString(int v, NumberBase noBase, int ...
    method ToHexString6 (line 99) | public static string ToHexString6(int i)
    method ParseHexOrBase10String (line 104) | public static int ParseHexOrBase10String(string data)
    method ReadLines (line 129) | public static IEnumerable<string> ReadLines(string path)
    method GetFileSizeInBytes (line 140) | public static long GetFileSizeInBytes(string filename)
    method TryUnzip (line 150) | public static byte[]? TryUnzip(byte[] data)
    method TryZip (line 166) | public static byte[]? TryZip(byte[] data)
    method ReadNext (line 182) | public static byte[] ReadNext(Stream stream, int count, out int bytesR...
    method ReadNext (line 189) | public static int ReadNext(Stream stream, byte[] buffer, int count)
    method DoReadNext (line 195) | private static int DoReadNext(Stream stream, byte[] buffer, int count,...
    method GetEnumDescription (line 216) | public static string GetEnumDescription(Enum value)
    method GetEnumAttribute (line 229) | public static TResult? GetEnumAttribute<TAttribute, TResult>(object va...
    method GetFieldAttribute (line 234) | public static TResult? GetFieldAttribute<TAttribute, TResult>(Func<TAt...
    method GetPropertyAttribute (line 245) | public static TResult? GetPropertyAttribute<TAttribute, TResult>(Func<...
    method GetEnumDescriptions (line 258) | public static List<KeyValuePair<TEnum, string>> GetEnumDescriptions<TE...
    method GetEnumColorDescriptions (line 264) | public static List<KeyValuePair<TEnum, Color>> GetEnumColorDescription...
    method GetEnumColor (line 269) | private static Color GetEnumColor(Enum value)
    method GetEnumInfo (line 287) | public static List<KeyValuePair<TEnum, TType>> GetEnumInfo<TEnum, TTyp...
    method GetColorFromFlag (line 302) | public static Color GetColorFromFlag(FlagType romFlag)
    method RunCommandGetOutput (line 313) | public static (string stdout, string stderr) RunCommandGetOutput(strin...
    method OpenExternalProcess (line 339) | public static void OpenExternalProcess(string args)
    method ClampIndex (line 347) | public static int ClampIndex(int index, int size) => Clamp(index, 0, s...
    method Clamp (line 350) | public static int Clamp(int i, int min, int max)
    method IsBetween (line 362) | public static bool IsBetween(int i, int max) => i >= 0 && i <= max;
    method IsBetween (line 363) | public static bool IsBetween(int i, int min, int max) => i >= min && i...
    method SplitOnFirstComma (line 365) | public static void SplitOnFirstComma(string instr, out string firstPar...
    method LeftAlign (line 378) | public static string LeftAlign(int length, string str) => string.Forma...
    method GetLeftAlignFormatStr (line 380) | public static string GetLeftAlignFormatStr(int length) => $"{{0,{-leng...
    method ReadManifestData (line 382) | public static string ReadManifestData(Assembly assembly, string resour...
    method BothListsNullOrContainNoItems (line 397) | public static bool BothListsNullOrContainNoItems<T>(ICollection<T> c1,...
    method CollectionsBothEmptyOrEqual (line 408) | public static bool CollectionsBothEmptyOrEqual<T>(ICollection<T> c1, I...
    method ChopExtraZeroesFromHexStr (line 422) | public static string ChopExtraZeroesFromHexStr(string hexString)
  type INotifyPropertyChangedExt (line 441) | public interface INotifyPropertyChangedExt : INotifyPropertyChanged
    method OnPropertyChanged (line 444) | void OnPropertyChanged(string propertyName);
  class NotifyPropertyChangedExtensions (line 447) | public static class NotifyPropertyChangedExtensions
    method SetField (line 453) | public static bool SetField<T>(this INotifyPropertyChanged sender, [Ca...
    method SetField (line 468) | public static bool SetField<T>(this INotifyPropertyChangedExt sender, ...
    method FieldIsEqual (line 483) | public static bool FieldIsEqual<T>(T field, T value, bool compareRefOn...
  class ContentUtils (line 499) | public static class ContentUtils
    method SingleOrDefaultOfType (line 501) | public static object? SingleOrDefaultOfType<T>(this IEnumerable<T?> en...
    method SingleOrDefaultOfType (line 506) | public static TDesired? SingleOrDefaultOfType<TDesired, T>(this IEnume...

FILE: Diz.Core/util/WorkerTaskManager.cs
  class WorkerTaskManager (line 9) | public class WorkerTaskManager : IWorkerTaskManager
    method Start (line 19) | public void Start()
    method StartFinishing (line 25) | public void StartFinishing()
    method Update (line 30) | private void Update()
    method Run (line 53) | public Task Run(Action action, CancellationToken cancelToken)
    method Run (line 58) | public Task Run(Action action)
    method StartTask (line 63) | private Task StartTask(Task task)
    method WaitForAllTasksToComplete (line 79) | public void WaitForAllTasksToComplete()
  class WorkerTaskManagerSynchronous (line 106) | public class WorkerTaskManagerSynchronous : IWorkerTaskManager
    method Start (line 108) | public void Start() { }
    method Run (line 110) | public Task Run(Action action, CancellationToken cancelToken)
    method Run (line 117) | public Task Run(Action action)
    method WaitForAllTasksToComplete (line 122) | public void WaitForAllTasksToComplete() { }
    method StartFinishing (line 123) | public void StartFinishing() { }
  type IWorkerTaskManager (line 126) | public interface IWorkerTaskManager
    method Start (line 128) | void Start();
    method WaitForAllTasksToComplete (line 130) | void WaitForAllTasksToComplete();
    method Run (line 132) | Task Run(Action action, CancellationToken cancelToken);
    method Run (line 133) | Task Run(Action action);
    method StartFinishing (line 135) | void StartFinishing();

FILE: Diz.Core/vendor/LightInject.AutoFactory.cs
  class ContainerExtensions (line 48) | public static class ContainerExtensions
    method EnableAutoFactories (line 54) | public static void EnableAutoFactories(this IServiceRegistry container)
    method RegisterAutoFactory (line 66) | public static void RegisterAutoFactory<TFactory>(this IServiceRegistry...
    method CreateFactoryInstance (line 71) | private static TFactory CreateFactoryInstance<TFactory>(IServiceFactor...
  type IAutoFactoryBuilder (line 92) | public interface IAutoFactoryBuilder
    method GetFactoryType (line 99) | Type GetFactoryType(Type factoryInterface);
  type ITypeBuilderFactory (line 106) | public interface ITypeBuilderFactory
    method CreateTypeBuilder (line 116) | TypeBuilder CreateTypeBuilder(Type targetType, Type[] additionalInterf...
    method CreateType (line 123) | Type CreateType(TypeBuilder typeBuilder);
  type IServiceNameResolver (line 130) | public interface IServiceNameResolver
    method Resolve (line 137) | string Resolve(MethodInfo method);
  class AutoFactoryBuilder (line 144) | public class AutoFactoryBuilder : IAutoFactoryBuilder
    method AutoFactoryBuilder (line 152) | static AutoFactoryBuilder()
    method AutoFactoryBuilder (line 180) | public AutoFactoryBuilder(ITypeBuilderFactory typeBuilderFactory, ISer...
    method GetFactoryType (line 191) | public Type GetFactoryType(Type factoryInterface)
    method ImplementConstructor (line 204) | private static FieldBuilder ImplementConstructor(TypeBuilder typeBuilder)
    method DefineGenericParameters (line 221) | private static void DefineGenericParameters(MethodInfo targetMethod, M...
    method ApplyGenericConstraints (line 232) | private static void ApplyGenericConstraints(Type genericArgument, Gene...
    method ImplementMethods (line 239) | private void ImplementMethods(TypeBuilder typeBuilder, Type interfaceT...
    method ImplementMethod (line 248) | private void ImplementMethod(TypeBuilder typeBuilder, MethodInfo metho...
    method GetServiceName (line 291) | private string GetServiceName(MethodInfo method)
  class TypeBuilderFactory (line 301) | public class TypeBuilderFactory : ITypeBuilderFactory
    method CreateTypeBuilder (line 311) | public TypeBuilder CreateTypeBuilder(Type targetType, Type[] additiona...
    method CreateType (line 327) | public Type CreateType(TypeBuilder typeBuilder)
    method GetModuleBuilder (line 332) | private static ModuleBuilder GetModuleBuilder()
    method GetAssemblyBuilder (line 338) | private static AssemblyBuilder GetAssemblyBuilder()
  class ServiceNameResolver (line 350) | public class ServiceNameResolver : IServiceNameResolver
    method Resolve (line 357) | public string Resolve(MethodInfo method)
    method ResolveReturnTypeName (line 370) | private static string ResolveReturnTypeName(MethodInfo method)
    method GetFriendlyTypeName (line 382) | private static string GetFriendlyTypeName(MethodInfo method)

FILE: Diz.Cpu.65816/src/AddRomDataCommand.cs
  class AddRomDataCommand (line 19) | [UsedImplicitly]
    method AddRomDataCommand (line 22) | public AddRomDataCommand(Func<ILinkedRomBytesProvider> createLinkedPro...
    method TryReadAttachedProjectRom (line 34) | public void TryReadAttachedProjectRom()
    method Populate (line 44) | private void Populate()
    method FillIfSearchFoundRom (line 60) | private void FillIfSearchFoundRom()
    method SearchForValidRom (line 77) | private (string filename, byte[] romBytes)? SearchForValidRom()
    method EnsureProjectCompatibleWithRom (line 93) | private void EnsureProjectCompatibleWithRom(byte[] romFileBytes)
    method CreateValidator (line 106) | private IValidator<RomToProjectAssociation> CreateValidator() =>
    method CreateValidator (line 109) | private static IValidator<RomToProjectAssociation> CreateValidator(boo...

FILE: Diz.Cpu.65816/src/AddRomDataCommandValidator.cs
  class RomToProjectAssociation (line 9) | public class RomToProjectAssociation
  class AddRomDataCommandValidator (line 15) | public class AddRomDataCommandValidator : AbstractValidator<RomToProject...
    method AddRomDataCommandValidator (line 19) | public AddRomDataCommandValidator()
    method MatchChecksums (line 29) | private static bool MatchChecksums(RomToProjectAssociation container, ...
    method HaveValidRomSize (line 46) | private static bool HaveValidRomSize(RomToProjectAssociation container...
    method MatchCartTitle (line 59) | private bool MatchCartTitle(RomToProjectAssociation container, Project...
    method MatchCartTitle (line 75) | private static bool MatchCartTitle(string requiredGameNameMatch, strin...

FILE: Diz.Cpu.65816/src/AutoStepper65816.cs
  class AutoStepper65816 (line 6) | public class AutoStepper65816<TDataSource> where TDataSource : IRomByteF...
    method AutoStepper65816 (line 16) | public AutoStepper65816(TDataSource byteSource)
    method Run (line 24) | public void Run(int offset)
    method CanAutoStepAtCurrentOffset (line 32) | private bool CanAutoStepAtCurrentOffset() =>
    method ProcessAutoStepOne (line 40) | private bool ProcessAutoStepOne()
    method StepAndMarkAllBranchesFromOffset (line 66) | private (int nextOffsetIfNoJump, int nextOffsetIfJumped) StepAndMarkAl...
    method HandleOpcode (line 83) | private bool HandleOpcode(byte opcode)
    method AdvanceOffsetTo (line 112) | private void AdvanceOffsetTo(int offset)
    method PushOrPopMxFlags (line 118) | private bool PushOrPopMxFlags(byte opcode)
    method RememberIfBranch (line 137) | private void RememberIfBranch(byte opcode)

FILE: Diz.Cpu.65816/src/CPU65C816.cs
  class Cpu65C816 (line 8) | public class Cpu65C816<TByteSource> : Cpu<TByteSource>
    method Step (line 27) | public override int Step(TByteSource data, int offset, bool branch, bo...
    method CalculateInOutPointsFromOffset (line 49) | public override int CalculateInOutPointsFromOffset(
    method MarkAsOpcodeAndOperandsStartingAt (line 102) | public int MarkAsOpcodeAndOperandsStartingAt(
    method GetIntermediateAddress (line 146) | public override int GetIntermediateAddress(TByteSource data, int offse...
    method GetInstructionStr (line 243) | public override string GetInstructionStr(TByteSource data, int offset) =>
    method GetInstructionData (line 246) | public override CpuInstructionDataFormatted GetInstructionData(TByteSo...
    method SearchForRomOffsetBoundsOfPointerTableFrom (line 339) | private static int SearchForRomOffsetBoundsOfPointerTableFrom(TByteSou...
    method GetPointerStr (line 363) | private static string? GetPointerStr(TByteSource data, int offset)
    method AutoStepSafe (line 413) | public override int AutoStepSafe(TByteSource byteSource, int offset)
    method CreateHexStr (line 420) | private static string CreateHexStr(int? v, int numDigits)
    method GetInstructionLength (line 431) | public override int GetInstructionLength(TByteSource data, int offset)
    method MarkInOutPoints (line 440) | public override void MarkInOutPoints(TByteSource data, int offset)
    method GetInstructionLength (line 450) | private static int GetInstructionLength(Cpu65C816Constants.AddressMode...
    method FormatOperandAddress (line 490) | private string FormatOperandAddress(TByteSource data, int offset)
    method GetFormattedRawHexIa (line 532) | private static string GetFormattedRawHexIa(TByteSource data, int offset)
    method GetFinalLabelExpressionToUse (line 554) | private string GetFinalLabelExpressionToUse(TByteSource data, int offset)
    method ResolveLabelNameWithContext (line 627) | private static string ResolveLabelNameWithContext(TByteSource data, IA...
    method GetUnmirroredLabelNameAndDisplacement (line 657) | private (int unmirrorCorrectedDisplacement, IAnnotationLabel? unmirror...
    method GenerateDisplacementString (line 689) | private static string GenerateDisplacementString(int amountToDisplace)
    method GetSpecialDirectiveOverrideFromComments (line 704) | private static CpuUtils.OperandOverride? GetSpecialDirectiveOverrideFr...
    method GetValidatedLabelNameForOffset (line 717) | private static IAnnotationLabel? GetValidatedLabelNameForOffset(TByteS...
    method SearchForMirroredLabel (line 761) | private (int labelAddress, IAnnotationLabel? labelEntry) SearchForMirr...
    method GetMnemonic (line 794) | private string GetMnemonic(TByteSource data, int offset, bool showHint...
    method GetNumBytesToShow (line 818) | private static int GetNumBytesToShow(Cpu65C816Constants.AddressMode mode)
    method GetInstructionFormatString (line 855) | private string GetInstructionFormatString(TByteSource data, int offset)
    method GetAddressMode (line 904) | public static Cpu65C816Constants.AddressMode? GetAddressMode(TByteSour...
    method GetAddressMode (line 916) | public static Cpu65C816Constants.AddressMode GetAddressMode(int opcode...
  class Cpu65C816Constants (line 932) | public static class Cpu65C816Constants
    type AddressMode (line 934) | public enum AddressMode : byte

FILE: Diz.Cpu.65816/src/Cpu.cs
  class Cpu (line 6) | public class Cpu<TByteSource> where TByteSource : IRomByteFlagsGettable,...
    method Step (line 24) | public virtual int Step(TByteSource data, int offset, bool branch, boo...
    method GetInstructionLength (line 27) | public virtual int GetInstructionLength(TByteSource data, int offset) ...
    method GetIntermediateAddress (line 28) | public virtual int GetIntermediateAddress(TByteSource data, int offset...
    method MarkInOutPoints (line 29) | public virtual void MarkInOutPoints(TByteSource data, int offset) {}
    method CalculateInOutPointsFromOffset (line 30) | public virtual int CalculateInOutPointsFromOffset(
    method GetInstructionStr (line 42) | public virtual string GetInstructionStr(TByteSource data, int offset) ...
    method GetInstructionData (line 44) | public virtual CpuInstructionDataFormatted GetInstructionData(TByteSou...
    method AutoStepSafe (line 46) | public virtual int AutoStepSafe(TByteSource byteSource, int offset) =>...
    method AutoStepHarsh (line 48) | public int AutoStepHarsh(TByteSource byteSource, int offset, int amount)
  class CpuSpc700 (line 64) | public class CpuSpc700<TByteSource> : Cpu<TByteSource> where TByteSource...
  class CpuSuperFx (line 69) | public class CpuSuperFx<TByteSource> : Cpu<TByteSource> where TByteSourc...

FILE: Diz.Cpu.65816/src/CpuDispatcher.cs
  class CpuDispatcher (line 9) | public class CpuDispatcher
    method Cpu (line 11) | public Cpu<SnesApi> Cpu(SnesApi data, int offset)

FILE: Diz.Cpu.65816/src/CpuUtils.cs
  class CpuUtils (line 3) | public class CpuUtils
    class OperandOverride (line 5) | public class OperandOverride
      type FormatOverride (line 22) | public enum FormatOverride
      type IncSrcOverride (line 29) | public enum IncSrcOverride
    method ParseCommentSpecialDirective (line 47) | public static OperandOverride? ParseCommentSpecialDirective(string? in...

FILE: Diz.Cpu.65816/src/CpuVectorTable.cs
  class CpuVectorTable (line 5) | public static class CpuVectorTable
    type VectorRomEntry (line 11) | public record VectorRomEntry(int AbsoluteRomOffset, VectorTableEntry V...
    type VectorTableEntry (line 12) | public record VectorTableEntry(string Name, int VectorTableOffset);
    method ComputeVectorTableNamesAndOffsets (line 46) | public static IEnumerable<VectorRomEntry> ComputeVectorTableNamesAndOf...

FILE: Diz.Cpu.65816/src/DataAddSnesApiDecorator.cs
  class DataAddSnesApiDecorator (line 8) | [UsedImplicitly]
    method DataAddSnesApiDecorator (line 14) | public DataAddSnesApiDecorator(IDataFactory baseDataFactory, Func<IDat...
    method Create (line 20) | public Data Create()

FILE: Diz.Cpu.65816/src/SampleRomData.cs
  class SnesSampleRomDataFactory (line 10) | public class SnesSampleRomDataFactory : ISampleDataFactory
    method SnesSampleRomDataFactory (line 13) | public SnesSampleRomDataFactory(IDataFactory dataFactory)
    method GetSampleUtf8CartridgeTitle (line 18) | public static string GetSampleUtf8CartridgeTitle() => "「ホ」 abcヲァィ TEST...
    method Create (line 20) | public Data Create()
    method PadRomBytesUpTo (line 245) | private static int PadRomBytesUpTo(Data data, int numBytesToPadUpTo)
    method Pad (line 254) | private static void Pad(Data data)
    method PostProcess (line 272) | private static void PostProcess(Data data)

FILE: Diz.Cpu.65816/src/ServiceRegistration.cs
  class DizCpu65816ServiceRoot (line 12) | [UsedImplicitly]
    method Compose (line 15) | public void Compose(IServiceRegistry serviceRegistry)
    method CreateSnesApiWithData (line 40) | private static ISnesData CreateSnesApiWithData(IServiceFactory service...
    method RegisterMigrations (line 43) | private static void RegisterMigrations(IServiceRegistry serviceRegistry)
    method RegisterSampleDataServices (line 55) | private static void RegisterSampleDataServices(IServiceRegistry servic...
    method CreateSampleProject (line 71) | private static IProjectFactory CreateSampleProject(IServiceFactory fac...

FILE: Diz.Cpu.65816/src/SnesData.cs
  type ISnesChecksum (line 10) | public interface ISnesChecksum
    method ComputeChecksum (line 21) | public ushort ComputeChecksum();
    method ComputeIsChecksumValid (line 22) | public bool ComputeIsChecksumValid();
    method FixChecksum (line 24) | public void FixChecksum();
  type ISnesCartName (line 27) | public interface ISnesCartName
  type IDataUtilities (line 33) | public interface IDataUtilities
    method FixMisalignedFlags (line 35) | int FixMisalignedFlags();
    method NormalizeWramLabels (line 36) | void NormalizeWramLabels();
  type IMiscNavigable (line 39) | public interface IMiscNavigable
    method FindNextUnreachedBranchPointAfter (line 41) | public (int unreachedOffsetFound, int iaSourceAddress)
    method DetectNextPointerTableFromAddressingModeUsageAfter (line 49) | public int DetectNextPointerTableFromAddressingModeUsageAfter(
  type ISnesApi (line 55) | public interface ISnesApi<out TData> :
    method CacheVerificationInfoFor (line 83) | public void CacheVerificationInfoFor(ISnesCachedVerificationInfo verif...
  type ISnesData (line 86) | public interface ISnesData : ISnesApi<IData>
  class SnesApi (line 90) | public class SnesApi : ISnesData
    method SnesApi (line 94) | public SnesApi(IData data)
    method FixChecksum (line 117) | public void FixChecksum()
    method ComputeChecksum (line 126) | public ushort ComputeChecksum() =>
    method ComputeIsChecksumValid (line 129) | public bool ComputeIsChecksumValid() =>
    method GetFlag (line 136) | public FlagType GetFlag(int i) => Data.RomBytes[i].TypeFlag;
    method SetFlag (line 137) | public void SetFlag(int i, FlagType flag) => Data.RomBytes[i].TypeFlag...
    method GetInOutPoint (line 139) | public InOutPoint GetInOutPoint(int i) => Data.RomBytes[i].Point;
    method SetInOutPoint (line 141) | public void SetInOutPoint(int i, InOutPoint point) => Data.RomBytes[i]...
    method ClearInOutPoint (line 142) | public void ClearInOutPoint(int i) => Data.RomBytes[i].Point = 0;
    method GetDataBank (line 143) | public int GetDataBank(int i) => Data.RomBytes[i].DataBank;
    method SetDataBank (line 144) | public void SetDataBank(int i, int dBank) => Data.RomBytes[i].DataBank...
    method GetDirectPage (line 145) | public int GetDirectPage(int i) => Data.RomBytes[i].DirectPage;
    method SetDirectPage (line 146) | public void SetDirectPage(int i, int dPage) => Data.RomBytes[i].Direct...
    method GetXFlag (line 147) | public bool GetXFlag(int i) => Data.RomBytes[i].XFlag;
    method SetXFlag (line 148) | public void SetXFlag(int i, bool x) => Data.RomBytes[i].XFlag = x;
    method GetMFlag (line 149) | public bool GetMFlag(int i) => Data.RomBytes[i].MFlag;
    method SetMFlag (line 150) | public void SetMFlag(int i, bool m) => Data.RomBytes[i].MFlag = m;
    method GetMxFlags (line 151) | public int GetMxFlags(int i)
    method SetMxFlags (line 155) | public void SetMxFlags(int i, int mx)
    method ConvertPCtoSnes (line 161) | public int ConvertPCtoSnes(int offset) =>
    method ConvertSnesToPc (line 164) | public int ConvertSnesToPc(int address) =>
    method GetIntermediateAddressOrPointer (line 167) | public int GetIntermediateAddressOrPointer(int offset)
    method IsMatchingIntermediateAddress (line 205) | public bool IsMatchingIntermediateAddress(int intermediateAddress, int...
    method GetRomSize (line 213) | public int GetRomSize() =>
    method GetBankSize (line 216) | public int GetBankSize() =>
    method GetNumberOfBanks (line 219) | public int GetNumberOfBanks()
    method GetBankName (line 227) | public string GetBankName(int bankIndex)
    method GetSnesBankByte (line 233) | private int GetSnesBankByte(int bankIndex)
    method GetCpu (line 240) | private Cpu<SnesApi> GetCpu(int offset) =>
    method GetInstructionLength (line 243) | public int GetInstructionLength(int offset) =>
    method Step (line 246) | public int Step(int offset, bool branch, bool force=false, int prevOff...
    method AutoStepSafe (line 249) | public int AutoStepSafe(int offset) =>
    method AutoStepHarsh (line 252) | public int AutoStepHarsh(int offset, int count) =>
    method MarkAsOpcodeAndOperandsStartingAt (line 255) | public void MarkAsOpcodeAndOperandsStartingAt(int offset, int? dataBan...
    method DetectNextPointerTableFromAddressingModeUsageAfter (line 280) | public int DetectNextPointerTableFromAddressingModeUsageAfter(
    method FindNextUnreachedBranchPointAfter (line 346) | public (int unreachedOffsetFound, int iaSourceAddress) FindNextUnreach...
    method GetIntermediateAddress (line 462) | public int GetIntermediateAddress(int offset, bool resolve = false) =>
    method GetInstructionStr (line 465) | public string GetInstructionStr(int offset) =>
    method GetInstructionData (line 468) | public CpuInstructionDataFormatted GetInstructionData(int offset) =>
    method RescanInOutPoints (line 471) | public void RescanInOutPoints()
    method FixMisalignedFlags (line 485) | public int FixMisalignedFlags()
    method NormalizeWramLabels (line 535) | public void NormalizeWramLabels()
    method FixFlagsForOpcodeAndItsOperands (line 558) | private int FixFlagsForOpcodeAndItsOperands(int offset, int romSize, r...
    method GetRomByte (line 573) | public byte? GetRomByte(int offset) => Data.GetRomByte(offset);
    method GetRomWord (line 574) | public int? GetRomWord(int offset) => Data.GetRomWord(offset);
    method GetRomLong (line 575) | public int? GetRomLong(int offset) => Data.GetRomLong(offset);
    method GetRomDoubleWord (line 576) | public int? GetRomDoubleWord(int offset) => Data.GetRomDoubleWord(offs...
    method GetCommentText (line 577) | public string GetCommentText(int snesAddress) => Data.GetCommentText(s...
    method GetComment (line 578) | public string? GetComment(int snesAddress) => Data.GetComment(snesAddr...
    method CacheVerificationInfoFor (line 594) | public void CacheVerificationInfoFor(ISnesCachedVerificationInfo verif...
    method GetRegion (line 608) | public IRegion? GetRegion(int snesAddress) => Data.GetRegion(snesAddre...
    method CreateNewRegion (line 609) | public IRegion? CreateNewRegion() => Data.CreateNewRegion();
  type ISnesSampleProjectFactory (line 612) | public interface ISnesSampleProjectFactory : IProjectFactory
  class SnesSampleProjectFactory (line 617) | public class SnesSampleProjectFactory : ISnesSampleProjectFactory
    method SnesSampleProjectFactory (line 620) | public SnesSampleProjectFactory(IProjectFactory createNewProject)
    method Create (line 625) | public IProject Create()
  class SnesApiExtensions (line 639) | public static class SnesApiExtensions
    method MarkTypeFlag (line 641) | public static int MarkTypeFlag(this ISnesApi<IData> @this, int offset,...
    method MarkDataBank (line 665) | public static int MarkDataBank(this ISnesApi<IData> @this, int offset,...
    method MarkDirectPage (line 668) | public static int MarkDirectPage(this ISnesApi<IData> @this, int offse...
    method MarkXFlag (line 671) | public static int MarkXFlag(this ISnesApi<IData> @this, int offset, bo...
    method MarkMFlag (line 674) | public static int MarkMFlag(this ISnesApi<IData> @this, int offset, bo...
    method MarkArchitecture (line 677) | public static int MarkArchitecture(this ISnesApi<IData> @this, int off...
    method SetCartridgeTitle (line 681) | public static void SetCartridgeTitle(this ISnesData @this, string utf8...
    method GetCpuStateAt (line 692) | public static (int directPage, int dataBank, bool xFlag, bool mFlag) G...
    method GetCpuStateFor (line 701) | public static
    method GetSnesApi (line 750) | public static ISnesData? GetSnesApi(this IData @this) =>
    method GenerateMisalignmentReport (line 753) | public static (int found, string outputTextLog) GenerateMisalignmentRe...

FILE: Diz.Cpu.65816/src/import/CachedVectorTableEntries.cs
  type IVectorTableCacheData (line 4) | public interface IVectorTableCacheData
  type IVectorTableCache (line 10) | public interface IVectorTableCache : IVectorTableCacheData
    method RegenerateEntriesFor (line 12) | void RegenerateEntriesFor(int romSettingsOffset);
    method Clear (line 13) | void Clear();
  class CachedVectorTableEntries (line 17) | public class CachedVectorTableEntries : IVectorTableCache
    method RegenerateEntriesFor (line 22) | public void RegenerateEntriesFor(int romSettingsOffset)
    method Clear (line 31) | public void Clear()

FILE: Diz.Cpu.65816/src/import/ISnesRomImportSettingsBuilder.cs
  type ISnesRomImportSettingsBuilder (line 12) | public interface ISnesRomImportSettingsBuilder : INotifyPropertyChanged
    method Analyze (line 15) | void Analyze(string romFilename);
    method Analyze (line 16) | void Analyze(byte[] rawRomBytes);
    method OptionClearGenerateVectorTableLabels (line 24) | public void OptionClearGenerateVectorTableLabels();
    method OptionSetGenerateVectorTableLabelFor (line 25) | public void OptionSetGenerateVectorTableLabelFor(string vectorName, bo...
    method GenerateSettings (line 27) | public ImportRomSettings GenerateSettings();

FILE: Diz.Cpu.65816/src/import/ImportRomSettingsBuilder.cs
  class SnesRomImportSettingsBuilder (line 13) | [UsedImplicitly]
    method SnesRomImportSettingsBuilder (line 53) | public SnesRomImportSettingsBuilder(ISnesRomAnalyzer snesRomAnalyzer, ...
    method InputOnPropertyChanged (line 64) | private void InputOnPropertyChanged(object? sender, PropertyChangedEve...
    method RegenerateCachedVectorTableEntries (line 70) | private void RegenerateCachedVectorTableEntries()
    method Reset (line 82) | public void Reset()
    method Analyze (line 87) | public void Analyze(string romFilename)
    method Analyze (line 95) | public void Analyze(byte[] rawRomBytes)
    method OnAnalyzed (line 102) | private void OnAnalyzed()
    method SetRomMapModeToAnalyzed (line 107) | private void SetRomMapModeToAnalyzed()
    method OptionClearGenerateVectorTableLabels (line 112) | public void OptionClearGenerateVectorTableLabels()
    method OptionSetGenerateVectorTableLabelFor (line 117) | public void OptionSetGenerateVectorTableLabelFor(string vectorName, bo...
    method GenerateSettings (line 132) | public ImportRomSettings GenerateSettings()
    method GenerateVectorLabels (line 153) | private Dictionary<int, Label> GenerateVectorLabels()
    method CreateLabelForVectorEntry (line 165) | private KeyValuePair<int, Label>? CreateLabelForVectorEntry(CpuVectorT...

FILE: Diz.Cpu.65816/src/import/ImportUtils.cs
  class SnesProjectFactoryFromRomImportSettings (line 8) | public class SnesProjectFactoryFromRomImportSettings(
    method Read (line 13) | public Project Read()

FILE: Diz.Cpu.65816/src/import/MigrationBugfix050JapaneseText.cs
  class MigrationBugfix050JapaneseText (line 15) | [UsedImplicitly]
    method OnLoadingBeforeAddLinkedRom (line 22) | public void OnLoadingBeforeAddLinkedRom(IAddRomDataCommand romAddCmd)
    method OnLoadingAfterAddLinkedRom (line 32) | public void OnLoadingAfterAddLinkedRom(IAddRomDataCommand romAddCmd)
    method Setup (line 42) | private Project Setup(IAddRomDataCommand romAddCmd)
    method ApplyMitigation (line 52) | private static void ApplyMitigation(IProject project)
    method IsMitigationNeeded (line 74) | private static bool IsMitigationNeeded(IProject project)

FILE: Diz.Cpu.65816/src/import/MigrationNoOp.cs
  class MigrationNoOp (line 11) | [UsedImplicitly]

FILE: Diz.Cpu.65816/src/import/SnesDefaultSettingsFactory.cs
  class SnesDefaultSettingsFactory (line 7) | [UsedImplicitly]
    method SnesDefaultSettingsFactory (line 12) | public SnesDefaultSettingsFactory(ISnesRomImportSettingsBuilder snesRo...
    method Create (line 17) | public IRomImportSettings Create(string romFilename)

FILE: Diz.Cpu.65816/src/import/SnesRomAnalyzer.cs
  type ISnesRomAnalyzerData (line 9) | public interface ISnesRomAnalyzerData : INotifyPropertyChanged
    type SnesRomAnalysisResults (line 11) | public record SnesRomAnalysisResults(
  type ISnesRomAnalyzer (line 23) | public interface ISnesRomAnalyzer : ISnesRomAnalyzerData
    method Analyze (line 25) | public void Analyze(string romFilename);
    method Analyze (line 26) | public void Analyze(IReadOnlyList<byte> romBytes, string? romFilename ...
  class SnesRomAnalyzer (line 30) | public class SnesRomAnalyzer : ISnesRomAnalyzer
    method Reset (line 58) | public void Reset()
    method Analyze (line 65) | public void Analyze(string romFilename)
    method Analyze (line 75) | public void Analyze(IReadOnlyList<byte> rawRomBytes, string? romFilena...
    method DetectSettingsFor (line 83) | private static ISnesRomAnalyzer.SnesRomAnalysisResults DetectSettingsF...
    method OnPropertyChanged (line 109) | [NotifyPropertyChangedInvocator]

FILE: Diz.Cpu.65816/src/import/SnesVectorNames.cs
  class SnesVectorNames (line 5) | [SuppressMessage("ReSharper", "InconsistentNaming")]

FILE: Diz.Import/src/LabelImporter.cs
  class LabelImporter (line 10) | public abstract class LabelImporter
    method ReadLabelsFromFile (line 20) | public virtual Dictionary<int, IAnnotationLabel> ReadLabelsFromFile(st...
    method ParseLine (line 40) | private void ParseLine(string line)
    method TryImportLabel (line 50) | private void TryImportLabel(IAnnotationLabel label, string labelAddress)
    method TryParseLabelFromLine (line 75) | protected abstract (IAnnotationLabel label, string labelAddress)? TryP...
  class LabelImporterUtils (line 78) | public static class LabelImporterUtils
    method ImportLabelsFromCsv (line 81) | public static void ImportLabelsFromCsv(this ILabelProvider labelProvid...

FILE: Diz.Import/src/LabelImporterCsv.cs
  class LabelImporterCsv (line 7) | public class LabelImporterCsv : LabelImporter
    method IsFileCompatible (line 9) | public static bool IsFileCompatible(string importFilename) =>
    method TryParseLabelFromLine (line 12) | protected override (IAnnotationLabel label, string labelAddress)? TryP...

FILE: Diz.Import/src/ServiceRegistration.cs
  class DizImportServiceRegistration (line 5) | public class DizImportServiceRegistration : ICompositionRoot
    method Compose (line 7) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.Import/src/bizhawk/BizHawkCdlImporter.cs
  class BizHawkCdlImporter (line 6) | public class BizHawkCdlImporter
    type Flag (line 10) | [Flags]
    method Import (line 23) | public static void Import(string filename, ISnesData data)
    method LoadFromFile (line 30) | private void LoadFromFile(string path)
    method LoadFromStream (line 36) | private void LoadFromStream(Stream input)
    method CopyInto (line 62) | private void CopyInto(ISnesData snesData)

FILE: Diz.Import/src/bsnes/BsnesSymbolLabelImporter.cs
  class BsnesSymbolLabelImporter (line 10) | public class BsnesSymbolLabelImporter : LabelImporter
    method ReadLabelsFromFile (line 14) | public override Dictionary<int, IAnnotationLabel> ReadLabelsFromFile(s...
    method IsFileCompatible (line 20) | public static bool IsFileCompatible(string importFilename)
    method TryParseLabelFromLine (line 31) | protected override (IAnnotationLabel label, string labelAddress)? TryP...
    method TryParseBsnesSection (line 68) | private bool TryParseBsnesSection(string line)
    method ParseSnesAddress (line 80) | private static string ParseSnesAddress(string symbols) =>
    method ShouldSkipLineBecauseCommentOrWhitespace (line 83) | private static bool ShouldSkipLineBecauseCommentOrWhitespace(string li...

FILE: Diz.Import/src/bsnes/tracelog/BSNESImportStreamProcessor.cs
  class PoolItem (line 10) | public abstract class PoolItem
  class ObjPool (line 15) | public class ObjPool<T> where T : PoolItem, new()
    method ObjPool (line 19) | public ObjPool()
    method Get (line 24) | public T Get()
    method Alloc (line 32) | private T Alloc()
    method Return (line 37) | public void Return(ref T? item)
    method DeAlloc (line 49) | private void DeAlloc(T item)
  class BsnesImportStreamProcessor (line 55) | public class BsnesImportStreamProcessor
    class WorkItemDecompressSnesTraces (line 57) | public class WorkItemDecompressSnesTraces : PoolItem
    class WorkItemSnesTrace (line 83) | public class WorkItemSnesTrace : PoolItem
    method BsnesImportStreamProcessor (line 100) | public BsnesImportStreamProcessor(bool poolAllocations = true)
    method Shutdown (line 109) | public void Shutdown()
    method GetCompressedWorkItems (line 118) | public IEnumerable<WorkItemDecompressSnesTraces> GetCompressedWorkItem...
    method ReadPacketFromStream (line 136) | private WorkItemDecompressSnesTraces? ReadPacketFromStream(Stream? str...
    method AllocateCompressedWorkItem (line 207) | private WorkItemDecompressSnesTraces AllocateCompressedWorkItem()
    method AllocCompressedWorkItem (line 223) | private WorkItemDecompressSnesTraces AllocCompressedWorkItem()
    method AllocWorkItem (line 228) | private WorkItemSnesTrace AllocWorkItem()
    method FreeCompressedWorkItem (line 233) | public void FreeCompressedWorkItem(ref WorkItemDecompressSnesTraces? c...
    method FreeWorkItem (line 256) | public void FreeWorkItem(ref WorkItemSnesTrace? workItem)
    method AllocateWorkItem (line 268) | private WorkItemSnesTrace AllocateWorkItem(byte workItemLen)
    method AllocateUncompressedBuffer (line 294) | private static void AllocateUncompressedBuffer(WorkItemDecompressSnesT...
    method DecompressWorkItem (line 315) | public void DecompressWorkItem(WorkItemDecompressSnesTraces workItemDe...
    method ParseSnesTraceWorkItem (line 343) | public WorkItemSnesTrace ParseSnesTraceWorkItem(Stream stream, byte wo...

FILE: Diz.Import/src/bsnes/tracelog/BSNESTraceLogCapture.cs
  class BsnesTraceLogCaptureController (line 17) | public class BsnesTraceLogCaptureController
    method BsnesTraceLogCaptureController (line 33) | public BsnesTraceLogCaptureController(ISnesData snesData)
    method Run (line 44) | public void Run()
    method Shutdown (line 61) | private void Shutdown()
    method GetInputStream (line 67) | private static Stream? GetInputStream() => OpenNetworkStream();
    method OpenNetworkStream (line 69) | private static NetworkStream? OpenNetworkStream(IPAddress? ip = null, ...
    method Main (line 92) | protected virtual void Main()
    type TraceLogCaptureSettings (line 119) | public struct TraceLogCaptureSettings
      method TraceLogCaptureSettings (line 130) | public TraceLogCaptureSettings()
    method ProcessStreamData (line 137) | private void ProcessStreamData(Stream? networkStream)
    method ProcessCompressedSnesTracesWorkItem (line 185) | private async void ProcessCompressedSnesTracesWorkItem(BsnesImportStre...
    method DispatchWorkersForSnesTraceProcessing (line 224) | private IEnumerable<Task> DispatchWorkersForSnesTraceProcessing(BsnesI...
    method CreateSnesTraceWorkQueues (line 271) | private void CreateSnesTraceWorkQueues(BsnesImportStreamProcessor.Work...
    method ParseNextSnesTrace (line 333) | private BsnesImportStreamProcessor.WorkItemSnesTrace? ParseNextSnesTra...
    method DecompressSnesBuffers (line 343) | private void DecompressSnesBuffers(BsnesImportStreamProcessor.WorkItem...
    method ProcessWorkItemsLinkedList (line 356) | private void ProcessWorkItemsLinkedList(BsnesImportStreamProcessor.Wor...
    method Stats_MarkQueued (line 379) | private void Stats_MarkQueued(BsnesImportStreamProcessor.WorkItemDecom...
    method Stats_MarkCompleted (line 385) | private void Stats_MarkCompleted(int bytesCompleted)
    method ProcessWorkItemSnesTrace (line 391) | private void ProcessWorkItemSnesTrace(BsnesImportStreamProcessor.WorkI...
    method SignalToStop (line 409) | public void SignalToStop()
    method GetStats (line 415) | public (BsnesTraceLogImporter.Stats stats, int bytesToProcess) GetStats()

FILE: Diz.Import/src/bsnes/tracelog/BSNESTraceLogImporter.cs
  class BsnesTraceLogImporter (line 7) | public partial class BsnesTraceLogImporter
    method BsnesTraceLogImporter (line 22) | public BsnesTraceLogImporter(ISnesData? snesData)
    method ConsumeAndFreeTraceData (line 35) | private void ConsumeAndFreeTraceData(ref ModificationData? modData, in...
    method UpdateTracelogComments (line 95) | private void UpdateTracelogComments(int snesAddress, in BsnesTraceLogC...
    method IsOkToSetThisRomByte (line 150) | private bool IsOkToSetThisRomByte(int pc, int instructionByteLen, int ...
    method GetFlag (line 183) | private FlagType GetFlag(int pc)
    method ValidateInstructionByteLen (line 196) | private static void ValidateInstructionByteLen(int instructionByteLen)
    method CopyTempGeneratedCommentsIntoMainSnesData (line 205) | public void CopyTempGeneratedCommentsIntoMainSnesData()

FILE: Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Caching.cs
  class BsnesTraceLogImporter (line 3) | public partial class BsnesTraceLogImporter
    class CachedTraceLineTextIndex (line 24) | public class CachedTraceLineTextIndex
      method RecomputeCachedIndicesBasedOn (line 43) | public void RecomputeCachedIndicesBasedOn(string templateLine)

FILE: Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.ModificationsList.cs
  class BsnesTraceLogImporter (line 6) | public partial class BsnesTraceLogImporter
    class ModificationData (line 16) | public class ModificationData : PoolItem
      method CompareToExisting (line 34) | private void CompareToExisting(ISnesRomByte romByte)
      method ApplyModification (line 46) | private void ApplyModification(IRomByte romByte)
      method ApplyModificationIfNeeded (line 63) | public void ApplyModificationIfNeeded(IRomByte romByte)
    method UpdateStats (line 82) | private void UpdateStats(ModificationData modData)

FILE: Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Parsers.cs
  class BsnesTraceLogImporter (line 6) | public partial class BsnesTraceLogImporter
    method AllocateModificationData (line 10) | public ModificationData AllocateModificationData()
    method FreeModificationData (line 19) | private void FreeModificationData(ref ModificationData? modData)
    method ImportTraceLogLine (line 27) | public void ImportTraceLogLine(string line)
    method ImportTraceLogLineBinary (line 40) | public void ImportTraceLogLineBinary(byte[] bytes, bool abridgedFormat...
    method ParseTextLine (line 55) | public bool ParseTextLine(string line, ModificationData modData)
    method ParseBinary (line 89) | private static void ParseBinary(byte[] bytes, bool abridgedFormat, out...

FILE: Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Stats.cs
  class BsnesTraceLogImporter (line 3) | public partial class BsnesTraceLogImporter
    type Stats (line 5) | public struct Stats
    method InitStats (line 33) | private void InitStats()

FILE: Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Util.cs
  class BsnesTraceLogImporter (line 6) | public partial class BsnesTraceLogImporter
    method ConvertSnesToPc (line 8) | private int ConvertSnesToPc(int modDataSnesAddress)
    method GetNextSNESAddress (line 15) | private static int GetNextSNESAddress(int modDataSnesAddress)
    method GetFlagForInstructionPosition (line 20) | private static FlagType GetFlagForInstructionPosition(int currentIndex)
    method UpdatePCAddress (line 25) | private void UpdatePCAddress(ModificationData modData)

FILE: Diz.Import/src/bsnes/usagemap/BSNESUsageMapImporter.cs
  class BsnesUsageMapImporter (line 6) | public class BsnesUsageMapImporter
    type BsnesPlusUsage (line 8) | [Flags]
    method BsnesUsageMapImporter (line 32) | public BsnesUsageMapImporter(byte[] usageMap, ISnesData snesData, bool...
    method Run (line 39) | public int Run()
    method ProcessUsageMapAddress (line 52) | private bool ProcessUsageMapAddress(int snesOffset)

FILE: Diz.Test/Tests/LogCreatorTests/AssemblyStrings.cs
  class AssemblyStrings (line 8) | public class AssemblyStrings
    method TestHexParse (line 23) | [Theory]

FILE: Diz.Test/Tests/LogCreatorTests/LogCreator.cs
  class LogCreatorTests (line 14) | public class LogCreatorTests : ContainerFixture
    method TestAFewLines (line 32) | [Fact(Skip = "need to reset the .asm file")]
    method TestLabelCount (line 45) | [Fact]
    method TestOneLine (line 54) | [Fact(Skip = "need to reset the .asm file")]
    method TestEmptyRom (line 61) | [Theory]
    method LogCreatorTests (line 72) | public LogCreatorTests(ITestOutputHelper debugWriter)
    method CreateSampleData (line 77) | private Data CreateSampleData()

FILE: Diz.Test/Tests/PerformanceTests/TraceLogPerformanceTests.cs
  class XOutLogger (line 15) | public sealed class XOutLogger : ILogger
    method XOutLogger (line 19) | public XOutLogger(ITestOutputHelper helper)
    method Write (line 24) | public void Write(LogKind logKind, string text)
    method WriteLine (line 29) | public void WriteLine()
    method WriteLine (line 34) | public void WriteLine(LogKind logKind, string text)
    method Flush (line 39) | public void Flush()
  class TraceLogPerformanceTests (line 47) | public class TraceLogPerformanceTests
    method TraceLogPerformanceTests (line 51) | public TraceLogPerformanceTests(ITestOutputHelper output)
    method RunPrintTiming (line 56) | private void RunPrintTiming(Action item)

FILE: Diz.Test/Tests/ProjectSessionTest.cs
  class ProjectSessionTest (line 7) | public class ProjectSessionTest
    method TestProjectSessionUnsaved (line 9) | [Fact]

FILE: Diz.Test/Tests/RomInterfaceTests/AccessTests.cs
  class CpuTests (line 13) | public static class CpuTests
    method GetSampleData (line 15) | private static Data GetSampleData()
    method SanityTest (line 65) | [Fact]
    method IA1 (line 79) | [Fact]
    method IA2 (line 86) | [Fact]
    method RunTestRom (line 94) | [Fact(Skip = "Relies on external tool that isn't yet setup")]

FILE: Diz.Test/Tests/RomInterfaceTests/CartTitleTests.cs
  class CartNameData (line 18) | public static class CartNameData
  class CartNameTests (line 26) | public class CartNameTests : ContainerFixture
    method TestTitleFilenameConversions (line 45) | [Fact]
    method TestTitleRead (line 69) | [Fact]
    class TestRoot (line 85) | private class TestRoot
    method TestXmlCycle3 (line 90) | [Fact]
    method CartNameInHeader (line 106) | [Fact]
    method TestRomCartTitle (line 115) | internal static void TestRomCartTitle(Project project, string expected...
    method TestCartChecksumInHeader (line 128) | [Fact]
    method TestFamicheckTool (line 137) | [FactOnlyIfFilePresent(new[]{SuperFamiCheckTool.Exe, CartNameData.Exam...
  class TestChecksums (line 149) | public class TestChecksums : ContainerFixture
    method TestInternalChecksumVsExternal (line 153) | [FactOnlyIfFilePresent(new[]{SuperFamiCheckTool.Exe, CartNameData.Exam...

FILE: Diz.Test/Tests/RomInterfaceTests/TestServiceInterfaces.cs
  class TestServiceInterfaces (line 18) | public class TestServiceInterfaces : ContainerFixture
    method Configure (line 25) | protected override void Configure(IServiceRegistry serviceRegistry)
    method MockGuiInterfaces (line 30) | private static void MockGuiInterfaces(IServiceRegistry serviceRegistry)
    method CreateInstance (line 36) | [Theory(Skip = "Useful more for debugging registrations, less so as a ...

FILE: Diz.Test/Tests/RomModeDetectionTests.cs
  class RomModeDetectionTests (line 13) | public class RomModeDetectionTests : ContainerFixture
    method Configure (line 18) | protected override void Configure(IServiceRegistry serviceRegistry)
    method TestRomDetectionLoRom (line 24) | [FactOnlyIfFilePresent(new[]{CartNameData.ExampleLoRomFile})]
    method TestRomDetectionHiRom (line 32) | [FactOnlyIfFilePresent(new[]{CartNameData.ExampleHiRomFile})]
    method TestRomDetectionFastRom (line 43) | [FactOnlyIfFilePresent(new[]{CartNameData.ExampleHiRomFile})]
    method TestRomDetectionGeneratedRom (line 56) | [Fact]

FILE: Diz.Test/Tests/SerializationTests/CompressionTest.cs
  class CompressionTest (line 8) | public static class CompressionTest
    method Repeat (line 10) | private static IEnumerable<TOut> Repeat<TOut>(TOut toRepeat, int times) {
    method GenerateRepeat (line 16) | private static (IEnumerable<string>, IEnumerable<string>) GenerateRepe...
    method ValidDataReal (line 38) | private static List<(IEnumerable<string>, IEnumerable<string>)> ValidD...
    method TestCompressionsValid (line 74) | [Theory]

FILE: Diz.Test/Tests/SerializationTests/LoadSavePerformanceTests.cs
  class LoadSavePerformanceTests (line 10) | public class LoadSavePerformanceTests : ContainerFixture
    method LoadSavePerformanceTests (line 16) | public LoadSavePerformanceTests(ITestOutputHelper output)
    method OpenProject (line 21) | private static Project OpenProject(string openFile, IProjectFileManage...
    method OpenFilePerformanceTest (line 32) | [Fact(Skip = "Performance Test")]
    method SaveFilePerformanceTest (line 47) | [Fact(Skip = "Performance Test")]

FILE: Diz.Test/Tests/SerializationTests/MigrationTests.cs
  class MigrationTests (line 13) | public class MigrationTests
    method TestMigrationFailsIfOutsideBounds (line 16) | [Theory]
    method TestNullElementFails (line 29) | [Fact] public static void TestNullElementFails() =>
    method TestInvalidStartAndTarget (line 33) | [Fact] public static void TestInvalidStartAndTarget() =>
    class MigrationMock (line 106) | public class MigrationMock
    method CreateMigrationMock (line 112) | private static MigrationMock CreateMigrationMock(int saveVersion, bool...
    class Harness (line 135) | public class Harness
      method Verify (line 144) | public void Verify()
      method Run (line 152) | public void Run(Action action)

FILE: Diz.Test/Tests/SerializationTests/ProjectLoadSaveTest.cs
  class LoadSaveTest (line 14) | public class LoadSaveTest : ContainerFixture
    method FullSerializeAndDeserialize (line 19) | [Fact]
    method TestEquivalent (line 61) | private static void TestEquivalent(Func<Project, object> func, Project...

FILE: Diz.Test/Tests/SerializationTests/ProjectServicesTests.cs
  class ProjectServicesTests (line 15) | public class ProjectServicesTests : ContainerFixture
    method TestVariousServicesExist (line 19) | [Fact]

FILE: Diz.Test/Tests/SerializationTests/RomByteTests.cs
  class RomByteTests (line 11) | public class RomByteTests : ContainerFixture
    method SampleRomByte1 (line 13) | private static RomByte SampleRomByte1()
    method SampleRomByte2 (line 28) | private static RomByte SampleRomByte2()
    method TestWhenNoIaPresent (line 38) | [Fact]
    method TestGetAddressMode (line 47) | [Fact]
    method TestEqualsButNotCompareByte (line 63) | [Fact]
    method TestEquals (line 77) | [Fact]

FILE: Diz.Test/Tests/TracelogTests/TraceLogTests.cs
  class TraceLogTests (line 7) | public static class TraceLogTests
    method TestCacheLines1 (line 13) | [Fact]
    method TestCacheLines2 (line 36) | [Fact]
    method TestCacheLines3 (line 63) | [Fact]
    method TestParseText1 (line 84) | [Fact]
    method TestParseText2 (line 99) | [Fact]
    method TestParseText3 (line 113) | [Fact]

FILE: Diz.Test/Tests/UtilsTests/OptimizedHexConversionTests.cs
  class OptimizedHexConversionTests (line 8) | public static class OptimizedHexConversionTests
    method TestHex1 (line 10) | [Fact]
    method TestHexRange (line 18) | [Fact]
    method TestHex2 (line 35) | [Fact]
    method TestHex4 (line 41) | [Fact]
    method TestHexM (line 47) | [Fact]

FILE: Diz.Test/Tests/UtilsTests/SuperFamiCheckTests.cs
  class SuperFamiCheckTests (line 9) | public class SuperFamiCheckTests
    method TestHexParseInvalid (line 32) | [Theory]
    method TestHexParse (line 40) | [Theory]
    method TestOneLine (line 48) | [Fact]

FILE: Diz.Test/Utils/AsarRunner.cs
  class AsarRunner (line 8) | public static class AsarRunner
    method AssembleToRom (line 14) | public static IReadOnlyList<byte> AssembleToRom(string assemblyCode)

FILE: Diz.Test/Utils/AssemblyPipelineTester.cs
  class AssemblyPipelineTester (line 5) | public class AssemblyPipelineTester
    method Test (line 10) | public virtual void Test()
    method SetupFromResource (line 16) | public static AssemblyPipelineTester SetupFromResource(Data input, str...

FILE: Diz.Test/Utils/BenchmarkXunitLogger.cs
  class XunitBenchmark (line 7) | public static class XunitBenchmark
    method Run (line 9) | public static void Run<T>(ITestOutputHelper xUnitOutput, bool debugOk=...

FILE: Diz.Test/Utils/CorrectingRangeTests.cs
  class CorrectingRangeTests (line 7) | public class CorrectingRangeTests
    method TestSomeBasics (line 9) | [Fact]
    method TestInvalid (line 33) | [Fact]
    method TestCombos (line 52) | [Fact]

FILE: Diz.Test/Utils/DizTestCompositionRoot.cs
  class DizTestCompositionRoot (line 5) | public class DizTestCompositionRoot : ICompositionRoot
    method Compose (line 7) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.Test/Utils/EmbeddedResourceDataAttribute.cs
  class EmbeddedResourceDataAttribute (line 10) | public sealed class EmbeddedResourceDataAttribute : DataAttribute
    method EmbeddedResourceDataAttribute (line 14) | public EmbeddedResourceDataAttribute(params string[] resourcesToRead)
    method ReadResource (line 19) | public static string ReadResource(string resource)
    method GetData (line 25) | public override IEnumerable<object[]> GetData(MethodInfo testMethod)

FILE: Diz.Test/Utils/EmptyRomTestData.cs
  class EmptyRom (line 7) | public class EmptyRom : Data
    method EmptyRom (line 9) | public EmptyRom()

FILE: Diz.Test/Utils/ExternalRunners.cs
  type ISkippableTest (line 7) | public interface ISkippableTest
  class DependentFileChecker (line 12) | public static class DependentFileChecker
    method SkipUnlessFilesExist (line 14) | public static void SkipUnlessFilesExist(this ISkippableTest @this, str...
    method CheckExists (line 17) | private static string CheckExists(string[] files = null)
  class FactOnlyIfFilePresent (line 28) | public class FactOnlyIfFilePresent : FactAttribute, ISkippableTest
    method FactOnlyIfFilePresent (line 30) | public FactOnlyIfFilePresent(string[] files = null) =>
  class TheoryOnlyIfFilePresent (line 34) | public sealed class TheoryOnlyIfFilePresent : TheoryAttribute, ISkippabl...
    method TheoryOnlyIfFilePresent (line 36) | public TheoryOnlyIfFilePresent(string[] files = null) =>

FILE: Diz.Test/Utils/ExternalToolRunner.cs
  class ExternalToolRunner (line 6) | public class ExternalToolRunner
    method ExternalToolRunner (line 9) | public ExternalToolRunner(string exeFilename)
    method RunCommand (line 17) | public string RunCommand(string args)

FILE: Diz.Test/Utils/LogWriterHelper.cs
  class LogWriterHelper (line 15) | public static class LogWriterHelper
    class ParsedOutput (line 17) | public class ParsedOutput
      method Equals (line 19) | private bool Equals(ParsedOutput other)
      method Equals (line 24) | public override bool Equals(object obj)
      method GetHashCode (line 32) | public override int GetHashCode()
    method ParseLine (line 56) | private static ParsedOutput ParseLine(string line)
    method ParseAll (line 101) | private static List<ParsedOutput> ParseAll(string lines) =>
    method AssertAssemblyOutputEquals (line 106) | public static void AssertAssemblyOutputEquals(string expectedRaw, LogC...
    method ExportAssembly (line 126) | public static LogCreatorOutput.OutputResult ExportAssembly(Data inputR...
    method AssertGoodOutput (line 143) | [SuppressMessage("ReSharper", "ParameterOnlyUsedForPreconditionCheck.L...
    method AssertAssemblyOutputEqual (line 151) | private static void AssertAssemblyOutputEqual(IReadOnlyList<ParsedOutp...

FILE: Diz.Test/Utils/ServiceContainerFixture.cs
  class Inject (line 13) | [AttributeUsage(AttributeTargets.Field)]
  class ContainerFixture (line 21) | public class ContainerFixture : IDisposable
    method ContainerFixture (line 26) | [SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")]
    method ConfigureAndRegisterServiceContainer (line 36) | public virtual IServiceContainer ConfigureAndRegisterServiceContainer()
    method RegisterServices (line 44) | private static IServiceContainer RegisterServices(IServiceContainer co...
    method InjectPrivateFields (line 50) | private void InjectPrivateFields()
    method Dispose (line 67) | public void Dispose() => ServiceFactory.Dispose();
    method GetInstance (line 69) | public TService GetInstance<TService>(string name = "")
    method GetInstance (line 72) | private object GetInstance(IServiceFactory factory, FieldInfo field)
    method CreateContainer (line 82) | internal virtual IServiceContainer CreateContainer() =>
    method CreateServiceContainer (line 85) | public static IServiceContainer CreateServiceContainer() =>
    method Configure (line 88) | protected virtual void Configure(IServiceRegistry serviceRegistry) {}
    method CreateAndRegisterServiceContainer (line 90) | protected static IServiceContainer CreateAndRegisterServiceContainer() =>

FILE: Diz.Test/Utils/SuperFamiCheckUtil/DizSuperFamiCheckParse.cs
  class DizSuperFamiCheckParse (line 6) | public static class DizSuperFamiCheckParse
    method ParseKvpLine (line 28) | public static (string key, uint value) ParseKvpLine(string input) =>

FILE: Diz.Test/Utils/SuperFamiCheckUtil/SuperFamiCheck.cs
  class SuperFamiCheckTool (line 7) | public class SuperFamiCheckTool : ExternalToolRunner
    method SuperFamiCheckTool (line 11) | public SuperFamiCheckTool() : base(Exe) {}
    type Result (line 13) | public struct Result
    method Run (line 20) | public static Result Run(string romName) => new SuperFamiCheckTool().R...
    method RunInternal (line 22) | private Result RunInternal(string romName)
    method RunAndGetOutput (line 41) | private List<string> RunAndGetOutput(string romName)

FILE: Diz.Test/Utils/TestUtil.cs
  type ISampleRomTestData (line 14) | public interface ISampleRomTestData
  class SampleRomTestDataFixture (line 20) | public class SampleRomTestDataFixture : ContainerFixture, ISampleRomTest...
    method SampleRomTestDataFixture (line 26) | public SampleRomTestDataFixture()
  class TheoryDataGenerator (line 39) | public static class TheoryDataGenerator
    method CreateTheoryData (line 41) | public static TheoryData<T> CreateTheoryData<T>(this IEnumerable<Func<...
  class TestUtil (line 53) | public static class TestUtil
    method AssertCollectionEqual (line 55) | public static void AssertCollectionEqual<T>(IReadOnlyList<T> expected,...
    method CreateReadFromFileMock (line 77) | public static Mock<IReadFromFileBytes> CreateReadFromFileMock(byte[] m...

FILE: Diz.Test/Utils/XmlTestUtilBase.cs
  class XmlTestUtilBase (line 6) | public abstract class XmlTestUtilBase
    method XmlTestUtilBase (line 10) | public XmlTestUtilBase(ITestOutputHelper testOutputHelper)

FILE: Diz.Test/Utils/XmlTestUtils.cs
  class XmlTestUtils (line 7) | public class XmlTestUtils
    method RunFullCycle (line 11) | public void RunFullCycle<T>(Func<T> createFn, out T expectedCopy, out ...
    method RunFullCycleObj (line 19) | public void RunFullCycleObj(Func<object> createFn, out object expected...
    method XmlFullCycle (line 27) | public T XmlFullCycle<T>(T objToCycle)
    method RunFullCycle (line 47) | public void RunFullCycle(Func<object> createFn)

FILE: Diz.Test/bugs/Bug050_JapaneseText.cs
  class Bug50ProjectFileManager (line 22) | public class Bug50ProjectFileManager : ProjectFileManager
    method DeserializeWith (line 27) | protected override ProjectOpenResult DeserializeWith(IProjectSerialize...
    method SerializeWith (line 35) | protected override byte[] SerializeWith(Project project, IProjectSeria...
    method Bug50ProjectFileManager (line 43) | public Bug50ProjectFileManager(
  class Bug050JapaneseText (line 56) | public class Bug050JapaneseText
    class Bug050Fixture (line 58) | public class Bug050Fixture : ContainerFixture
      method Bug050Fixture (line 85) | public Bug050Fixture(
      method Configure (line 162) | protected override void Configure(IServiceRegistry serviceRegistry)
      method ConfigureAndRegisterServiceContainer (line 174) | public override IServiceContainer ConfigureAndRegisterServiceContain...
    method ExpectValidSerializationInput (line 223) | [Theory, MemberData(nameof(Fixtures))]
    method ExpectedSetupOutputs (line 232) | [Theory, MemberData(nameof(Fixtures))]
    method ExpectSaveVersionsToMatch (line 242) | [Theory, MemberData(nameof(Fixtures))]
    method TestCartTitleOverridesApplied (line 249) | [Theory, MemberData(nameof(Fixtures))]
    method TestExceptionFiredWhenExpectedForNonMatchingData (line 269) | [Theory, MemberData(nameof(Fixtures))]

FILE: Diz.Test/bugs/FileIoFixture.cs
  class FileIoFixture (line 11) | public class FileIoFixture
    method FileIoFixture (line 16) | public FileIoFixture()

FILE: Diz.Ui.Eto/DizEtoAppSettingsProvider.cs
  class DizEtoAppSettingsProvider (line 10) | public class DizEtoAppSettingsProvider : IDizAppSettings

FILE: Diz.Ui.Eto/DizUiEtoCompositionRoot.cs
  class DizUiEtoCompositionRoot (line 9) | [UsedImplicitly] public class DizUiEtoCompositionRoot : ICompositionRoot
    method Compose (line 11) | public void Compose(IServiceRegistry serviceRegistry)

FILE: Diz.Ui.Eto/EtoCommonGui.cs
  class EtoCommonGui (line 6) | public class EtoCommonGui : ICommonGui
    method PromptToConfirmAction (line 8) | public bool PromptToConfirmAction(string msg) =>
    method ShowError (line 11) | public void ShowError(string msg) =>
    method ShowWarning (line 14) | public void ShowWarning(string msg) =>
    method ShowMessage (line 17) | public void ShowMessage(string msg) =>

FILE: Diz.Ui.Eto/ui/EtoMainGridForm.cs
  class SampleMenuItem (line 12) | public class SampleMenuItem : Command
    method SampleMenuItem (line 14) | public SampleMenuItem()
    method OnExecuted (line 23) | protected override void OnExecuted(EventArgs e)
  class EtoMainGridForm (line 30) | public class EtoMainGridForm : Form, IMainGridWindowView
    method EtoMainGridForm (line 39) | public EtoMainGridForm(
    method ProjectController_ProjectChanged (line 69) | private void ProjectController_ProjectChanged(object sender, IProjectC...
    method Document_PropertyChanged (line 73) | private void Document_PropertyChanged(object? sender, PropertyChangedE...
    method CreateMenu (line 77) | private void CreateMenu()
    method CreateGui (line 100) | private void CreateGui()
    method GetGridData (line 233) | private IEnumerable<object> GetGridData()
    method SelectOffset (line 270) | public void SelectOffset(int pcOffset, ISnesNavigation.HistoryArgs? hi...
    method SelectOffsetWithOvershoot (line 274) | public void SelectOffsetWithOvershoot(int pcOffset, int overshootAmoun...
    method OnProjectOpenFail (line 282) | public void OnProjectOpenFail(string errorMsg)
    method OnProjectSaved (line 286) | public void OnProjectSaved()
    method OnExportFinished (line 290) | public void OnExportFinished(LogCreatorOutput.OutputResult result)
    method AskToSelectNewRomFilename (line 294) | public string AskToSelectNewRomFilename(string promptSubject, string p...
    method OnProjectOpenWarnings (line 299) | public void OnProjectOpenWarnings(IEnumerable<string> warnings)
    method BringFormToTop (line 303) | public void BringFormToTop() => Focus();

FILE: Diz.Ui.Eto/ui/EtoProgressForm.cs
  class EtoProgressForm (line 7) | public class EtoProgressForm : Dialog, IProgressView
    method EtoProgressForm (line 12) | public EtoProgressForm()
    method InitializeComponent (line 17) | private void InitializeComponent()
    method Show (line 25) | public void Show()
    method BringFormToTop (line 30) | public void BringFormToTop()
    method PromptDialog (line 35) | public bool PromptDialog()
    method Report (line 42) | public void Report(int value)
    method IsVisible (line 50) | public bool IsVisible() =>
    method SignalJobIsDone (line 53) | public void SignalJobIsDone() =>

FILE: Diz.Ui.Eto/ui/PlaceholderForm.cs
  class PlaceholderForm (line 6) | public class PlaceholderForm : Form
    method PlaceholderForm (line 8) | public PlaceholderForm ()

FILE: Diz.Ui.Views/ProjectViewer.cs
  class ProjectViewer (line 3) | public class ProjectViewer
Condensed preview — 242 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,437K chars).
[
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".github/workflows/dotnet.yml",
    "chars": 4034,
    "preview": "name: Build App\n\non: [ push, pull_request ]\n\njobs:\n\n  build:\n\n    runs-on: windows-latest\n\n    steps:\n      - name: Inje"
  },
  {
    "path": ".gitignore",
    "chars": 7304,
    "preview": "# CUSTOM STUFF\nDiztinGUIsh/test/\ndiztinguish.zip\nact.exe\n\n## Ignore Visual Studio temporary files, build results, and\n##"
  },
  {
    "path": ".gitmodules",
    "chars": 204,
    "preview": "[submodule \"Diz.LogWriter\"]\n\tpath = Diz.LogWriter\n\turl = https://github.com/DizTools/Diz.LogWriter\n[submodule \"Diz.Ui.Wi"
  },
  {
    "path": ".idea/.idea.DiztinGUIsh/.idea/.gitignore",
    "chars": 281,
    "preview": "# Default ignored files\n/shelf/\n/workspace.xml\n# Rider ignored files\n/modules.xml\n/contentModel.xml\n/.idea.DiztinGUIsh."
  },
  {
    "path": ".idea/.idea.DiztinGUIsh/.idea/.name",
    "chars": 11,
    "preview": "DiztinGUIsh"
  },
  {
    "path": ".idea/.idea.DiztinGUIsh/.idea/encodings.xml",
    "chars": 169,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\" addBOMForNewFiles=\"with BOM un"
  },
  {
    "path": ".idea/.idea.DiztinGUIsh/.idea/indexLayout.xml",
    "chars": 198,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"UserContentModel\">\n    <attachedFolders "
  },
  {
    "path": ".idea/.idea.DiztinGUIsh/.idea/vcs.xml",
    "chars": 301,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": ".run/Diz.Ui.Eto (Experimental GUI, don't use).run.xml",
    "chars": 1105,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"Diz.Ui.Eto (Experimental GUI, "
  },
  {
    "path": ".run/DiztinGUIsh - WinForms (USE THIS).run.xml",
    "chars": 1382,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"DiztinGUIsh - WinForms (USE TH"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 297,
    "preview": "<Project>\n    <PropertyGroup>\n        <DefineConstants>$(DefineConstants)</DefineConstants>\n    </PropertyGroup>\n    <Pr"
  },
  {
    "path": "Diz.App.Common/Diz.App.Common.csproj",
    "chars": 611,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Impli"
  },
  {
    "path": "Diz.App.Common/DizAppCompositionRoot.cs",
    "chars": 1166,
    "preview": "using Diz.Controllers.interfaces;\nusing Diz.Controllers.services;\nusing Diz.Core.services;\nusing Diz.Cpu._65816;\nusing "
  },
  {
    "path": "Diz.App.Common/Main.cs",
    "chars": 456,
    "preview": "using Diz.Controllers.interfaces;\nusing LightInject;\n\nnamespace Diz.App.Common;\n\npublic static class DizAppCommon\n{\n   "
  },
  {
    "path": "Diz.App.Common/Properties/AssemblyInfo.cs",
    "chars": 111,
    "preview": "using Diz.App.Common;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizAppCommonCompositionRoot))]"
  },
  {
    "path": "Diz.App.Eto/Diz.App.Eto.csproj",
    "chars": 1040,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <OutputType>WinExe</OutputType>\n        <TargetFramework"
  },
  {
    "path": "Diz.App.Eto/DizAppEtoCompositionRoot.cs",
    "chars": 491,
    "preview": "using Diz.App.Common;\nusing Diz.Controllers.interfaces;\nusing Diz.Ui.Eto;\nusing JetBrains.Annotations;\nusing LightInjec"
  },
  {
    "path": "Diz.App.Eto/DizEtoApp.cs",
    "chars": 729,
    "preview": "using System.Diagnostics;\nusing Diz.Controllers.interfaces;\nusing Diz.Ui.Eto.ui;\nusing Eto.Forms;\n\nnamespace Diz.App.Et"
  },
  {
    "path": "Diz.App.Eto/Program.cs",
    "chars": 298,
    "preview": "using Diz.App.Common;\n\nnamespace Diz.App.Eto;\n\ninternal static class Program\n{\n    [STAThread]\n    private static void "
  },
  {
    "path": "Diz.App.Eto/Properties/AssemblyInfo.cs",
    "chars": 105,
    "preview": "using Diz.App.Eto;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizAppEtoCompositionRoot))]"
  },
  {
    "path": "Diz.App.Eto/RegisterWinformsServices.cs",
    "chars": 1199,
    "preview": "using Diz.App.Common;\nusing Diz.Core.util;\nusing Diz.Ui.Eto;\nusing LightInject;\n\nnamespace Diz.App.Eto;\n\npublic static c"
  },
  {
    "path": "Diz.App.PowerShell/Cmdlets.cs",
    "chars": 1320,
    "preview": "#nullable enable\n\nusing System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Management.Automation;\n"
  },
  {
    "path": "Diz.App.PowerShell/Diz.App.PowerShell.csproj",
    "chars": 1090,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <TargetFramework>net9.0</T"
  },
  {
    "path": "Diz.App.PowerShell/DizPowerShellCompositionRoot.cs",
    "chars": 479,
    "preview": "using Diz.Core;\nusing LightInject;\n\nnamespace Diz.PowerShell;\n\npublic class DizPowerShellCompositionRoot : IComposition"
  },
  {
    "path": "Diz.App.PowerShell/DizPowershellLogger.cs",
    "chars": 595,
    "preview": "namespace Diz.PowerShell;\n\npublic class DizPowershellLogger : IDizLogger\n{\n    private readonly IPowershellLogger power"
  },
  {
    "path": "Diz.App.PowerShell/ProjectFileAssemblyExporter.cs",
    "chars": 1851,
    "preview": "using Diz.Core;\nusing Diz.Core.model;\nusing Diz.Core.util;\nusing Diz.LogWriter;\nusing Diz.LogWriter.util;\n\nnamespace Di"
  },
  {
    "path": "Diz.App.PowerShell/ProjectFileReader.cs",
    "chars": 701,
    "preview": "using Diz.Core;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\n\nnamespace Diz.PowerShell;\n\npublic class ProjectFil"
  },
  {
    "path": "Diz.App.PowerShell/Properties/AssemblyInfo.cs",
    "chars": 112,
    "preview": "using Diz.PowerShell;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizPowerShellCompositionRoot))]"
  },
  {
    "path": "Diz.App.PowerShell/Properties/launchSettings.json",
    "chars": 250,
    "preview": "{\n  \"profiles\": {\n    \"DizPowerShell\": {\n      \"commandName\": \"Executable\",\n      \"executablePath\": \"C:\\\\Program Files\\\\"
  },
  {
    "path": "Diz.App.PowerShell/PsInterfaces.cs",
    "chars": 344,
    "preview": "#nullable enable\n\nnamespace Diz.PowerShell;\n\npublic interface IPowershellLogger\n{\n    void WriteObject(object objectToS"
  },
  {
    "path": "Diz.App.PowerShell/ServiceContainerCmdletBase.cs",
    "chars": 504,
    "preview": "using System.Management.Automation;\nusing Diz.Core.util;\nusing LightInject;\n\nnamespace Diz.PowerShell;\n\npublic abstract"
  },
  {
    "path": "Diz.App.PowerShell/packages.lock.json",
    "chars": 50870,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {\n      \"GitInfo\": {\n        \"type\": \"Direct\",\n        \"requested\": "
  },
  {
    "path": "Diz.App.PowerShell/runner/debug-startup.ps1",
    "chars": 597,
    "preview": "$module = \"Diz.PowerShell\"\n$basepath = \".\\\"\n\necho \"Starting...\"\nImport-Module \"$($basepath)$($module).dll\"\n\nWRite-Host "
  },
  {
    "path": "Diz.App.Winforms/App.config",
    "chars": 706,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <runtime>\n        <!-- \n        allow loading of assemblies "
  },
  {
    "path": "Diz.App.Winforms/AppVersionInfo.cs",
    "chars": 1550,
    "preview": "using System.Diagnostics.CodeAnalysis;\nusing Diz.Core.Interfaces;\nusing Diz.Core.serialization.xml_serializer;\n\nnamespa"
  },
  {
    "path": "Diz.App.Winforms/Diz.App.Winforms.csproj",
    "chars": 3212,
    "preview": "<Project>\n  <Import Project=\"Sdk.props\" Sdk=\"Microsoft.NET.Sdk\" />\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputTyp"
  },
  {
    "path": "Diz.App.Winforms/Diz.App.Winforms.csproj.DotSettings",
    "chars": 394,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "Diz.App.Winforms/DizAppWinformsCompositionRoot.cs",
    "chars": 643,
    "preview": "using Diz.App.Common;\nusing Diz.Controllers.interfaces;\nusing Diz.Core.Interfaces;\nusing Diz.Ui.Winforms;\nusing Diz.Ui."
  },
  {
    "path": "Diz.App.Winforms/Program.cs",
    "chars": 1173,
    "preview": "#nullable enable\n\n// #define DEBUG_EXTRA_CRASH_HANDLING // for catching really stubborn crashes, like in databinding\n\nu"
  },
  {
    "path": "Diz.App.Winforms/Properties/Annotations.cs",
    "chars": 48162,
    "preview": "// Note from Dom/Diztinguish: Jetbrains added this. Not sure we really need it,\n// remove if you feel like it. probably"
  },
  {
    "path": "Diz.App.Winforms/Properties/AssemblyInfo.cs",
    "chars": 115,
    "preview": "using Diz.App.Winforms;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizAppWinformsCompositionRoot))]"
  },
  {
    "path": "Diz.App.Winforms/Properties/PublishProfiles/FolderProfile.pubxml",
    "chars": 604,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nhttps://go.microsoft.com/fwlink/?LinkID=208121. \n-->\n<Project ToolsVersion="
  },
  {
    "path": "Diz.App.Winforms/Properties/Resources.Designer.cs",
    "chars": 2762,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Diz.App.Winforms/Properties/Resources.resx",
    "chars": 5835,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Diz.App.Winforms/RegisterWinformsServices.cs",
    "chars": 1224,
    "preview": "using Diz.App.Common;\nusing Diz.Core.util;\nusing Diz.Ui.Winforms;\nusing LightInject;\n\nnamespace Diz.App.Winforms;\n\npubli"
  },
  {
    "path": "Diz.App.Winforms/build/TidyPublishDir.targets",
    "chars": 3992,
    "preview": "<!-- \nThis file is invoked for publish targets \nOn publish, move some files around to make the distribution distro look "
  },
  {
    "path": "Diz.App.Winforms/dist/docs/HELP.md",
    "chars": 32543,
    "preview": "DiztinGUIsh Introduction\n------------------------\n\nDiztinGUIsh is a Super NES ROM disassembler. Open a ROM file, flag e"
  },
  {
    "path": "Diz.App.Winforms/dist/docs/Library Licenses.txt",
    "chars": 4177,
    "preview": "Castle.Core\thttp://www.apache.org/licenses/LICENSE-2.0.html\tApache 2.0\t\t\t\t\t\t\t\t\t\t\t\t\nxunit\thttps://raw.githubusercontent.c"
  },
  {
    "path": "Diz.App.Winforms/dist/docs/hardware_registers.csv",
    "chars": 3840,
    "preview": "002100,SNES_INIDISP\n002101,SNES_OBJSEL\n002102,SNES_OAMADDL\n002103,SNES_OAMADDH\n002104,SNES_OAMDATA\n002105,SNES_BGMODE\n00"
  },
  {
    "path": "Diz.App.Winforms/packages.lock.json",
    "chars": 121396,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0-windows7.0\": {\n      \"GitInfo\": {\n        \"type\": \"Direct\",\n        \"r"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/Diz.Controllers.csproj",
    "chars": 760,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Genera"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/packages.lock.json",
    "chars": 44261,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {\n      \"LightInject\": {\n        \"type\": \"Direct\",\n        \"requeste"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/AssemblyInfo.cs",
    "chars": 123,
    "preview": "using Diz.Controllers.services;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizControllersCompositionRoot"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/IImportRomDialogController.cs",
    "chars": 716,
    "preview": "using Diz.Controllers.interfaces;\nusing Diz.Core.serialization;\nusing Diz.Cpu._65816.import;\n\nnamespace Diz.Controllers"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/IProjectView.cs",
    "chars": 1650,
    "preview": "using System;\nusing System.Collections.Generic;\nusing Diz.Controllers.interfaces;\nusing Diz.Core.model;\nusing Diz.LogWr"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/ImportROMDialogController.cs",
    "chars": 5501,
    "preview": "using System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Diagnostics.CodeA"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/LogCreatorExportSettingsEditorController.cs",
    "chars": 5439,
    "preview": "#nullable enable\n\nusing System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Ru"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/MarkManyController.cs",
    "chars": 1774,
    "preview": "using System;\nusing System.Collections.Generic;\nusing Diz.Controllers.interfaces;\nusing Diz.Core;\nusing Diz.Core.comman"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/NavigationEntry.cs",
    "chars": 981,
    "preview": "using System.ComponentModel;\nusing System.ComponentModel.DataAnnotations;\nusing Diz.Core.model.snes;\nusing Diz.Core.uti"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/ProgressBarWorker.cs",
    "chars": 5082,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing Diz.Control"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/ProjectController.cs",
    "chars": 15182,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Dia"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/ProjectOpenerGuiController.cs",
    "chars": 1809,
    "preview": "namespace Diz.Controllers.controllers;\n\n// this is for Diz3, re-enable if still useful later.\n\n/*public class ProjectOp"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/ProjectsController.cs",
    "chars": 5518,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Diz"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/controllers/StartFormController.cs",
    "chars": 709,
    "preview": "// using System;\n// using System.Diagnostics;\n// using Diz.Controllers.interfaces;\n//\n// namespace Diz.Controllers.cont"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/interfaces/IControllers.cs",
    "chars": 4859,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing Diz.Controllers.controllers;\nusing D"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/interfaces/IViewers.cs",
    "chars": 4106,
    "preview": "using System;\nusing System.Collections.Generic;\nusing Diz.Controllers.controllers;\nusing Diz.Core.commands;\nusing Diz.C"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/interfaces/Interfaces.cs",
    "chars": 2113,
    "preview": "using System;\nusing Diz.Controllers.controllers;\nusing Diz.Controllers.util;\nusing Diz.Core.model;\n// using Diz.Core.mo"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/services/Registration.cs",
    "chars": 3153,
    "preview": "// using Diz.Controllers.controllers;\n\nusing Diz.Controllers.controllers;\nusing Diz.Controllers.interfaces;\nusing Diz.C"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/util/DizDocument.cs",
    "chars": 1771,
    "preview": "#nullable enable\nusing System.ComponentModel;\nusing Diz.Controllers.controllers;\nusing Diz.Controllers.interfaces;\nusin"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/util/LargeFilesReader.cs",
    "chars": 2198,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing Diz.Controllers.controllers;\nusing Diz.Controlle"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers/src/util/RomByteRowBase.cs",
    "chars": 11125,
    "preview": "// using Diz.Core.model.byteSources;\n\n#if DIZ_3_BRANCH\nnamespace Diz.Controllers.util\n{\n    public class RomByteRowBase"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers.Test/Diz.Controllers.Test/Diz.Controllers.Test.csproj",
    "chars": 2713,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Nullab"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers.Test/Diz.Controllers.Test/src/ImportRomDialogontroller.cs",
    "chars": 4969,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Diz.Controllers.controllers;\nusing Diz.Control"
  },
  {
    "path": "Diz.Controllers/Diz.Controllers.Test/Diz.Controllers.Test/src/LogCreatorSettingsEditorControllerTests.cs",
    "chars": 1774,
    "preview": "#nullable enable\n\nusing System;\nusing Diz.Controllers.controllers;\nusing Diz.Controllers.interfaces;\nusing Diz.Core.exp"
  },
  {
    "path": "Diz.Controllers/packages.lock.json",
    "chars": 12869,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net6.0\": {\n      \"GitInfo\": {\n        \"type\": \"Direct\",\n        \"requested\": "
  },
  {
    "path": "Diz.Core/Diz.Core.csproj",
    "chars": 1783,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net9.0</TargetFramework>\n    <UseWindowsForms"
  },
  {
    "path": "Diz.Core/Interfaces.cs",
    "chars": 1205,
    "preview": "#nullable enable\n\nusing Diz.Core.model;\nusing Diz.Core.model.snes;\n\nnamespace Diz.Core;\n\npublic interface IDataRange\n{\n"
  },
  {
    "path": "Diz.Core/Properties/AssemblyInfo.cs",
    "chars": 117,
    "preview": "using Diz.Core.services;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizCoreServicesCompositionRoot))]"
  },
  {
    "path": "Diz.Core/app.config",
    "chars": 97,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Diz.Core/commands/Commands.cs",
    "chars": 396,
    "preview": "namespace Diz.Core.commands;\n\npublic class MarkCommand\n{\n    public enum MarkManyProperty\n    {\n        Flag = 0,\n     "
  },
  {
    "path": "Diz.Core/datasubset/DataSubset.cs",
    "chars": 9024,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Dia"
  },
  {
    "path": "Diz.Core/datasubset/DataSubsetSupport.cs",
    "chars": 4912,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\n\nnamespace Diz.Core.datasubset\n{\n    public abstract class DataSub"
  },
  {
    "path": "Diz.Core/datasubset/DataSubsetWithSelection.cs",
    "chars": 3838,
    "preview": "using System;\nusing System.Diagnostics;\nusing Diz.Core.util;\n\nnamespace Diz.Core.datasubset\n{\n    // controls what rows"
  },
  {
    "path": "Diz.Core/export/LogWriterSettings.cs",
    "chars": 3917,
    "preview": "#nullable enable\n\nusing System.IO;\nusing System.Xml.Serialization;\nusing Diz.Core.util;\n\n/*\n * TODO:\n * Couple things f"
  },
  {
    "path": "Diz.Core/export/LogWriterSettingsValidator.cs",
    "chars": 2954,
    "preview": "using System.IO;\nusing Diz.Core.util;\nusing FluentValidation;\n\nnamespace Diz.Core.export\n{\n    public class LogWriterSe"
  },
  {
    "path": "Diz.Core/model/Annotation.cs",
    "chars": 16938,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusin"
  },
  {
    "path": "Diz.Core/model/ArchProvider.cs",
    "chars": 967,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Diz.Core.Interfaces;"
  },
  {
    "path": "Diz.Core/model/Extensions.cs",
    "chars": 1412,
    "preview": "using Diz.Core.Interfaces;\n\nnamespace Diz.Core.model\n{\n    public static class DataExtensions\n    {\n        #region Uns"
  },
  {
    "path": "Diz.Core/model/LabelProvider.cs",
    "chars": 17505,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Diagnostics;\nusing Sys"
  },
  {
    "path": "Diz.Core/model/Project.cs",
    "chars": 11639,
    "preview": "#nullable enable\n\nusing System.ComponentModel;\nusing System.ComponentModel.DataAnnotations;\nusing System.IO;\nusing Syst"
  },
  {
    "path": "Diz.Core/model/ProjectFactory.cs",
    "chars": 2857,
    "preview": "using System;\nusing Diz.Core.serialization;\n\nnamespace Diz.Core.model;\n\npublic interface IProjectFactory\n{\n    public I"
  },
  {
    "path": "Diz.Core/model/ProjectImportSettingsFactory.cs",
    "chars": 458,
    "preview": "using Diz.Core.serialization;\n\nnamespace Diz.Core.model;\n\npublic interface IProjectImportSettingsFactory\n{\n    IRomImpo"
  },
  {
    "path": "Diz.Core/model/ROMByte.cs",
    "chars": 4614,
    "preview": "using System.ComponentModel;\nusing System.Threading;\nusing Diz.Core.Interfaces;\nusing Diz.Core.util;\n\n#nullable enable\n"
  },
  {
    "path": "Diz.Core/model/RomBytes.cs",
    "chars": 5621,
    "preview": "using System.Collections;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Collecti"
  },
  {
    "path": "Diz.Core/model/project/DataUtils.cs",
    "chars": 406,
    "preview": "using Diz.Core.model.snes;\n\nnamespace Diz.Core.model.project;\n\npublic class DataFactory : IDataFactory\n{\n    // TODO: m"
  },
  {
    "path": "Diz.Core/model/project/LinkedRomBytesFileSearchProvider.cs",
    "chars": 3713,
    "preview": "#nullable enable\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing Diz.Core.util;\nusing JetBrains.Annotati"
  },
  {
    "path": "Diz.Core/model/project/ProjectRomBytesInit.cs",
    "chars": 83,
    "preview": "#nullable enable\n\n// TODO: remove this file\nnamespace Diz.Core.model.project\n{\n\n\n}"
  },
  {
    "path": "Diz.Core/model/snes/Data.cs",
    "chars": 8961,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusin"
  },
  {
    "path": "Diz.Core/model/snes/DataTags.cs",
    "chars": 897,
    "preview": "using Diz.Core.Interfaces;\n\nnamespace Diz.Core.model.snes;\n\npublic class SampleDataGenerationTag : IDataTag\n{\n    /// <"
  },
  {
    "path": "Diz.Core/packages.lock.json",
    "chars": 43089,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {\n      \"ExtendedXmlSerializer\": {\n        \"type\": \"Direct\",\n       "
  },
  {
    "path": "Diz.Core/serialization/FileByteProviderMultipleFiles.cs",
    "chars": 6915,
    "preview": "#nullable enable\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;"
  },
  {
    "path": "Diz.Core/serialization/FileByteProviderSingleFile.cs",
    "chars": 333,
    "preview": "#nullable enable\nusing System.IO;\n\nnamespace Diz.Core.serialization;\n\npublic class FileByteProviderSingleFile : IFileBy"
  },
  {
    "path": "Diz.Core/serialization/ImportSettings.cs",
    "chars": 2363,
    "preview": "using System.Collections.Generic;\nusing System.ComponentModel;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing D"
  },
  {
    "path": "Diz.Core/serialization/ProjectFileManager.cs",
    "chars": 11700,
    "preview": "#nullable enable\n\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing "
  },
  {
    "path": "Diz.Core/serialization/ProjectSerializer.cs",
    "chars": 1445,
    "preview": "using System.Diagnostics;\nusing System.IO;\nusing Diz.Core.model;\nusing Diz.Core.serialization.xml_serializer;\n\nnamespac"
  },
  {
    "path": "Diz.Core/serialization/binary_serializer_old/BinarySerializer.cs",
    "chars": 11507,
    "preview": "#if ENABLE_LEGACY_BINARY_SERIALIZER\n\nusing System;\nusing System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusi"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/MigrationRunner.cs",
    "chars": 5103,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing JetBrains.Annotations;\n\nnamespace Diz.Core.ser"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/PostSerializeMigrations.cs",
    "chars": 933,
    "preview": "using System.Collections.Generic;\n\nnamespace Diz.Core.serialization.xml_serializer\n{\n    public interface IMigrationEve"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/ProjectXMLSerializer.cs",
    "chars": 10735,
    "preview": "using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Text;\nusing Syste"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/RepeaterCompression.cs",
    "chars": 2799,
    "preview": "using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\n\nnamespace Diz.Core.ser"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/RomByteEncoding.cs",
    "chars": 7761,
    "preview": "// #define EXTRA_DEBUG_CHECKS\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.I"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/RomBytesXMLSerializer.cs",
    "chars": 17633,
    "preview": "// define to do some extra checking as we save the data out\n// #define EXTRA_DEBUG_CHECKS\n\nusing System;\nusing System.C"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/SubstitutionCompression.cs",
    "chars": 2671,
    "preview": "using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\n\nnamespace Diz.Core.serialization.xml_se"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/XMLSerializerSupport.cs",
    "chars": 260,
    "preview": "using Diz.Core.model;\nusing ExtendedXmlSerializer.Configuration;\n\nnamespace Diz.Core.serialization.xml_serializer;\n\npub"
  },
  {
    "path": "Diz.Core/serialization/xml_serializer/XmlSerializerFactory.cs",
    "chars": 5551,
    "preview": "using System;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing Diz.Core.Interfaces;\nusing Diz.Core."
  },
  {
    "path": "Diz.Core/services/CoreServices.cs",
    "chars": 2820,
    "preview": "using System;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.model.project;\nusing Diz.Core.model.snes;"
  },
  {
    "path": "Diz.Core/util/ByteUtil.cs",
    "chars": 10180,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing S"
  },
  {
    "path": "Diz.Core/util/ChecksumUtil.cs",
    "chars": 4656,
    "preview": "// ReSharper disable InconsistentNaming\n// ReSharper disable IdentifierTypo\n\nusing System.Collections.Generic;\nusing Sy"
  },
  {
    "path": "Diz.Core/util/CorrectingRange.cs",
    "chars": 3196,
    "preview": "using System;\nusing System.Diagnostics;\n\nnamespace Diz.Core.util\n{\n    // when any parameter is set, the others will ad"
  },
  {
    "path": "Diz.Core/util/Fake64Encoding.cs",
    "chars": 4236,
    "preview": "using System.Collections.Generic;\n\nnamespace Diz.Core.util\n{\n    // this is base64 EXCEPT:\n    // 1) char \"A\" and \"0\" s"
  },
  {
    "path": "Diz.Core/util/FsUtils.cs",
    "chars": 586,
    "preview": "#nullable enable\n\nusing System.IO;\n\nnamespace Diz.Core.util;\n\npublic interface IFilesystemService\n{\n    bool DirectoryE"
  },
  {
    "path": "Diz.Core/util/LabelSearchTerms.cs",
    "chars": 5528,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing Diz.Core.Interface"
  },
  {
    "path": "Diz.Core/util/ParentAwareCollection.cs",
    "chars": 1830,
    "preview": "using System.Collections.ObjectModel;\nusing System.Xml.Serialization;\nusing JetBrains.Annotations;\n\nnamespace Diz.Core."
  },
  {
    "path": "Diz.Core/util/Profiler.cs",
    "chars": 3357,
    "preview": "#define JETBRAINS_PROFILING_ENABLED\n\nusing System;\nusing JetBrains.Profiler.SelfApi;\n#if JETBRAINS_PROFILING_ENABLED\n\n#"
  },
  {
    "path": "Diz.Core/util/RomUtil.cs",
    "chars": 26105,
    "preview": "using System.Collections.Generic;\nusing System.IO;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing JetBrains.Ann"
  },
  {
    "path": "Diz.Core/util/ServiceProvider.cs",
    "chars": 645,
    "preview": "using LightInject;\n\nnamespace Diz.Core.util;\n\npublic static class DizServiceProvider\n{\n    // Thou shalt not create a g"
  },
  {
    "path": "Diz.Core/util/Util.cs",
    "chars": 16582,
    "preview": "#nullable enable\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;"
  },
  {
    "path": "Diz.Core/util/WorkerTaskManager.cs",
    "chars": 3599,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Threading;\nusing System.Threadin"
  },
  {
    "path": "Diz.Core/vendor/LightInject.AutoFactory.cs",
    "chars": 19008,
    "preview": "/*********************************************************************************\n    The MIT License (MIT)\n\n    Copyr"
  },
  {
    "path": "Diz.Core.Interfaces/AssemblyInfo.cs",
    "chars": 112,
    "preview": "// probably won't ever need this \n// [assembly: CompositionRootType(typeof(ServiceRegistrationCoreInterfaces))]"
  },
  {
    "path": "Diz.Core.Interfaces/CpuInterfaces.cs",
    "chars": 545,
    "preview": "namespace Diz.Core.Interfaces;\n\n// wonder if we could ditch this one by using extension methods\npublic interface IStepp"
  },
  {
    "path": "Diz.Core.Interfaces/Diz.Core.Interfaces.csproj",
    "chars": 427,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Implic"
  },
  {
    "path": "Diz.Core.Interfaces/Enums.cs",
    "chars": 2257,
    "preview": "using System.ComponentModel;\nusing System.Drawing;\n\nnamespace Diz.Core.Interfaces;\n\n[AttributeUsage(AttributeTargets.Al"
  },
  {
    "path": "Diz.Core.Interfaces/LabelInterfaces.cs",
    "chars": 3740,
    "preview": "using System.Collections.ObjectModel;\nusing System.ComponentModel;\n\nnamespace Diz.Core.Interfaces;\n\npublic interface IR"
  },
  {
    "path": "Diz.Core.Interfaces/ModelInterfaces.cs",
    "chars": 7431,
    "preview": "using System.Collections.Specialized;\nusing System.ComponentModel;\n\n#if DIZ_3_BRANCH\nusing Diz.Core.model.byteSources;\n"
  },
  {
    "path": "Diz.Core.Interfaces/OtherInterfaces.cs",
    "chars": 1082,
    "preview": "using System.Collections.ObjectModel;\n\nnamespace Diz.Core.Interfaces;\n\npublic interface IRegionProvider\n{\n    Observabl"
  },
  {
    "path": "Diz.Core.Interfaces/packages.lock.json",
    "chars": 60,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {}\n  }\n}"
  },
  {
    "path": "Diz.Cpu.65816/Diz.Cpu.65816.csproj",
    "chars": 592,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Genera"
  },
  {
    "path": "Diz.Cpu.65816/packages.lock.json",
    "chars": 43388,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {\n      \"ExtendedXmlSerializer\": {\n        \"type\": \"Transitive\",\n   "
  },
  {
    "path": "Diz.Cpu.65816/src/AddRomDataCommand.cs",
    "chars": 4688,
    "preview": "using Diz.Core.model;\nusing Diz.Core.model.project;\nusing Diz.Core.serialization;\nusing Diz.Core.serialization.xml_seri"
  },
  {
    "path": "Diz.Cpu.65816/src/AddRomDataCommandValidator.cs",
    "chars": 3389,
    "preview": "#nullable enable\n\nusing Diz.Core.model;\nusing Diz.Core.util;\nusing FluentValidation;\n\nnamespace Diz.Cpu._65816;\n\npublic"
  },
  {
    "path": "Diz.Cpu.65816/src/AssemblyInfo.cs",
    "chars": 108,
    "preview": "using Diz.Cpu._65816;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizCpu65816ServiceRoot))]\n\n"
  },
  {
    "path": "Diz.Cpu.65816/src/AutoStepper65816.cs",
    "chars": 4380,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model;\n\nnamespace Diz.Cpu._65816;\n\npublic class AutoStepper65816<TDataSource>"
  },
  {
    "path": "Diz.Cpu.65816/src/CPU65C816.cs",
    "chars": 51210,
    "preview": "using System.Diagnostics;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.util;\n\nnamespace Diz.Cpu._658"
  },
  {
    "path": "Diz.Cpu.65816/src/Cpu.cs",
    "chars": 3126,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model;\n\nnamespace Diz.Cpu._65816;\n\npublic class Cpu<TByteSource> where TByteS"
  },
  {
    "path": "Diz.Cpu.65816/src/CpuDispatcher.cs",
    "chars": 791,
    "preview": "using Diz.Core.Interfaces;\n\nnamespace Diz.Cpu._65816;\n\n// TODO: has a lot of memory allocation with this approach. if t"
  },
  {
    "path": "Diz.Cpu.65816/src/CpuUtils.cs",
    "chars": 5085,
    "preview": "namespace Diz.Cpu._65816;\n\npublic class CpuUtils\n{\n    public class OperandOverride\n    {\n        // completely overrid"
  },
  {
    "path": "Diz.Cpu.65816/src/CpuVectorTable.cs",
    "chars": 3032,
    "preview": "using Diz.Cpu._65816.import;\n\nnamespace Diz.Cpu._65816;\n\npublic static class CpuVectorTable\n{\n    // = FFE0 (start of v"
  },
  {
    "path": "Diz.Cpu.65816/src/DataAddSnesApiDecorator.cs",
    "chars": 679,
    "preview": "using Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model.snes;\nusing JetBrains.Annotations;\n\nnamespace Diz.Cpu._"
  },
  {
    "path": "Diz.Cpu.65816/src/SampleRomData.cs",
    "chars": 17880,
    "preview": "using System.Diagnostics;\nusing Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.model.snes;\nu"
  },
  {
    "path": "Diz.Cpu.65816/src/ServiceRegistration.cs",
    "chars": 3280,
    "preview": "using Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\nusing Diz.Core.serializa"
  },
  {
    "path": "Diz.Cpu.65816/src/SnesData.cs",
    "chars": 32007,
    "preview": "using System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Co"
  },
  {
    "path": "Diz.Cpu.65816/src/import/CachedVectorTableEntries.cs",
    "chars": 936,
    "preview": "namespace Diz.Cpu._65816.import;\n\n\npublic interface IVectorTableCacheData\n{\n    public List<CpuVectorTable.VectorRomEnt"
  },
  {
    "path": "Diz.Cpu.65816/src/import/ISnesRomImportSettingsBuilder.cs",
    "chars": 1003,
    "preview": "using System.ComponentModel;\nusing Diz.Core.Interfaces;\nusing Diz.Core.serialization;\nusing JetBrains.Annotations;\n\nnam"
  },
  {
    "path": "Diz.Cpu.65816/src/import/ImportRomSettingsBuilder.cs",
    "chars": 5682,
    "preview": "#nullable enable\n\nusing System.ComponentModel;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.model.pr"
  },
  {
    "path": "Diz.Cpu.65816/src/import/ImportUtils.cs",
    "chars": 1680,
    "preview": "using System.Diagnostics;\nusing Diz.Core;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\n\nnamespace Diz.Cpu._65816"
  },
  {
    "path": "Diz.Cpu.65816/src/import/MigrationBugfix050JapaneseText.cs",
    "chars": 3631,
    "preview": "using System.Diagnostics;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\nusing Diz.Core.serialization.xml_serializ"
  },
  {
    "path": "Diz.Cpu.65816/src/import/MigrationNoOp.cs",
    "chars": 756,
    "preview": "using Diz.Core.serialization.xml_serializer;\nusing JetBrains.Annotations;\n\nnamespace Diz.Cpu._65816.import;\n\n// A migra"
  },
  {
    "path": "Diz.Cpu.65816/src/import/SnesDefaultSettingsFactory.cs",
    "chars": 879,
    "preview": "using Diz.Core.model;\nusing Diz.Core.serialization;\nusing JetBrains.Annotations;\n\nnamespace Diz.Cpu._65816.import;\n\n[Us"
  },
  {
    "path": "Diz.Cpu.65816/src/import/SnesRomAnalyzer.cs",
    "chars": 3464,
    "preview": "using System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing Diz.Core.Interfaces;\nusing Diz.Core.util;\nusi"
  },
  {
    "path": "Diz.Cpu.65816/src/import/SnesVectorNames.cs",
    "chars": 2456,
    "preview": "using System.Diagnostics.CodeAnalysis;\n\nnamespace Diz.Cpu._65816.import;\n\n[SuppressMessage(\"ReSharper\", \"InconsistentNa"
  },
  {
    "path": "Diz.Import/Diz.Import.csproj",
    "chars": 526,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n    <PropertyGroup>\n        <TargetFramework>net9.0</TargetFramework>\n        <Genera"
  },
  {
    "path": "Diz.Import/packages.lock.json",
    "chars": 43565,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net9.0\": {\n      \"ExtendedXmlSerializer\": {\n        \"type\": \"Transitive\",\n   "
  },
  {
    "path": "Diz.Import/src/AssemblyInfo.cs",
    "chars": 108,
    "preview": "using Diz.Import;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizImportServiceRegistration))]"
  },
  {
    "path": "Diz.Import/src/LabelImporter.cs",
    "chars": 3838,
    "preview": "using System.Globalization;\nusing System.Text.RegularExpressions;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusin"
  },
  {
    "path": "Diz.Import/src/LabelImporterCsv.cs",
    "chars": 878,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.util;\n\nnamespace Diz.Import;\n\npublic class LabelImporte"
  },
  {
    "path": "Diz.Import/src/ServiceRegistration.cs",
    "chars": 187,
    "preview": "using LightInject;\n\nnamespace Diz.Import;\n\npublic class DizImportServiceRegistration : ICompositionRoot\n{\n    public vo"
  },
  {
    "path": "Diz.Import/src/bizhawk/BizHawkCdlImporter.cs",
    "chars": 3132,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Cpu._65816;\n\nnamespace Diz.Import.bizhawk;\n\npublic class BizHawkCdlImporter\n{\n    "
  },
  {
    "path": "Diz.Import/src/bsnes/BsnesSymbolLabelImporter.cs",
    "chars": 3140,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model;\n\nnamespace Diz.Import.bsnes;\n\n// there's a few different flavors of .s"
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BSNESImportStreamProcessor.cs",
    "chars": 12876,
    "preview": "// #define PROFILING\n\nusing System.Collections.Concurrent;\nusing System.Diagnostics;\nusing Diz.Core.util;\nusing ICSharp"
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BSNESTraceLogCapture.cs",
    "chars": 17256,
    "preview": "// #define PROFILING\n\nusing System.Diagnostics;\nusing System.Net;\nusing System.Net.Sockets;\nusing Diz.Core.util;\nusing "
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BSNESTraceLogImporter.cs",
    "chars": 10829,
    "preview": "using System.Collections.Concurrent;\nusing Diz.Core.Interfaces;\nusing Diz.Cpu._65816;\n\nnamespace Diz.Import.bsnes.trace"
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Caching.cs",
    "chars": 2319,
    "preview": "namespace Diz.Import.bsnes.tracelog;\n\npublic partial class BsnesTraceLogImporter\n{\n    // PERFORMANCE\n    // this code "
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.ModificationsList.cs",
    "chars": 3388,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model;\n\nnamespace Diz.Import.bsnes.tracelog;\n\npublic partial class BsnesTrace"
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Parsers.cs",
    "chars": 6040,
    "preview": "using System.Diagnostics;\nusing Diz.Core.util;\n\nnamespace Diz.Import.bsnes.tracelog;\n\npublic partial class BsnesTraceLo"
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Stats.cs",
    "chars": 1343,
    "preview": "namespace Diz.Import.bsnes.tracelog;\n\npublic partial class BsnesTraceLogImporter\n{\n    public struct Stats\n    {\n      "
  },
  {
    "path": "Diz.Import/src/bsnes/tracelog/BsnesTraceLogImporter.Util.cs",
    "chars": 894,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.util;\n\nnamespace Diz.Import.bsnes.tracelog;\n\npublic partial class BsnesTraceL"
  },
  {
    "path": "Diz.Import/src/bsnes/usagemap/BSNESUsageMapImporter.cs",
    "chars": 3685,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Cpu._65816;\n\nnamespace Diz.Import.bsnes.usagemap;\n\npublic class BsnesUsageMapImpor"
  },
  {
    "path": "Diz.Test/Diz.Test.csproj",
    "chars": 3939,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <UseWindowsForms>false</UseWindowsForms>\n    <GenerateAssembly"
  },
  {
    "path": "Diz.Test/Properties/AssemblyInfo.cs",
    "chars": 106,
    "preview": "using Diz.Test.Utils;\nusing LightInject;\n\n[assembly: CompositionRootType(typeof(DizTestCompositionRoot))]"
  },
  {
    "path": "Diz.Test/Resources/asartestrun.asm",
    "chars": 697,
    "preview": "                       hirom                                ;      |        |      ;  \n                                "
  },
  {
    "path": "Diz.Test/Resources/emptyrom.asm",
    "chars": 507,
    "preview": "                                                            ;      |        |      ;\n                       lorom      "
  },
  {
    "path": "Diz.Test/Resources/samplerom-a-few-lines.asm",
    "chars": 610,
    "preview": "                       lorom                                ;      |        |      ;  \n                       ORG $8080"
  },
  {
    "path": "Diz.Test/Resources/serialize-dictionary-test.xml",
    "chars": 571,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<SerializerDictionaryTest-TestRoot xmlns:sys=\"https://extendedxmlserializer.gith"
  },
  {
    "path": "Diz.Test/Tests/LogCreatorTests/AssemblyStrings.cs",
    "chars": 882,
    "preview": "using System.Collections.Generic;\nusing Diz.LogWriter;\nusing FluentAssertions;\nusing Xunit;\n\nnamespace Diz.Test.Tests.L"
  },
  {
    "path": "Diz.Test/Tests/LogCreatorTests/LogCreator.cs",
    "chars": 5004,
    "preview": "using System.Linq;\nusing Diz.Core;\nusing Diz.Core.export;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Co"
  },
  {
    "path": "Diz.Test/Tests/PerformanceTests/TraceLogPerformanceTests.cs",
    "chars": 3165,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Logger"
  },
  {
    "path": "Diz.Test/Tests/ProjectSessionTest.cs",
    "chars": 368,
    "preview": "using Diz.Core.model;\nusing FluentAssertions;\nusing Xunit;\n\nnamespace Diz.Test.Tests;\n\npublic class ProjectSessionTest\n"
  },
  {
    "path": "Diz.Test/Tests/RomInterfaceTests/AccessTests.cs",
    "chars": 3541,
    "preview": "// everything here was migrated to AccessTests.cs\n\nusing System.Collections.Generic;\nusing Diz.Core.Interfaces;\nusing D"
  },
  {
    "path": "Diz.Test/Tests/RomInterfaceTests/CartTitleTests.cs",
    "chars": 7959,
    "preview": "using System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Xml;\nusing Diz.Core.Interfaces;\nusing Diz."
  },
  {
    "path": "Diz.Test/Tests/RomInterfaceTests/TestServiceInterfaces.cs",
    "chars": 1416,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Diz.Controllers.interfaces;\nusing Diz.Test.Uti"
  },
  {
    "path": "Diz.Test/Tests/RomModeDetectionTests.cs",
    "chars": 2389,
    "preview": "using Diz.Core.Interfaces;\nusing Diz.Core.model.project;\nusing Diz.Core.util;\nusing Diz.Cpu._65816.import;\nusing Diz.Te"
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/CompressionTest.cs",
    "chars": 2939,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\nusing Diz.Core.serialization.xml_serializer;\nusing Xunit;\n\nnamespa"
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/LoadSavePerformanceTests.cs",
    "chars": 1873,
    "preview": "using System.Diagnostics;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\nusing Diz.Test.Utils;\nusing Xunit;\nusing "
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/MigrationTests.cs",
    "chars": 5777,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Diz.Core.serialization;\nusing"
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/ProjectLoadSaveTest.cs",
    "chars": 2775,
    "preview": "using System;\nusing System.Linq;\nusing Diz.Core.model;\nusing Diz.Core.serialization;\nusing Diz.Core.serialization.xml_s"
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/ProjectServicesTests.cs",
    "chars": 1215,
    "preview": "using System;\nusing Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.model.project;\nusing Diz."
  },
  {
    "path": "Diz.Test/Tests/SerializationTests/RomByteTests.cs",
    "chars": 2336,
    "preview": "using Diz.Core;\nusing Diz.Core.Interfaces;\nusing Diz.Core.model;\nusing Diz.Core.model.snes;\nusing Diz.Cpu._65816;\nusing"
  },
  {
    "path": "Diz.Test/Tests/TracelogTests/TraceLogTests.cs",
    "chars": 4756,
    "preview": "using System.Threading;\nusing Diz.Import.bsnes.tracelog;\nusing Xunit;\n\nnamespace Diz.Test\n{\n    public static class Tra"
  }
]

// ... and 42 more files (download for full content)

About this extraction

This page contains the full source code of the IsoFrieze/DiztinGUIsh GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 242 files (1.3 MB), approximately 366.9k tokens, and a symbol index with 1789 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!