Full Code of genaray/Arch.Extended for AI

master 29b34ab00e5f cached
114 files
566.8 KB
136.8k tokens
922 symbols
1 requests
Download .txt
Showing preview only (606K chars total). Download the full file or copy to clipboard to get everything.
Repository: genaray/Arch.Extended
Branch: master
Commit: 29b34ab00e5f
Files: 114
Total size: 566.8 KB

Directory structure:
gitextract_j5eynvpp/

├── .gitattributes
├── .github/
│   └── workflows/
│       └── main.yml
├── .gitignore
├── Arch.AOT.SourceGenerator/
│   ├── Arch.AOT.SourceGenerator.csproj
│   ├── ComponentType.cs
│   ├── Extensions/
│   │   └── StringBuilderExtensions.cs
│   └── SourceGenerator.cs
├── Arch.EventBus/
│   ├── Arch.EventBus.csproj
│   ├── EventBus.cs
│   ├── Hooks.cs
│   ├── MethodSymbolExtensions.cs
│   └── SourceGenerator.cs
├── Arch.Extended.Sample/
│   ├── Arch.Extended.Sample.csproj
│   ├── Components.cs
│   ├── Extensions.cs
│   ├── Game.cs
│   ├── Program.cs
│   ├── Serializer.cs
│   └── Systems.cs
├── Arch.Extended.sln
├── Arch.Extended.sln.DotSettings
├── Arch.LowLevel/
│   ├── Arch.LowLevel.csproj
│   ├── Array.cs
│   ├── Enumerators.cs
│   ├── Jagged/
│   │   ├── JaggedArray.cs
│   │   ├── SparseJaggedArray.cs
│   │   ├── UnsafeJaggedArray.cs
│   │   └── UnsafeSparseJaggedArray.cs
│   ├── Resources.cs
│   ├── UnsafeArray.cs
│   ├── UnsafeList.cs
│   ├── UnsafeQueue.cs
│   └── UnsafeStack.cs
├── Arch.LowLevel.Tests/
│   ├── Arch.LowLevel.Tests.csproj
│   ├── ArrayTest.cs
│   ├── Jagged/
│   │   └── JaggedArrayTest.cs
│   ├── ResourcesTest.cs
│   ├── UnsafeArrayTest.cs
│   ├── UnsafeListTest.cs
│   ├── UnsafeQueueTest.cs
│   ├── UnsafeStackTest.cs
│   └── Usings.cs
├── Arch.Persistence/
│   ├── Arch.Persistence.csproj
│   ├── Binary.cs
│   ├── Json.cs
│   ├── Serializer.cs
│   └── StreamBufferWriter.cs
├── Arch.Persistence.Tests/
│   ├── Arch.Persistence.Tests.csproj
│   ├── PersistenceTest.cs
│   └── Usings.cs
├── Arch.Relationships/
│   ├── Arch.Relationships.csproj
│   ├── EntityRelationshipExtensions.cs
│   ├── Enumerators.cs
│   ├── InRelationship.cs
│   ├── Relationship.cs
│   └── WorldRelationshipExtensions.cs
├── Arch.Relationships.Tests/
│   ├── Arch.Relationships.Tests.csproj
│   ├── RelationshipTest.cs
│   └── Usings.cs
├── Arch.System/
│   ├── Arch.System.csproj
│   ├── Attributes.cs
│   ├── Systems.cs
│   └── Templates/
│       ├── GenericAttributes.cs
│       ├── GenericAttributes.tt
│       └── Helpers.ttinclude
├── Arch.System.SourceGenerator/
│   ├── Arch.System.SourceGenerator.csproj
│   ├── Extensions/
│   │   ├── CommonUtils.cs
│   │   └── MethodSymbolExtensions.cs
│   ├── Model.cs
│   ├── QueryUtils.cs
│   └── SourceGenerator.cs
├── Arch.System.SourceGenerator.SnapshotTests/
│   ├── .editorconfig
│   ├── Arch.System.SourceGenerator.SnapshotTests.csproj
│   └── SnapshotTest.cs
├── Arch.System.SourceGenerator.Tests/
│   ├── .editorconfig
│   ├── .gitignore
│   ├── Arch.System.SourceGenerator.Tests.csproj
│   ├── AttributeQueryCompilation/
│   │   ├── AttributeQuerySystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── AttributeQuerySystem.IncrementA(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAAndB(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAAndBExclusive(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementANotB(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAOrB(Entity).g.cs
│   │       └── AttributeQuerySystem.IncrementAOrBNotC(Entity).g.cs
│   ├── BasicCompilation/
│   │   ├── BasicSystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── BasicSystem.Basic(IntComponentA).g.cs
│   │       └── BasicSystem.BasicStatic(IntComponentA).g.cs
│   ├── DataParamCompilation/
│   │   ├── DataParamSystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── DataParamSystem.AssignEntityDataParamWithEntityRight(in Entity, in IntComponentA, ref Entity).g.cs
│   │       ├── DataParamSystem.CountANoParams(ref int).g.cs
│   │       ├── DataParamSystem.CountATwiceWithParams(ref int, in IntComponentA, ref int, in IntComponentB).g.cs
│   │       ├── DataParamSystem.CountAWithEntityAndParamLeft(ref int, in IntComponentA, in Entity).g.cs
│   │       ├── DataParamSystem.CountAWithEntityAndParamRight(in Entity, in IntComponentA, ref int).g.cs
│   │       ├── DataParamSystem.CountAWithEntityLeft(ref int, in Entity).g.cs
│   │       ├── DataParamSystem.CountAWithEntityRight(in Entity, ref int).g.cs
│   │       ├── DataParamSystem.CountAWithParamsLeft(ref int, in IntComponentA).g.cs
│   │       ├── DataParamSystem.CountAWithParamsMiddle(in IntComponentA, ref int, in IntComponentB).g.cs
│   │       └── DataParamSystem.CountAWithParamsRight(in IntComponentA, ref int).g.cs
│   ├── GeneratedUpdateCompilation/
│   │   ├── ExpectedGeneration/
│   │   │   ├── GeneratedUpdateSystem.AutoRunA().g.cs
│   │   │   ├── GeneratedUpdateSystem.AutoRunB().g.cs
│   │   │   └── GeneratedUpdateSystem.g.cs
│   │   └── GeneratedUpdateSystem.cs
│   ├── ParamQueryCompilation/
│   │   ├── ExpectedGeneration/
│   │   │   ├── ParamQuerySystem.IncrementA(ref IntComponentA).g.cs
│   │   │   ├── ParamQuerySystem.IncrementAAndB(ref IntComponentA, ref IntComponentB).g.cs
│   │   │   ├── ParamQuerySystem.IncrementANotC(ref IntComponentA).g.cs
│   │   │   └── ParamQuerySystem.IncrementOnlyAWithB(ref IntComponentA, in IntComponentB).g.cs
│   │   └── ParamQuerySystem.cs
│   ├── Shared/
│   │   ├── BaseTestSystem.cs
│   │   └── IntComponents.cs
│   └── SystemsTest.cs
├── Directory.Build.targets
├── LICENSE.MD
├── README.md
└── scripts/
    └── UnityPublish.sh

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

================================================
FILE: .gitattributes
================================================
* text eol=crlf

================================================
FILE: .github/workflows/main.yml
================================================
name: CI
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  build:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        build: [linux-debug, linux-release]
        include:
          - build: linux-debug
            os: ubuntu-latest
            config: debug
          - build: linux-release
            os: ubuntu-latest
            config: release
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-dotnet@v3
      with:
        dotnet-version: | 
          6.0.x
          7.0.x
          8.0.x
    #  workaround for actions/setup-dotnet#155
    - name: Clear package cache
      run: dotnet clean Arch.Extended.sln && dotnet nuget locals all --clear
    - name: Restore packages
      run: dotnet restore Arch.Extended.sln
    - name: Build
      run: dotnet build Arch.Extended.sln -c ${{ matrix.config }} --no-restore -warnaserror
    - name: Test
      run: dotnet test Arch.Extended.sln -c ${{ matrix.config }} -l "console;verbosity=detailed"


================================================
FILE: .gitignore
================================================
dist
bin/
obj/
/packages/
riderModule.iml
/_ReSharper.Caches/

# Common IntelliJ Platform excludes

# User specific
**/.idea/**/workspace.xml
**/.idea/**/tasks.xml
**/.idea/shelf/*
**/.idea/dictionaries
**/.idea/httpRequests/

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

# Rider
# Rider auto-generates .iml files, and contentModel.xml
.idea
**/.idea/**/*.iml
**/.idea/**/contentModel.xml
**/.idea/**/modules.xml

*.suo
*.user
.vs/
[Bb]in/
[Oo]bj/
_UpgradeReport_Files/
[Pp]ackages/

Thumbs.db
Desktop.ini
.DS_Store
Footer
© 2022 GitHub, Inc.
Footer navigation
Terms



================================================
FILE: Arch.AOT.SourceGenerator/Arch.AOT.SourceGenerator.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <LangVersion>latest</LangVersion>

        <GenerateDocumentationFile>true</GenerateDocumentationFile>
        <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
        <IncludeSymbols>true</IncludeSymbols>
        <SymbolPackageFormat>snupkg</SymbolPackageFormat>

        <PackageId>Arch.AOT.SourceGenerator</PackageId>
        <Title>Arch.AOT.SourceGenerator</Title>
        <Version>1.0.1</Version>
        <Authors>genaray</Authors>
        <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
        <Description>A source generator for arch to support AOT. </Description>
        <PackageReleaseNotes>Updated to Arch 1.7 and up. </PackageReleaseNotes>
        <PackageTags>c#;.net;.net6;.net7;ecs;game;entity;gamedev; game-development; game-engine; entity-component-system; arch;</PackageTags>

        <PackageProjectUrl>https://github.com/genaray/Arch.Extended</PackageProjectUrl>
        <RepositoryUrl>https://github.com/genaray/Arch.Extended.git</RepositoryUrl>
        <RepositoryType>git</RepositoryType>
        <IsPackable>true</IsPackable>

        <LangVersion>11</LangVersion>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
        <Copyright>Apache2.0</Copyright>
        <PackageLicenseUrl></PackageLicenseUrl>
        <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.1.0" PrivateAssets="analyzers" />
    </ItemGroup>

    <ItemGroup>
        <None Include="$(OutputPath)\$(AssemblyName).dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
    </ItemGroup>

</Project>


================================================
FILE: Arch.AOT.SourceGenerator/ComponentType.cs
================================================
namespace Arch.AOT.SourceGenerator;

/// <summary>
///     The struct <see cref="ComponentType"/>
///		represents an Component (Their type with meta data) for use in the generated code.
/// </summary>
public struct ComponentType
{
	/// <summary>
	///     The type name of the component.
	/// </summary>
	public string TypeName { get; }
	/// <summary>
	///     If the component has zero fields.
	/// </summary>
	public bool IsZeroSize { get; }
	/// <summary>
	///     If the component is a value type.
	/// </summary>
	public bool IsValueType { get; }

	/// <summary>
	///		Creates a new instance of the <see cref="ComponentType"/>.
	/// </summary>
	/// <param name="typeName">The type name.</param>
	/// <param name="isZeroSize">If its zero sized.</param>
	/// <param name="isValueType">If its a value type.</param>
	public ComponentType(string typeName, bool isZeroSize, bool isValueType)
	{
		TypeName = typeName;
		IsZeroSize = isZeroSize;
		IsValueType = isValueType;
	}
}

================================================
FILE: Arch.AOT.SourceGenerator/Extensions/StringBuilderExtensions.cs
================================================
using System.Text;

namespace Arch.AOT.SourceGenerator.Extensions;

/// <summary>
///		The <see cref="StringBuilderExtensions"/> class
///		adds code-generating methods to the string-builder for outsourcing them.
/// </summary>
public static class StringBuilderExtensions
{
	/// <summary>
	///     Appends the component types to the string builder in the form of a generated class.
	/// </summary>
	/// <param name="sb">The target string builder.</param>
	/// <param name="componentTypes">The types to append.</param>
	/// <returns></returns>
	public static StringBuilder AppendComponentTypes(this StringBuilder sb, IList<ComponentType> componentTypes)
	{
		// Lists the component registration commands line by line. 
		var components = new StringBuilder();
		foreach (var type in componentTypes)
		{
			var componentType = type;
			components.AppendComponentType(ref componentType);
		}
		
		sb.AppendLine(
			$$"""
		    using System.Runtime.CompilerServices;
		    using Arch.Core.Utils;
		              
		    namespace Arch.AOT.SourceGenerator
		    {
		       internal static class GeneratedComponentRegistry
		       {
		          [ModuleInitializer]
		          public static void Initialize()
		          {
		          {{components}}
		          }
		       }
		    }
		    """
		);
		return sb;
	}

	/// <summary>
	///     Appends a single component type to the string builder as a new line.
	/// </summary>
	/// <param name="sb">The string builder.</param>
	/// <param name="componentType">The component type to add.</param>
	/// <returns></returns>
	public static StringBuilder AppendComponentType(this StringBuilder sb, ref ComponentType componentType)
	{
		//var size = componentType.IsValueType ? $"Unsafe.SizeOf<{componentType.TypeName}>()" : "IntPtr.Size";
		//sb.AppendLine($"ComponentRegistry.Add(typeof({componentType.TypeName}), new ComponentType(ComponentRegistry.Size + 1, {size}));");
		
		sb.AppendLine($"ArrayRegistry.Add<{componentType.TypeName}>();");
		return sb;
	}
}


================================================
FILE: Arch.AOT.SourceGenerator/SourceGenerator.cs
================================================
using System.Collections.Immutable;
using System.Text;
using Arch.AOT.SourceGenerator.Extensions;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Text;

namespace Arch.AOT.SourceGenerator;

/// <summary>
///     Incremental generator that generates a class that adds all components to the ComponentRegistry.
/// </summary>
[Generator(LanguageNames.CSharp)]
public sealed class ComponentRegistryGenerator : IIncrementalGenerator
{
	/// <summary>
	///		A <see cref="List{T}"/> of annotated components (their types) found via the source-gen. 
	/// </summary>
	private readonly List<ComponentType> _componentTypes = new();
	
	/// <summary>
	///		The attribute to mark components with in order to be found by this source-gen. 
	/// </summary>
	private const string AttributeTemplate = """
	                                         using System;

	                                         namespace Arch.AOT.SourceGenerator
	                                         {
	                                             [AttributeUsage(AttributeTargets.Struct | AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
	                                             public sealed class ComponentAttribute : Attribute { }
	                                         }
	                                         """;

	/// <inheritdoc cref="IIncrementalGenerator.Initialize"/>
	public void Initialize(IncrementalGeneratorInitializationContext context)
	{
		// Register the attribute.
		context.RegisterPostInitializationOutput(initializationContext =>
		{
			initializationContext.AddSource("Components.Attributes.g.cs", SourceText.From(AttributeTemplate, Encoding.UTF8));
		});

		var provider = context.SyntaxProvider.CreateSyntaxProvider(
			ShouldTypeBeRegistered,
			GetMemberDeclarationsForSourceGen).Where(t => t.attributeFound).Select((t, _) => t.Item1
		);

		context.RegisterSourceOutput(
			context.CompilationProvider.Combine(provider.Collect()), (productionContext, tuple) => GenerateCode(productionContext, tuple.Left, tuple.Right)
		);
	}

	/// <summary>
	///     Determines if a node should be considered for code generation.
	/// </summary>
	/// <param name="node"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	private static bool ShouldTypeBeRegistered(SyntaxNode node, CancellationToken cancellationToken)
	{
		if (node is not TypeDeclarationSyntax typeDeclarationSyntax)
		{
			return false;
		}

		return typeDeclarationSyntax.AttributeLists.Count != 0;
	}

	/// <summary>
	///     Make sure the type is annotated with the Component attribute.
	/// </summary>
	/// <param name="context"></param>
	/// <param name="cancellationToken"></param>
	/// <returns></returns>
	private static (TypeDeclarationSyntax, bool attributeFound) GetMemberDeclarationsForSourceGen(GeneratorSyntaxContext context, CancellationToken cancellationToken)
	{
		var typeDeclarationSyntax = (TypeDeclarationSyntax) context.Node;

		// Stop here if we can't get the type symbol for some reason.
		if (ModelExtensions.GetDeclaredSymbol(context.SemanticModel, typeDeclarationSyntax) is not ITypeSymbol symbol)
		{
			return (typeDeclarationSyntax, false);
		}

		// Go through all the attributes.
		foreach (var attributeData in symbol.GetAttributes())
		{
			if (attributeData.AttributeClass is null)
			{
				continue;
			}

			// If the attribute is the Component attribute, we can stop here and return true.
			if (string.Equals(attributeData.AttributeClass.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat), "global::Arch.AOT.SourceGenerator.ComponentAttribute",
				    StringComparison.Ordinal))
			{
				return (typeDeclarationSyntax, true);
			}
		}

		// No attribute found, return false.
		return (typeDeclarationSyntax, false);
	}

	private void GenerateCode(SourceProductionContext productionContext, Compilation compilation, ImmutableArray<TypeDeclarationSyntax> typeList)
	{
		var sb = new StringBuilder();
		_componentTypes.Clear();

		foreach (var type in typeList)
		{
			// Get the symbol for the type.
			var symbol = ModelExtensions.GetDeclaredSymbol(compilation.GetSemanticModel(type.SyntaxTree), type);

			// If the symbol is not a type symbol, we can't do anything with it.
			if (symbol is not ITypeSymbol typeSymbol)
			{
				continue;
			}

			// Check if there are any fields in the type.
			var hasZeroFields = true;
			foreach (var member in typeSymbol.GetMembers())
			{
				if (member is not IFieldSymbol) continue;
				
				hasZeroFields = false;
				break;
			}

			var typeName = typeSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
			_componentTypes.Add(new ComponentType(typeName, hasZeroFields, typeSymbol.IsValueType));
		}

		sb.AppendComponentTypes(_componentTypes);
		productionContext.AddSource("GeneratedComponentRegistry.g.cs",CSharpSyntaxTree.ParseText(sb.ToString()).GetRoot().NormalizeWhitespace().ToFullString());
	}
}

================================================
FILE: Arch.EventBus/Arch.EventBus.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <TargetFramework>netstandard2.0</TargetFramework>
        <LangVersion>11</LangVersion>
        <RootNamespace>Arch.Bus</RootNamespace>

        <IncludeSymbols>true</IncludeSymbols>
        <SymbolPackageFormat>snupkg</SymbolPackageFormat>
        <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>

        <PackageId>Arch.EventBus</PackageId>
        <Title>Arch.EventBus</Title>
        <Version>1.0.2</Version>
        <Authors>genaray</Authors>
        <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
        <Description>A basic EventBus using source generation.</Description>
        <PackageReleaseNotes>Fixed some issues with source generation.
        </PackageReleaseNotes>
        <PackageTags>c#;.net;.net6;.net7;ecs;game;entity;gamedev; game-development; game-engine; entity-component-system; arch;</PackageTags>

        <PackageProjectUrl>https://github.com/genaray/Arch.Extended</PackageProjectUrl>
        <RepositoryUrl>https://github.com/genaray/Arch.Extended.git</RepositoryUrl>
        <RepositoryType>git</RepositoryType>
        <IsPackable>true</IsPackable>

        <LangVersion>11</LangVersion>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
        <Copyright>Apache2.0</Copyright>
        <PackageLicenseUrl></PackageLicenseUrl>
        <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.1.0" PrivateAssets="analyzers" />
    </ItemGroup>

    <ItemGroup>
        <None Include="$(OutputPath)\$(AssemblyName).dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
    </ItemGroup>

</Project>


================================================
FILE: Arch.EventBus/EventBus.cs
================================================
using System.Text;
using Microsoft.CodeAnalysis;

namespace Arch.Bus;

/// <summary>
///     The EventBus model
/// </summary>
public struct EventBus
{
    /// <summary>
    ///     The namespace.
    /// </summary>
    public string Namespace { get; set; }
    
    /// <summary>
    ///     The <see cref="Method"/>s of the <see cref="EventBus"/> "redirecting" the event.
    /// </summary>
    public IList<Method> Methods;
}

/// <summary>
///     A method inside the eventbus redirecting the event towards the receivers. 
/// </summary>
public struct Method
{
    /// <summary>
    ///     The <see cref="RefKind"/> this method accepts as a param.
    /// </summary>
    public RefKind RefKind;
    
    /// <summary>
    ///     The Event type as a <see cref="ITypeSymbol"/> that is being passed to the method and being redirected.
    /// </summary>
    public ITypeSymbol EventType;
    
    /// <summary>
    ///     A list of methods which this <see cref="Method"/> redirects the event to.
    /// </summary>
    public IList<ReceivingMethod> EventReceivingMethods;
}

/// <summary>
///     The <see cref="ReceivingMethod"/> struct
///     represents a method that receives the event (and is marked by the event tag) with its order. 
/// </summary>
public struct ReceivingMethod
{

    /// <summary>
    ///     If the receiving method is static.
    ///     If not, we are targeting instances and need to handle them differently during generation. 
    /// </summary>
    public bool Static;
    
    /// <summary>
    ///     The method symbol of the static event receiver which should be called.
    /// </summary>
    public IMethodSymbol MethodSymbol;
    
    /// <summary>
    ///     Its order. 
    /// </summary>
    public int Order;
}

/// <summary>
/// EventBusExtensions
/// </summary>
public static class EventBusExtensions
{
    
        
    /// <summary>
    ///     Convert a <see cref="RefKind"/> to its code string equivalent.
    /// </summary>
    /// <param name="refKind">The <see cref="RefKind"/>.</param>
    /// <returns>The code string equivalent.</returns>
    public static string RefKindToString(RefKind refKind)
    {
        switch (refKind)
        {
            case RefKind.None:
                return "";
            case RefKind.Ref:
                return "ref";
            case RefKind.In:
                return "in";
            case RefKind.Out:
                return "out";
        }
        return null!;
    }

    /// <summary>
    ///     Appends all methods redirecting events.
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="callMethods">The <see cref="IList{T}"/> containing the <see cref="Method"/>s redirecting the event and calling the methods. </param>
    /// <returns></returns>
    public static StringBuilder AppendEventMethods(this StringBuilder sb, IList<Method> callMethods)
    {
        foreach (var eventCallMethod in callMethods)
        {
            sb.AppendEventMethod(eventCallMethod);
        }
        return sb;
    }
    
    /// <summary>
    ///     Appends all methods redirecting events.
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="callMethod">The <see cref="IList{T}"/> containing the <see cref="Method"/>s redirecting the event and calling the methods. </param>
    /// <returns></returns>
    public static StringBuilder AppendEventMethod(this StringBuilder sb, Method callMethod)
    {
        var callMethodsInOrder = new StringBuilder().MethodCalls(callMethod);
        var instanceReceiverLists = new StringBuilder().InstanceReceiverLists(callMethod);
        
        var template = $$"""
        {{instanceReceiverLists}}

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static void Send({{RefKindToString(callMethod.RefKind)}} {{callMethod.EventType.ToDisplayString()}} {{callMethod.EventType.Name.ToLower()}}){
            {{callMethodsInOrder}}
        }
        """;
        sb.AppendLine(template);
        return sb;
    }
    
    
    /// <summary>
    ///     Appends calls to all event receiving method.
    ///     <remarks>SomeMethod(...); OtherMethod(...); ...</remarks>
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="callMethod">The <see cref="Method"/> the event call which methods will be called after one another.</param>
    /// <returns></returns>
    public static StringBuilder MethodCalls(this StringBuilder sb, Method callMethod)
    {
        // Loop over every found method receiver
        foreach (var eventReceivingMethod in callMethod.EventReceivingMethods)
        {
            var containingSymbol = eventReceivingMethod.MethodSymbol.ContainingSymbol;
            var methodName = eventReceivingMethod.MethodSymbol.Name;
            var passEvent = $"{RefKindToString(callMethod.RefKind)} {callMethod.EventType.Name.ToLower()}";
            
            // Remove weird chars to also support value tuples flawlessly, otherwhise they are listed like (World world, int int) in code which destroys everything
            var eventType = callMethod.EventType.ToString();
            eventType = eventType.Replace("(","").Replace(")","").Replace(".","_").Replace(",","_").Replace(" ","");
            
            // If static, call directly... if non static, loop over the instances for this event and call them one by one.
            if (eventReceivingMethod.Static)
            {
                sb.AppendLine($"{containingSymbol}.{methodName}({passEvent});");   
            }
            else
            {
                var instanceList = $"{containingSymbol.Name}_{methodName}_{eventType}";
                var template = $$"""
                    for(var index = 0; index < {{instanceList}}.Count; index++)
                    {
                        {{instanceList}}[index].{{methodName}}({{passEvent}});
                    }
                """;
                sb.AppendLine(template);
            }
        }
        return sb;
    }
    
    /// <summary>
    ///     Appends lists for a certain <see cref="Method"/> containing one list for each instance (non static) receiving a method.
    ///     <remarks>List&lt;SomeInstance&gt; SomeInstance_OnSomeEvent_EventType; ...</remarks>
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="callMethod">The <see cref="Method"/> the event call which methods will be called after one another.</param>
    /// <returns></returns>
    public static StringBuilder InstanceReceiverLists(this StringBuilder sb, Method callMethod)
    {
        foreach (var eventReceivingMethod in callMethod.EventReceivingMethods)
        {
            var containingSymbol = eventReceivingMethod.MethodSymbol.ContainingSymbol;
            var methodName = eventReceivingMethod.MethodSymbol.Name;
            
            // Remove weird chars to also support value tuples flawlessly, otherwhise they are listed like (World world, int int) in code which destroys everything
            var eventType = callMethod.EventType.ToString();
            eventType = eventType.Replace("(","").Replace(")","").Replace(".","_").Replace(",","_").Replace(" ","");
            
            if (eventReceivingMethod.Static)
            {
                continue;
            }
            
            sb.AppendLine($"public static List<{containingSymbol}> {containingSymbol.Name}_{methodName}_{eventType} = new List<{containingSymbol}>(128);");
        }
        return sb;
    }

    /// <summary>
    /// Appends a <see cref="EventBus"/> and generates it.
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="eventBus">The <see cref="EventBus"/> itself, used to generate the EventBus in code.</param>
    /// <returns></returns>
    public static StringBuilder AppendEventBus(this StringBuilder sb, ref EventBus eventBus)
    {
        var callerMethods = new StringBuilder().AppendEventMethods(eventBus.Methods);
        var template = $$"""
        using System.Runtime.CompilerServices;
        using System.Collections.Generic;
        namespace {{eventBus.Namespace}}{
            public partial class EventBus{
                {{callerMethods}}
            }
        }
        """;
        return sb.Append(template);
    }
}

================================================
FILE: Arch.EventBus/Hooks.cs
================================================
using System.Text;
using Microsoft.CodeAnalysis;

namespace Arch.Bus;

/// <summary>
/// Hooks.
/// </summary>
public struct Hooks
{
    /// <summary>
    /// Instances.
    /// </summary>
    public List<ClassHooks> Instances;
}

/// <summary>
/// Class hooks.
/// </summary>
public struct ClassHooks
{
    /// <summary>
    /// Partial class.
    /// </summary>
    public ITypeSymbol PartialClass;

    /// <summary>
    /// Event hooks.
    /// </summary>
    public IList<EventHook> EventHooks;
}

/// <summary>
///     The <see cref="EventHook"/> struct
///     represents a hook for an event from the eventbus inside an class instance.
/// </summary>
public struct EventHook
{

    /// <summary>
    ///     The event type.
    /// </summary>
    public ITypeSymbol EventType;
    
    /// <summary>
    ///     The method symbol of the static event receiver which should be called.
    /// </summary>
    public IMethodSymbol MethodSymbol;
}

/// <summary>
/// Hook extensions.
/// </summary>
public static class HookExtensions
{
    
    /// <summary>
    ///     Appends add operations for a set of <see cref="EventHook"/> to hook the local class instance into the EventBus instance lists for receiving events. 
    ///     <remarks>EventBus.SomeClass_SomeEvent_SomeEvent.Add(this); ...</remarks>
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="receivingMethods">The <see cref="List{T}"/> of <see cref="ReceivingMethod"/> that will be hooked in to receive instance events. </param>
    /// <returns></returns>
    public static StringBuilder Hook(this StringBuilder sb, IList<EventHook> receivingMethods)
    {
        foreach (var eventReceivingMethod in receivingMethods)
        {
            var containingSymbol = eventReceivingMethod.MethodSymbol.ContainingSymbol;
            var methodName = eventReceivingMethod.MethodSymbol.Name;
            
            // Remove weird chars to also support value tuples flawlessly, otherwhise they are listed like (World world, int int) in code which destroys everything
            var eventType = eventReceivingMethod.EventType.ToString();
            eventType = eventType.Replace("(","").Replace(")","").Replace(".","_").Replace(",","_").Replace(" ","");

            sb.AppendLine($"EventBus.{containingSymbol.Name}_{methodName}_{eventType}.Add(this);");
        }
        return sb;
    }
    
    /// <summary>
    ///     Appends remove operations for a set of <see cref="EventHook"/> to unhook the local class instance from the EventBus instance lists for receiving events. 
    ///     <remarks>EventBus.SomeClass_SomeEvent_SomeEvent.Remove(this); ...</remarks>
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="receivingMethods">The <see cref="List{T}"/> of <see cref="ReceivingMethod"/> that will be hooked in to receive instance events. </param>
    /// <returns></returns>
    public static StringBuilder Unhook(this StringBuilder sb, IList<EventHook> receivingMethods)
    {
        foreach (var eventReceivingMethod in receivingMethods)
        {
            var containingSymbol = eventReceivingMethod.MethodSymbol.ContainingSymbol;
            var methodName = eventReceivingMethod.MethodSymbol.Name;
            
            // Remove weird chars to also support value tuples flawlessly, otherwhise they are listed like (World world, int int) in code which destroys everything
            var eventType = eventReceivingMethod.EventType.ToString();
            eventType = eventType.Replace("(","").Replace(")","").Replace(".","_").Replace(",","_").Replace(" ","");
            
            sb.AppendLine($"EventBus.{containingSymbol.Name}_{methodName}_{eventType}.Remove(this);");
        }
        return sb;
    }
    
    /// <summary>
    ///     Appends a <see cref="List{T}"/> of <see cref="Hook"/> and generates proper hook and unhook methods for their partial class instances.
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="hooks">The <see cref="List{T}"/> of <see cref="Hook"/> itself, used to generate the hooks in code.</param>
    /// <returns></returns>
    public static StringBuilder AppendHookList(this StringBuilder sb, List<ClassHooks> hooks)
    {
        // Loop over all hooks to create the hook and unhook functions.
        foreach (var hook in hooks)
        {

            var hookIntoEventbus = new StringBuilder().Hook(hook.EventHooks);
            var unhookFromEventBus = new StringBuilder().Unhook(hook.EventHooks);
            
            var template = $$"""
            namespace {{hook.PartialClass.ContainingNamespace}}{

                public partial class {{hook.PartialClass.Name}}{
                    
                    [MethodImpl(MethodImplOptions.AggressiveInlining)]
                    public void Hook()
                    {
                        {{hookIntoEventbus}}
                    }
                    
                    [MethodImpl(MethodImplOptions.AggressiveInlining)]
                    public void Unhook()
                    {
                        {{unhookFromEventBus}}   
                    }
                }
            }
            """;
            sb.AppendLine(template);
        }

        return sb;
    }
    
    /// <summary>
    ///     Appends a <see cref="Hooks"/> and generates it.
    /// </summary>
    /// <param name="sb">The <see cref="StringBuilder"/>.</param>
    /// <param name="hooks">The <see cref="Hooks"/> itself, used to generate the hooks in code.</param>
    /// <returns></returns>
    public static StringBuilder AppendHooks(this StringBuilder sb, ref Hooks hooks)
    {
        var callerMethods = new StringBuilder().AppendHookList(hooks.Instances);
        var template = $$"""
        using System.Runtime.CompilerServices;
        using Arch.Bus;
        {{callerMethods}}
        """;
        return sb.Append(template);
    }
}

================================================
FILE: Arch.EventBus/MethodSymbolExtensions.cs
================================================
using Microsoft.CodeAnalysis;

namespace Arch.Bus;

/// <summary>
/// Method symbol extensions.
/// </summary>
public static class MethodSymbolExtensions
{

    /// <summary>
    ///     Searches attributes of a <see cref="IMethodSymbol"/> and returns the first one found.
    /// </summary>
    /// <param name="ms">The <see cref="IMethodSymbol"/> instance.</param>
    /// <param name="name">The attributes name.</param>
    /// <returns>The attribute wrapped in an <see cref="AttributeData"/>.</returns>
    public static AttributeData GetAttributeData(this IMethodSymbol ms, string name)
    {
        foreach (var attribute in ms.GetAttributes())
        {
            var classSymbol = attribute.AttributeClass;
            if(!classSymbol!.Name.Contains(name)) continue;

            return attribute;
        }

        return default!;
    }
    
    /// <summary>
    ///     Gets all the types of a <see cref="AttributeData"/> as <see cref="ITypeSymbol"/>s and adds them to a list.
    ///     If the attribute is generic it will add the generic parameters, if its non generic it will add the non generic types from the constructor.
    /// </summary>
    /// <param name="data">The <see cref="AttributeData"/>.</param>
    /// <param name="array">The <see cref="List{T}"/> where the found <see cref="ITypeSymbol"/>s are added to.</param>
    public static void GetAttributeTypes(this AttributeData? data, List<ITypeSymbol> array)
    {
        if (data is not null && data.AttributeClass!.IsGenericType)
        {
            array.AddRange(data.AttributeClass.TypeArguments);
        }
        else if (data is not null && !data.AttributeClass!.IsGenericType)
        {
            var constructorArguments = data.ConstructorArguments[0].Values;
            var constructorArgumentsTypes = constructorArguments.Select(constant => constant.Value as ITypeSymbol).ToList();
            array.AddRange(constructorArgumentsTypes!);
        }
    }
}

================================================
FILE: Arch.EventBus/SourceGenerator.cs
================================================
using System.Collections.Immutable;
using System.Diagnostics;
using System.Text;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Text;

namespace Arch.Bus;

/// <summary>
/// Query generator.
/// </summary>
[Generator]
public class QueryGenerator : IIncrementalGenerator
{
    private static EventBus _eventBus;
    private static Hooks _hooks;
    
    private static Dictionary<ITypeSymbol, (RefKind, IList<ReceivingMethod>)> _eventTypeToReceivingMethods = null!;
    private static Dictionary<ITypeSymbol, IList<EventHook>> _containingTypeToReceivingMethods = null!;

    /// <inheritdoc cref="IIncrementalGenerator.Initialize"/>
    public void Initialize(IncrementalGeneratorInitializationContext context)
    {
        //if (!Debugger.IsAttached) Debugger.Launch();

        // Register the generic attributes 
        var attributes = $$"""
            namespace Arch.Bus
            {           
                /// <summary>
                ///     Marks a method to receive a certain event. 
                /// </summary>
                [global::System.AttributeUsage(global::System.AttributeTargets.Method)]
                public class EventAttribute : global::System.Attribute
                {
                    public EventAttribute(int order = 0)
                    {
                        Order = order;
                    }

                    /// <summary>
                    /// The order of this event. 
                    /// </summary>
                    public int Order { get; }
                }
            }
        """;
        context.RegisterPostInitializationOutput(ctx => ctx.AddSource("Attributes.g.cs", SourceText.From(attributes, Encoding.UTF8)));

        // Do a simple filter for methods marked with update
        IncrementalValuesProvider<MethodDeclarationSyntax> methodDeclarations = context.SyntaxProvider.CreateSyntaxProvider(
            static (s, _) => s is MethodDeclarationSyntax { AttributeLists.Count: > 0 },
            static (ctx, _) => GetMethodSymbolIfAttributeof(ctx, "Arch.Bus.EventAttribute")
        ).Where(static m => m is not null)!; // filter out attributed methods that we don't care about
        
        // Combine the selected enums with the `Compilation`
        IncrementalValueProvider<(Compilation, ImmutableArray<MethodDeclarationSyntax>)> compilationAndMethods =
            context.CompilationProvider.Combine(methodDeclarations.WithComparer(Comparer.Instance).Collect());
        context.RegisterSourceOutput(compilationAndMethods, static (spc, source) => Generate(source.Item1, source.Item2, spc));
    }
    

    /// <summary>
    ///     Returns a <see cref="MethodDeclarationSyntax"/> if its annotated with an attribute of <paramref name="name"/>.
    /// </summary>
    /// <param name="context">Its <see cref="GeneratorSyntaxContext"/>.</param>
    /// <param name="name">The attributes name.</param>
    /// <returns></returns>
    private static MethodDeclarationSyntax? GetMethodSymbolIfAttributeof(GeneratorSyntaxContext context, string name)
    {
        // we know the node is a EnumDeclarationSyntax thanks to IsSyntaxTargetForGeneration
        var methodDeclarationSyntax = (MethodDeclarationSyntax)context.Node;

        // loop through all the attributes on the method
        foreach (var attributeListSyntax in methodDeclarationSyntax.AttributeLists)
        {
            foreach (var attributeSyntax in attributeListSyntax.Attributes)
            {
                if (ModelExtensions.GetSymbolInfo(context.SemanticModel, attributeSyntax).Symbol is not IMethodSymbol attributeSymbol) continue;

                var attributeContainingTypeSymbol = attributeSymbol.ContainingType;
                var fullName = attributeContainingTypeSymbol.ToDisplayString();

                // Is the attribute the [EnumExtensions] attribute?
                if (fullName != name) continue;
                return methodDeclarationSyntax;
            }
        }

        // we didn't find the attribute we were looking for
        return null;
    }

    /// <summary>
    ///     Maps the <see cref="IMethodSymbol"/> to its <see cref="IParameterSymbol"/> for organisation. 
    /// </summary>
    /// <param name="methodSymbol"></param>
    private static void MapMethodToEventType(IMethodSymbol methodSymbol)
    {
        var eventType = methodSymbol.Parameters[0];
        var param = methodSymbol.GetAttributes()[0].ConstructorArguments[0];
        var receivingMethod = new ReceivingMethod{ Static = methodSymbol.IsStatic, MethodSymbol = methodSymbol, Order = (int)param.Value! };

        // Either append or create a new receiving method with a new list.
        if (_eventTypeToReceivingMethods.TryGetValue(eventType.Type, out var tuple))
        {
            tuple.Item2.Add(receivingMethod);
        }
        else
        {
            tuple.Item1 = eventType.RefKind;
            tuple.Item2 = new List<ReceivingMethod>{receivingMethod};
            _eventTypeToReceivingMethods.Add(eventType.Type, tuple);
        }
    }
    
    /// <summary>
    ///     Maps the <see cref="IMethodSymbol"/> to its <see cref="ITypeSymbol"/> for organisation. 
    /// </summary>
    /// <param name="methodSymbol"></param>
    private static void MapMethodToContainingType(IMethodSymbol methodSymbol)
    {
        var eventType = methodSymbol.Parameters[0];
        var receivingMethod = new EventHook{ EventType = eventType.Type, MethodSymbol = methodSymbol, };

        // Either append or create a new receiving method with a new list.
        if (_containingTypeToReceivingMethods.TryGetValue(methodSymbol.ContainingType, out var tuple))
        {
            tuple.Add(receivingMethod);
        }
        else
        {
            var list = new List<EventHook>{receivingMethod};
            _containingTypeToReceivingMethods.Add(methodSymbol.ContainingType, list);
        }
    }
    
    /// <summary>
    ///     Prepares the <see cref="EventBus"/> by convertings the <see cref="_eventTypeToReceivingMethods"/> to the eventbus model. 
    /// </summary>
    private static void PrepareEventBus()
    {
        // Translate mapping to the model
        foreach (var kvp in _eventTypeToReceivingMethods)
        {
            var eventCallMethod = new Method
            {
                RefKind = kvp.Value.Item1,
                EventType = kvp.Key,
                EventReceivingMethods = kvp.Value.Item2
            };
            eventCallMethod.EventReceivingMethods = eventCallMethod.EventReceivingMethods.OrderBy(method => method.Order).ToList();
            _eventBus.Methods.Add(eventCallMethod);
        }
    }
    
    /// <summary>
    ///     Prepares the <see cref="Hooks"/> by convertings the <see cref="_containingTypeToReceivingMethods"/> to the hooks model. 
    /// </summary>
    private static void PrepareHooks()
    {
        // Translate mapping to the model
        foreach (var kvp in _containingTypeToReceivingMethods)
        {

            // Skip static classes since they need no hooks
            if (kvp.Key.IsStatic)
            {
                continue;
            }
            
            var hook = new ClassHooks
            {
                PartialClass = kvp.Key,
                EventHooks = kvp.Value
            };
            _hooks.Instances.Add(hook);
        }
    }

    /// <summary>
    ///     Generates queries and partial classes for the found marked methods.
    /// </summary>
    /// <param name="compilation">The <see cref="Compilation"/>.</param>
    /// <param name="methods">The <see cref="ImmutableArray{MethodDeclarationSyntax}"/> array, the methods which we will generate queries and classes for.</param>
    /// <param name="context">The <see cref="SourceProductionContext"/>.</param>
    private static void Generate(Compilation compilation, ImmutableArray<MethodDeclarationSyntax> methods, SourceProductionContext context)
    {
        if (methods.IsDefaultOrEmpty) return;
        
        // Init 
        _eventBus.Namespace = "Arch.Bus";
        _eventBus.Methods = new List<Method>(512);
        _eventTypeToReceivingMethods = new Dictionary<ITypeSymbol, (RefKind, IList<ReceivingMethod>)>(512, SymbolEqualityComparer.Default);
        
        _hooks.Instances = new List<ClassHooks>(512);
        _containingTypeToReceivingMethods = new Dictionary<ITypeSymbol, IList<EventHook>>(512, SymbolEqualityComparer.Default);
        
        // Generate Query methods and map them to their classes
        foreach (var methodSyntax in methods)
        {
            var semanticModel = compilation.GetSemanticModel(methodSyntax.SyntaxTree);
            var methodSymbol = ModelExtensions.GetDeclaredSymbol(semanticModel, methodSyntax) as IMethodSymbol;

            MapMethodToEventType(methodSymbol!);
            MapMethodToContainingType(methodSymbol!);
        }
        
        PrepareEventBus();
        PrepareHooks();
        
        var template = new StringBuilder().AppendEventBus(ref _eventBus);
        var hooks = new StringBuilder().AppendHooks(ref _hooks);
        
        context.AddSource($"EventBus.g.cs", CSharpSyntaxTree.ParseText(template.ToString()).GetRoot().NormalizeWhitespace().ToFullString());
        context.AddSource($"Hooks.g.cs", CSharpSyntaxTree.ParseText(hooks.ToString()).GetRoot().NormalizeWhitespace().ToFullString());
    }

    /// <summary>
    /// Compares <see cref="MethodDeclarationSyntax"/>s to remove duplicates. 
    /// </summary>
    class Comparer : IEqualityComparer<MethodDeclarationSyntax>
    {
        public static readonly Comparer Instance = new Comparer();

        public bool Equals(MethodDeclarationSyntax x, MethodDeclarationSyntax y)
        {
            return x.Equals(y);
        }

        public int GetHashCode(MethodDeclarationSyntax obj)
        {
            return obj.GetHashCode();
        }
    }
}

================================================
FILE: Arch.Extended.Sample/Arch.Extended.Sample.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <RootNamespace>Arch.Extended</RootNamespace>
        <LangVersion>12</LangVersion>
    </PropertyGroup>

    <ItemGroup>
      <ProjectReference Include="..\Arch.AOT.SourceGenerator\Arch.AOT.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
      <ProjectReference Include="..\Arch.EventBus\Arch.EventBus.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
      <ProjectReference Include="..\Arch.LowLevel\Arch.LowLevel.csproj" />
      <ProjectReference Include="..\Arch.Persistence\Arch.Persistence.csproj" />
      <ProjectReference Include="..\Arch.Relationships\Arch.Relationships.csproj" />
      <ProjectReference Include="..\Arch.System.SourceGenerator\Arch.System.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
      <ProjectReference Include="..\Arch.System\Arch.System.csproj" />
    </ItemGroup>

    <ItemGroup>
      <PackageReference Include="Arch" Version="2.1.0" />
      <PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.1.303" />
      <PackageReference Include="NUnit" Version="3.13.3" />
      <PackageReference Include="Utf8Json" Version="1.3.7" />
    </ItemGroup>

</Project>


================================================
FILE: Arch.Extended.Sample/Components.cs
================================================
using System.Runtime.Serialization;
using Arch.AOT.SourceGenerator;
using Arch.Core;
using MessagePack;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Arch.Extended;

/// <summary>
///     The position of an entity.
/// </summary>
public struct Position
{

    /// <summary>
    ///     Its position.
    /// </summary>
    public Vector2 Vector2;
    
    /// <summary>
    ///     Constructs a new <see cref="Position"/> instance.
    /// </summary>
    /// <param name="x">The x position.</param>
    /// <param name="y">The y position.</param>
    public Position(float x, float y)
    {
        Vector2 = new Vector2(x, y);
    }
    
    /// <summary>
    ///     Constructs a new <see cref="Position"/> instance.
    /// <remarks>Mostly required for <see cref="MessagePack"/>.</remarks>
    /// </summary>
    /// <param name="vector2">The <see cref="Vector2"/>, the position.</param>
    public Position(Vector2 vector2)
    {
        Vector2 = vector2;
    }
};

/// <summary>
///     The velocity of an entity.
/// </summary>
public struct Velocity
{
    
    /// <summary>
    ///     Its velocity.
    /// </summary>
    public Vector2 Vector2;
    
    /// <summary>
    ///     Constructs a new <see cref="Velocity"/> instance.
    /// </summary>
    /// <param name="x">The x velocity.</param>
    /// <param name="y">The y velocity.</param>
    public Velocity(float x, float y)
    {
        Vector2 = new Vector2(x, y);
    }
    
    /// <summary>
    ///     Constructs a new <see cref="Velocity"/> instance.
    /// <remarks>Mostly required for <see cref="MessagePack"/>.</remarks>
    /// </summary>
    /// <param name="vector2">The <see cref="Vector2"/>, the velocity.</param>
    public Velocity(Vector2 vector2)
    {
        Vector2 = vector2;
    }
}

/// <summary>
/// The sprite/texture of an entity. 
/// </summary>
public struct Sprite
{
    /// <summary>
    ///     The <see cref="Texture2D"/> used.
    /// </summary>
    [IgnoreDataMember]
    public Texture2D Texture2D;

    /// <summary>
    ///     The id of the texture, for serialisation. 
    /// </summary>
    public byte TextureId;
    
    /// <summary>
    ///     The <see cref="Color"/> used. 
    /// </summary>
    public Color Color;

    /// <summary>
    ///     Constructs a new <see cref="Sprite"/> instance.
    /// </summary>
    /// <param name="texture2D">Its <see cref="Texture2D"/>.</param>
    /// <param name="color">Its <see cref="Color"/>.</param>
    public Sprite(Texture2D texture2D, Color color)
    {
        Texture2D = texture2D;
        Color = color;
    }
}


================================================
FILE: Arch.Extended.Sample/Extensions.cs
================================================
using System.Runtime.CompilerServices;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Arch.Extended;

public static class TextureExtensions
{
    /// <summary>
    ///     Creates a square texture and returns it.
    /// </summary>
    /// <param name="graphicsDevice"></param>
    /// <param name="size"></param>
    /// <returns></returns>
    public static Texture2D CreateSquareTexture(GraphicsDevice graphicsDevice, int size)
    {
        var texture = new Texture2D(graphicsDevice, size, size);
        var data = new Color[size*size];
        for(var i=0; i < data.Length; ++i) data[i] = Color.White;
        texture.SetData(data);

        return texture;
    }
}

public static class RandomExtensions
{
    /// <summary>
    ///     Creates a random <see cref="Vector2"/> inside the <see cref="Rectangle"/> and returns it.
    /// </summary>
    /// <param name="random">The <see cref="Random"/> instance.</param>
    /// <param name="rectangle">A <see cref="Rectangle"/> in which a <see cref="Vector2"/> is generated. </param>
    /// <returns>The generated <see cref="Vector2"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static Vector2 NextVector2(this Random random, in Rectangle rectangle)
    {
        return new Vector2(random.Next(rectangle.X, rectangle.X+rectangle.Width), random.Next(rectangle.Y, rectangle.Y+rectangle.Height));
    }
    
    /// <summary>
    ///     Creates a random <see cref="Vector2"/> between two floats.
    /// </summary>
    /// <param name="random">The <see cref="Random"/> instance.</param>
    /// <param name="min">The minimum value.</param>
    /// <param name="max">The maximum value.</param>
    /// <returns>A <see cref="Vector2"/> between those to floats.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static Vector2 NextVector2(this Random random, float min, float max)
    {
        return new Vector2((float)(random.NextDouble() * (max - min) + min), (float)(random.NextDouble() * (max - min) + min));
    }
    
    /// <summary>
    ///     Creates a random <see cref="Color"/>.
    /// </summary>
    /// <param name="random">The <see cref="Random"/> instance.</param>
    /// <returns>A <see cref="Color"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static Color NextColor(this Random random)
    {
        return new Color(random.Next(0,255),random.Next(0,255),random.Next(0,255));
    }
}

================================================
FILE: Arch.Extended.Sample/Game.cs
================================================
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Text;
using System.Text.Json.Serialization;
using Arch.Core;
using Arch.Core.Extensions;
using Arch.Bus;
using Arch.Core.Extensions.Dangerous;
using Arch.Core.Utils;
using Arch.Persistence;
using Arch.Relationships;
using MessagePack;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using NUnit.Framework;
using Schedulers;
using Utf8Json;
using Utf8Json.Formatters;
using Utf8Json.Resolvers;

namespace Arch.Extended;

/// <summary>
///     The <see cref="Game"/> which represents the game and implements all the important monogame features.
/// </summary>
public class Game : Microsoft.Xna.Framework.Game
{
    // The world and a job scheduler for multithreading
    private World _world = null!;
    private JobScheduler _jobScheduler = null!;
    
    // Our systems processing entities
    private System.Group<GameTime> _systems = null!;
    private DrawSystem _drawSystem = null!;

    // Monogame stuff
    private GraphicsDeviceManager _graphics;
    private SpriteBatch _spriteBatch = null!;
    private Texture2D _texture2D = null!;
    private Random _random = null!;
    
    public Game()
    {
        _graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }
    
    protected override void Initialize()
    {
        // Setup texture and randomness
        _random = new Random();
        _texture2D = TextureExtensions.CreateSquareTexture(GraphicsDevice, 10);

        base.Initialize();
    }
    
    protected override void LoadContent()
    {
        // Create a new SpriteBatch, which can be used to draw textures.
        _spriteBatch = new SpriteBatch(GraphicsDevice);
    }
    
    protected override void BeginRun()
    {
        base.BeginRun();
        
        // Create world & JobScheduler for multithreading
        _world = World.Create();
        _jobScheduler = new(
            new JobScheduler.Config
            {
                ThreadPrefixName = "Arch.Samples",
                ThreadCount = 0,
                MaxExpectedConcurrentJobs = 64,
                StrictAllocationMode = false,
            }
        );
        World.SharedJobScheduler = _jobScheduler;
        
        // Spawn in entities with position, velocity and sprite
        for (var index = 0; index < 10; index++)
        {
            _world.Create(
                new Position{ Vector2 = _random.NextVector2(GraphicsDevice.Viewport.Bounds) }, 
                new Velocity{ Vector2 = _random.NextVector2(-0.25f,0.25f) }, 
                new Sprite{ Texture2D = _texture2D, Color = _random.NextColor() }
            );
        }
        
        //Serializer is not updated yet. 
        // Serialize world and deserialize it back. Just for showcasing the serialization, its actually not necessary.
        // var archSerializer = new ArchJsonSerializer(new SpriteSerializer{GraphicsDevice = GraphicsDevice});
        // var worldJson = archSerializer.ToJson(_world);
        // _world = archSerializer.FromJson(worldJson);
        
        var archSerializer = new ArchBinarySerializer(new SpriteSerializer{GraphicsDevice = GraphicsDevice});
        var worldJson = archSerializer.Serialize(_world);
        _world = archSerializer.Deserialize(worldJson);
        
        // Create systems, running in order
        _systems = new System.Group<GameTime>(
            "Systems",
            new MovementSystem(_world, GraphicsDevice.Viewport.Bounds),
            new ColorSystem(_world),
            new DebugSystem(_world)
        );
        _drawSystem = new DrawSystem(_world, _spriteBatch);  // Draw system must be its own system since monogame differentiates between update and draw. 
        
        // Initialize systems
        _systems.Initialize();
        _drawSystem.Initialize();
    }

    protected override void Update(GameTime gameTime)
    {
        // Exit game on press
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit();
        
        // Forward keyboard state as an event to another handles by using the eventbus
        var @event = (_world, Keyboard.GetState());
        EventBus.Send(ref @event);
        
         // Continue entity movement by adding velocity to all
        if (Keyboard.GetState().IsKeyDown(Keys.I))
        {
            // Query for velocity entities and remove their velocity to make them stop moving.
            var queryDesc = new QueryDescription().WithNone<Velocity>();
            _world.Add(in queryDesc, new Velocity { Vector2 = _random.NextVector2(-0.25f, 0.25f) });
        }

        // Pause entity movement by removing velocity from all
        if (Keyboard.GetState().IsKeyDown(Keys.O))
        {
            // Query for velocity entities and remove their velocity to make them stop moving.
            var queryDesc = new QueryDescription().WithAll<Velocity>();
            _world.Remove<Velocity>(in queryDesc);
        }

        // Add a random amount of new entities
        if (Keyboard.GetState().IsKeyDown(Keys.K))
        {
            // Bulk create entities
            var amount = Random.Shared.Next(0, 500);
            Span<Entity> entities = stackalloc Entity[amount];
            _world.Create(entities,[typeof(Position), typeof(Velocity), typeof(Sprite)], amount);

            // Set variables
            foreach (var entity in entities)
            { 

#if DEBUG_PUREECS || RELEASE_PUREECS
                _world.Set(entity,
                    new Position { Vector2 = _random.NextVector2(GraphicsDevice.Viewport.Bounds) },
                    new Velocity { Vector2 = _random.NextVector2(-0.25f, 0.25f) },
                    new Sprite { Texture2D = _texture2D, Color = _random.NextColor() }
                );
#else
                entity.Set(
                    new Position { Vector2 = _random.NextVector2(GraphicsDevice.Viewport.Bounds) },
                    new Velocity { Vector2 = _random.NextVector2(-0.25f, 0.25f) },
                    new Sprite { Texture2D = _texture2D, Color = _random.NextColor() }
                );
#endif
            }
        }

        // Remove a random amount of new entities
        if (Keyboard.GetState().IsKeyDown(Keys.L))
        {
            // Find all entities
            var entities = new Entity[_world.Size];
            _world.GetEntities(new QueryDescription(), entities.AsSpan());

            // Delete random entities
            var amount = Random.Shared.Next(0, Math.Min(500, entities.Length));
            for (var index = 0; index < amount; index++)
            {
                var randomIndex = _random.Next(0, entities.Length);
                var randomEntity = entities[randomIndex];

#if DEBUG_PUREECS || RELEASE_PUREECS
                if (_world.IsAlive(randomEntity))
#else
                if (randomEntity.IsAlive())
#endif
                {
                    _world.Destroy(randomEntity);
                }

                entities[randomIndex] = Entity.Null;
            }
        }
        
        // Update systems
        _systems.BeforeUpdate(in gameTime);
        _systems.Update(in gameTime);
        _systems.AfterUpdate(in gameTime);
        base.Update(gameTime);
    }
    
    protected override void Draw(GameTime gameTime)
    {
        _graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
        
        // Update draw system and draw stuff
        _drawSystem.BeforeUpdate(in gameTime);
        _drawSystem.Update(in gameTime);
        _drawSystem.AfterUpdate(in gameTime);
        base.Draw(gameTime);
    }

    protected override void EndRun()
    {
        base.EndRun();
        
        // Destroy world and shutdown the jobscheduler 
        World.Destroy(_world);
        _jobScheduler.Dispose();
        
        // Dispose systems
        _systems.Dispose();
    }
}

================================================
FILE: Arch.Extended.Sample/Program.cs
================================================
// See https://aka.ms/new-console-template for more information

using Microsoft.Xna.Framework;
using Game = Arch.Extended.Game;


// Info : 
// This sample demonstrates a example usage of arch. 
// Especially a few different iteration techniques for entity iterations. 
// Its not a full demonstration of all features. 
// Hit "delete" to remove velocity from all entities

// Disclaimer : 
// You can spawn in to 1 million entities, then the performance starts dropping.
// The bottleneck is not the ECS framework, its actually the rendering ( Monogame Spritebatch ).

Console.WriteLine("Sample App starts...");
using var game = new Game();
game.Run();

Environment.Exit(0);

================================================
FILE: Arch.Extended.Sample/Serializer.cs
================================================
using MessagePack;
using MessagePack.Formatters;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Utf8Json;

namespace Arch.Extended;

/// <summary>
///     The <see cref="SpriteSerializer"/> class
///     is a <see cref="IJsonFormatter{T}"/> for (de)serialising a <see cref="Sprite"/>.
/// </summary>
public class SpriteSerializer : IJsonFormatter<Sprite>, IMessagePackFormatter<Sprite>
{
    /// <summary>
    ///     The <see cref="GraphicsDevice"/> to create <see cref="Texture2D"/>s from. 
    /// </summary>
    public GraphicsDevice GraphicsDevice { get; set; } = null!;

    public void Serialize(ref JsonWriter writer, Sprite value, IJsonFormatterResolver formatterResolver)
    {
        writer.WriteBeginObject();
        
        // Write color
        writer.WritePropertyName("color");
        writer.WriteUInt32(value.Color.PackedValue);
        writer.WriteValueSeparator();
        
        // Write texture id
        writer.WritePropertyName("textureId");
        writer.WriteUInt16(value.TextureId);

        writer.WriteEndObject();
    }

    public Sprite Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
    {
        reader.ReadIsBeginObject();
        
        // Read color
        reader.ReadPropertyName();
        var packedColor = reader.ReadUInt32();
        reader.ReadIsValueSeparator();
        
        // Read textureid
        reader.ReadPropertyName();
        var textureId = reader.ReadUInt16();

        // Create color and texture
        var color = new Color { PackedValue = packedColor };
        var texture = textureId switch
        {
            1 => TextureExtensions.CreateSquareTexture(GraphicsDevice, 10),
            _ => TextureExtensions.CreateSquareTexture(GraphicsDevice, 10)
        };

        reader.ReadIsEndObject();
        return new Sprite(texture, color);
    }

    public void Serialize(ref MessagePackWriter writer, Sprite value, MessagePackSerializerOptions options)
    {
        // Write color
        writer.WriteUInt32(value.Color.PackedValue);

        // Write texture id
        writer.WriteUInt16(value.TextureId);
    }

    public Sprite Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options)
    {
        // Read color
        var packedColor = reader.ReadUInt32();
   
        // Read textureid
        var textureId = reader.ReadUInt16();

        // Create color and texture
        var color = new Color { PackedValue = packedColor };
        var texture = textureId switch
        {
            1 => TextureExtensions.CreateSquareTexture(GraphicsDevice, 10),
            _ => TextureExtensions.CreateSquareTexture(GraphicsDevice, 10)
        };
        
        return new Sprite(texture, color);
    }
}

================================================
FILE: Arch.Extended.Sample/Systems.cs
================================================
using System.Runtime.CompilerServices;
using Arch.Bus;
using Arch.Core;
using Arch.Core.Extensions;
using Arch.LowLevel;
using Arch.System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

namespace Arch.Extended;

/// <summary>
///     The movement system makes the entities move and bounce properly. 
/// </summary>
public partial class MovementSystem : BaseSystem<World, GameTime>
{
    
    /// <summary>
    ///     A rectangle which specifies the viewport.
    ///     Needed so that the entities do not wander outside the viewport.
    /// </summary>
    private readonly Rectangle _viewport;
    
    /// <summary>
    ///     Creates a <see cref="MovementSystem"/> instance.
    /// </summary>
    /// <param name="world">The <see cref="World"/> used.</param>
    /// <param name="viewport">The games <see cref="Viewport"/>.</param>
    public MovementSystem(World world, Rectangle viewport) : base(world) { _viewport = viewport;}

    /// <summary>
    ///     Called for each <see cref="Entity"/> to move it.
    ///     The calling takes place through the source generated method "MoveQuery" on <see cref="BaseSystem{W,T}.Update"/>.
    /// </summary>
    /// <param name="time">The <see cref="GameTime"/>, passed by the "MoveQuery".</param>
    /// <param name="pos">The <see cref="Position"/> of the <see cref="Entity"/>. Passed by the "MoveQuery".</param>
    /// <param name="vel">The <see cref="Velocity"/> of the <see cref="Entity"/>. Passed by the "MoveQuery".</param>
    [Query(Parallel = true)]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void Move([Data] GameTime time, ref Position pos, ref Velocity vel)
    {
        pos.Vector2 += time.ElapsedGameTime.Milliseconds * vel.Vector2;
    }
    
    /// <summary>
    ///     Called for each <see cref="Entity"/> to move it.
    ///     The calling takes place through the source generated method "MoveQuery" on <see cref="BaseSystem{W,T}.Update"/>.
    /// </summary>
    /// <param name="pos">The <see cref="Position"/> of the <see cref="Entity"/>. Passed by the "MoveQuery".</param>
    /// <param name="vel">The <see cref="Velocity"/> of the <see cref="Entity"/>. Passed by the "MoveQuery".</param>
    [Query]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Bounce(ref Position pos, ref Velocity vel)
    {
        if (pos.Vector2.X >= _viewport.X + _viewport.Width)
            vel.Vector2.X = -vel.Vector2.X;
            
        if (pos.Vector2.Y >= _viewport.Y + _viewport.Height)
            vel.Vector2.Y = -vel.Vector2.Y;
            
        if (pos.Vector2.X <= _viewport.X)
            vel.Vector2.X = -vel.Vector2.X;
            
        if (pos.Vector2.Y <= _viewport.Y)
            vel.Vector2.Y = -vel.Vector2.Y;
    }
}

/// <summary>
///     Color system, modifies each entities color slowly. 
/// </summary>
public partial class ColorSystem : BaseSystem<World, GameTime>
{
    /// <summary>
    ///     Creates an <see cref="ColorSystem"/> instance.
    /// </summary>
    /// <param name="world"></param>
    public ColorSystem(World world) : base(world) {}

    /// <summary>
    ///     Called for each <see cref="Entity"/> to change its color.
    ///     The calling takes place through the source generated method "ChangeColorQuery" on <see cref="BaseSystem{W,T}.Update"/>.
    /// </summary>
    /// <param name="time">The <see cref="GameTime"/> Passed by the "MoveQuery".</param>
    /// <param name="sprite">The <see cref="Sprite"/> of the <see cref="Entity"/>. Passed by the "ChangeColorQuery".</param>
    [Query]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void ChangeColor([Data] GameTime time, ref Sprite sprite)
    {
        sprite.Color.R += (byte)(time.ElapsedGameTime.TotalMilliseconds * 0.08);
        sprite.Color.G += (byte)(time.ElapsedGameTime.TotalMilliseconds * 0.08);
        sprite.Color.B += (byte)(time.ElapsedGameTime.TotalMilliseconds * 0.08);
    }
}

/// <summary>
///     The draw system, handles the drawing of <see cref="Entity"/> sprites at their position. 
/// </summary>
public partial class DrawSystem : BaseSystem<World, GameTime>
{
    /// <summary>
    ///     The <see cref="SpriteBatch"/> used for drawing all <see cref="Entity"/>s.
    /// </summary>
    private readonly SpriteBatch _batch;
    
    /// <summary>
    ///     Creates a <see cref="DrawSystem"/> instance.
    /// </summary>
    /// <param name="world">The <see cref="World"/> used.</param>
    /// <param name="batch">The <see cref="SpriteBatch"/> used.</param>
    public DrawSystem(World world, SpriteBatch batch) : base(world) { _batch = batch;}

    /// <summary>
    ///     Is called before the <see cref="BaseSystem{W,T}.Update"/> to start with the <see cref="SpriteBatch"/> recording.
    /// </summary>
    /// <param name="t">The <see cref="GameTime"/>.</param>
    public override void BeforeUpdate(in GameTime t)
    {
        base.BeforeUpdate(in t);
        _batch.Begin();
    }

    /// <summary>
    ///     Called for each <see cref="Entity"/> to draw it.
    ///     The calling takes place through the source generated method "DrawQuery" on <see cref="BaseSystem{W,T}.Update"/>.
    /// </summary>
    /// <param name="position">The <see cref="Position"/> of the <see cref="Entity"/>. Passed by the "DrawQuery".</param>
    /// <param name="sprite">The <see cref="Sprite"/> of the <see cref="Entity"/>. Passed by the "DrawQuery".</param>
    [Query]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Draw(ref Position position, ref Sprite sprite)
    {
        _batch.Draw(sprite.Texture2D, position.Vector2, sprite.Color);  // Draw
    }

    /// <summary>
    ///     Is called after the <see cref="BaseSystem{W,T}.Update"/> to stop the <see cref="SpriteBatch"/> recording.
    /// </summary>
    /// <param name="t">The <see cref="GameTime"/>.</param>
    public override void AfterUpdate(in GameTime t)
    {
        base.AfterUpdate(in t);
        _batch.End();
    }
}

/// <summary>
///     The debug system, shows how you can combine source generated queries and default ones. 
/// </summary>
public partial class DebugSystem : BaseSystem<World, GameTime>
{
    /// <summary>
    ///     A custom <see cref="QueryDescription"/> which targets <see cref="Entity"/>s with <see cref="Position"/> and <see cref="Sprite"/> without <see cref="Velocity"/>.
    /// </summary>
    private readonly QueryDescription _customQuery = new QueryDescription().WithAll<Position, Sprite>().WithNone<Velocity>();

    /// <summary>
    ///     Creates a new <see cref="DebugSystem"/> instance. 
    /// </summary>
    /// <param name="world">The <see cref="World"/> used.</param>
    public DebugSystem(World world) : base(world)
    {
        Hook();
    }

    /// <summary>
    ///     Implements <see cref="BaseSystem{W,T}.Update"/> to call the custom Query and the source generated one. 
    /// </summary>
    /// <param name="t">The <see cref="GameTime"/>.</param>
    public override void Update(in GameTime t)
    {
        World.Query(in _customQuery, entity => Console.WriteLine($"Custom : {entity}"));  // Manual query
        PrintEntitiesWithoutVelocityQuery(World);  // Call source generated query, which calls the PrintEntitiesWithoutVelocity method
    }

    /// <summary>
    ///     Called for each <see cref="Entity"/> with <see cref="Position"/> and <see cref="Sprite"/> without <see cref="Velocity"/> to print it.
    ///     The calling takes place through the source generated method "PrintEntitiesWithoutVelocityQuery" on <see cref="DebugSystem.Update"/>.
    /// </summary>
    /// <param name="en">The <see cref="Entity"/>. Passed by the "PrintEntitiesWithoutVelocityQuery", you can also pass components or data parameters as usual.</param>
    [Query]
    [All<Position, Sprite>, None<Velocity>]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void PrintEntitiesWithoutVelocity(in Entity en)
    {
        Console.WriteLine(en);
    }

    /// <summary>
    ///     Receives dispatched keyboard events and if the a key was pressed, prints it.
    ///     Runs before any other event receiver of this kind.
    /// </summary>
    /// <param name="tuple">The event listened to.</param>
    [Event(order: 0)]
    public void OnKeyboardEventPrint(ref (World world, KeyboardState state) tuple)
    {
        if (!tuple.state.IsKeyDown(Keys.A)) return;
        Console.WriteLine($"Key a was pressed.");
    }
}

/// <summary>
/// A event handler class using the source generated eventbus to intercept and react to events to decouple logic. 
/// </summary>
public static partial class EventHandler
{

    /// <summary>
    /// Listens for <see cref="ValueTuple{T1,T2}"/> events with a <see cref="World"/> and <see cref="KeyboardState"/> to check if the delte key was pressed.
    /// If thats the case, it will remove the <see cref="Velocity"/> component from all of them. 
    /// </summary>
    /// <param name="tuple"></param>
    [Event(order: 1)]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void OnDeleteStopEntities(ref (World world, KeyboardState state) tuple)
    {
        if (!tuple.state.IsKeyDown(Keys.Delete)) return;
        
        // Query for velocity entities and remove their velocity to make them stop moving. 
        var queryDesc = new QueryDescription().WithAll<Velocity>();
        tuple.world.Query(in queryDesc, entity => entity.Remove<Velocity>());
    }
}

================================================
FILE: Arch.Extended.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34408.163
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.System.SourceGenerator", "Arch.System.SourceGenerator\Arch.System.SourceGenerator.csproj", "{CBF9A4D4-5E31-4457-8F7B-EBC01EB86AF2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.Extended.Sample", "Arch.Extended.Sample\Arch.Extended.Sample.csproj", "{ED61027D-1586-4349-A6F8-17665C786678}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.System", "Arch.System\Arch.System.csproj", "{39363918-BFC7-43BF-8307-F5581225FB41}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.EventBus", "Arch.EventBus\Arch.EventBus.csproj", "{8BBA34D1-7DAB-4410-8762-09F7CC543D1E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.LowLevel", "Arch.LowLevel\Arch.LowLevel.csproj", "{00B44305-AB3D-438B-9EB9-8EF1ED2E8394}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.LowLevel.Tests", "Arch.LowLevel.Tests\Arch.LowLevel.Tests.csproj", "{9E2F4FCC-1875-49A6-98F1-1D2DA8460984}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.Persistence", "Arch.Persistence\Arch.Persistence.csproj", "{4E946A7C-5AB3-4AD6-8B80-D27563CF1D6A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.Relationships", "Arch.Relationships\Arch.Relationships.csproj", "{533453B9-957E-401E-B639-DC81DD0265EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.Relationships.Tests", "Arch.Relationships.Tests\Arch.Relationships.Tests.csproj", "{EDAFD1B8-5FC3-4002-B2AD-5B976B809D1C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.System.SourceGenerator.SnapshotTests", "Arch.System.SourceGenerator.SnapshotTests\Arch.System.SourceGenerator.SnapshotTests.csproj", "{156F6B43-B5F7-48FB-BBDB-85B3968BBE56}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Arch.System.SourceGenerator.Tests", "Arch.System.SourceGenerator.Tests\Arch.System.SourceGenerator.Tests.csproj", "{FDDA22B1-43DF-48E6-82CE-BC528C8349B9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Arch.AOT.SourceGenerator", "Arch.AOT.SourceGenerator\Arch.AOT.SourceGenerator.csproj", "{454AC3E0-A46A-4620-A377-3A360B8D11A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Arch.Persistence.Tests", "Arch.Persistence.Tests\Arch.Persistence.Tests.csproj", "{15E851C2-ACD6-4626-A7E4-46AA4CCD3BD5}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{CBF9A4D4-5E31-4457-8F7B-EBC01EB86AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{CBF9A4D4-5E31-4457-8F7B-EBC01EB86AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{CBF9A4D4-5E31-4457-8F7B-EBC01EB86AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{CBF9A4D4-5E31-4457-8F7B-EBC01EB86AF2}.Release|Any CPU.Build.0 = Release|Any CPU
		{ED61027D-1586-4349-A6F8-17665C786678}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{ED61027D-1586-4349-A6F8-17665C786678}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{ED61027D-1586-4349-A6F8-17665C786678}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{ED61027D-1586-4349-A6F8-17665C786678}.Release|Any CPU.Build.0 = Release|Any CPU
		{39363918-BFC7-43BF-8307-F5581225FB41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{39363918-BFC7-43BF-8307-F5581225FB41}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{39363918-BFC7-43BF-8307-F5581225FB41}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{39363918-BFC7-43BF-8307-F5581225FB41}.Release|Any CPU.Build.0 = Release|Any CPU
		{8BBA34D1-7DAB-4410-8762-09F7CC543D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{8BBA34D1-7DAB-4410-8762-09F7CC543D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{8BBA34D1-7DAB-4410-8762-09F7CC543D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{8BBA34D1-7DAB-4410-8762-09F7CC543D1E}.Release|Any CPU.Build.0 = Release|Any CPU
		{00B44305-AB3D-438B-9EB9-8EF1ED2E8394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{00B44305-AB3D-438B-9EB9-8EF1ED2E8394}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{00B44305-AB3D-438B-9EB9-8EF1ED2E8394}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{00B44305-AB3D-438B-9EB9-8EF1ED2E8394}.Release|Any CPU.Build.0 = Release|Any CPU
		{9E2F4FCC-1875-49A6-98F1-1D2DA8460984}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{9E2F4FCC-1875-49A6-98F1-1D2DA8460984}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{9E2F4FCC-1875-49A6-98F1-1D2DA8460984}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{9E2F4FCC-1875-49A6-98F1-1D2DA8460984}.Release|Any CPU.Build.0 = Release|Any CPU
		{4E946A7C-5AB3-4AD6-8B80-D27563CF1D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{4E946A7C-5AB3-4AD6-8B80-D27563CF1D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{4E946A7C-5AB3-4AD6-8B80-D27563CF1D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{4E946A7C-5AB3-4AD6-8B80-D27563CF1D6A}.Release|Any CPU.Build.0 = Release|Any CPU
		{533453B9-957E-401E-B639-DC81DD0265EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{533453B9-957E-401E-B639-DC81DD0265EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{533453B9-957E-401E-B639-DC81DD0265EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{533453B9-957E-401E-B639-DC81DD0265EC}.Release|Any CPU.Build.0 = Release|Any CPU
		{EDAFD1B8-5FC3-4002-B2AD-5B976B809D1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EDAFD1B8-5FC3-4002-B2AD-5B976B809D1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EDAFD1B8-5FC3-4002-B2AD-5B976B809D1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EDAFD1B8-5FC3-4002-B2AD-5B976B809D1C}.Release|Any CPU.Build.0 = Release|Any CPU
		{156F6B43-B5F7-48FB-BBDB-85B3968BBE56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{156F6B43-B5F7-48FB-BBDB-85B3968BBE56}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{156F6B43-B5F7-48FB-BBDB-85B3968BBE56}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{156F6B43-B5F7-48FB-BBDB-85B3968BBE56}.Release|Any CPU.Build.0 = Release|Any CPU
		{FDDA22B1-43DF-48E6-82CE-BC528C8349B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{FDDA22B1-43DF-48E6-82CE-BC528C8349B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{FDDA22B1-43DF-48E6-82CE-BC528C8349B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{FDDA22B1-43DF-48E6-82CE-BC528C8349B9}.Release|Any CPU.Build.0 = Release|Any CPU
		{454AC3E0-A46A-4620-A377-3A360B8D11A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{454AC3E0-A46A-4620-A377-3A360B8D11A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{454AC3E0-A46A-4620-A377-3A360B8D11A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{454AC3E0-A46A-4620-A377-3A360B8D11A3}.Release|Any CPU.Build.0 = Release|Any CPU
		{15E851C2-ACD6-4626-A7E4-46AA4CCD3BD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{15E851C2-ACD6-4626-A7E4-46AA4CCD3BD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{15E851C2-ACD6-4626-A7E4-46AA4CCD3BD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{15E851C2-ACD6-4626-A7E4-46AA4CCD3BD5}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal


================================================
FILE: Arch.Extended.sln.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/Environment/Hierarchy/Build/BuildTool/CustomBuildToolPath/@EntryValue">/usr/local/share/dotnet/sdk/8.0.101/MSBuild.dll</s:String>
	<s:Int64 x:Key="/Default/Environment/Hierarchy/Build/BuildTool/MsbuildVersion/@EntryValue">4294967293</s:Int64></wpf:ResourceDictionary>

================================================
FILE: Arch.LowLevel/Arch.LowLevel.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>net7.0; net6.0; netstandard2.1</TargetFrameworks>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>

        <GenerateDocumentationFile>true</GenerateDocumentationFile>
        <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
        <IncludeSymbols>true</IncludeSymbols>
        <SymbolPackageFormat>snupkg</SymbolPackageFormat>

        <PackageId>Arch.LowLevel</PackageId>
        <Title>Arch.LowLevel</Title>
        <Version>1.1.5</Version>
        <Authors>genaray</Authors>
        <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
        <Description>LowLevel tools for arch.</Description>
        <PackageReleaseNotes>Refactored JaggedArrays.
Increased performance of JaggedArrays.
Added Array, a new class that acts as a Wrapper around normal generic Arrays for unsafe operations. 
Added tests. 
Bug fixes.</PackageReleaseNotes>
        <PackageTags>c#;.net;.net6;.net7;ecs;game;entity;gamedev; game-development; game-engine; entity-component-system; arch;</PackageTags>

        <PackageProjectUrl>https://github.com/genaray/Arch.Extended</PackageProjectUrl>
        <RepositoryUrl>https://github.com/genaray/Arch.Extended.git</RepositoryUrl>
        <RepositoryType>git</RepositoryType>
        <IsPackable>true</IsPackable>

        <LangVersion>11</LangVersion>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
        <Copyright>Apache2.0</Copyright>
        <PackageLicenseUrl></PackageLicenseUrl>
        <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>

        <UnityPublish>true</UnityPublish>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="CommunityToolkit.HighPerformance" Version="8.2.2" />
      <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
    </ItemGroup>

</Project>


================================================
FILE: Arch.LowLevel/Array.cs
================================================
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using CommunityToolkit.HighPerformance;

namespace Arch.LowLevel;


/// <summary>
///     The <see cref="Array{T}"/> struct
///     represents an allocated array of managed items which wraps them to acess the items via an unsafe operations.
/// </summary>
/// <typeparam name="T">The managed generic.</typeparam>
[DebuggerTypeProxy(typeof(ArrayDebugView<>))]
public readonly struct Array<T> 
{
    
    /// <summary>
    ///     The static empty <see cref="Array{T}"/>.
    /// </summary>
    internal static Array<T> Empty = new(0);
    
    /// <summary>
    ///     The pointer, pointing towards the first element of this <see cref="Array{T}"/>.
    /// </summary>
    internal readonly T[] _array;

    /// <summary>
    ///     Creates an instance of the <see cref="Array{T}"/>.
    ///     Allocates the array for the passed count of items.
    /// </summary>
    /// <param name="count">The arrays count or capacity.</param>
    public Array(int count)
    {
        _array = new T[count];
        Count = count;
    }

    /// <summary>
    ///     Creates an instance of the <see cref="Array{T}"/>.
    ///     Allocates the array for the passed count of items.
    /// </summary>
    /// <param name="array">The array used.</param>
    public Array(T[] array)
    {
        this._array = array;
        Count = array.Length;
    }

    /// <summary>
    ///     The count of this <see cref="Array{T}"/> instance, its capacity.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;
    }

    /// <summary>
    ///     The count of this <see cref="UnsafeArray{T}"/> instance, its capacity.
    /// </summary>
    public int Length
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count;
    }

    /// <summary>
    ///     Returns a reference to an item at a given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref _array.DangerousGetReferenceAt(i);
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeArray{T}"/> instance into a <see cref="Span{T}"/>.
    /// </summary>
    /// <returns>A new instance of <see cref="Span{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Span<T> AsSpan()
    {
        return MemoryMarshal.CreateSpan(ref this[0], Count);
    }
    
    /// <summary>
    ///     Creates an instance of a <see cref="UnsafeEnumerator{T}"/> for ref acessing the array content.
    /// </summary>
    /// <returns>A new <see cref="UnsafeEnumerator{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Enumerator<T> GetEnumerator()
    {
        return new Enumerator<T>(AsSpan());
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="other">The other <see cref="UnsafeArray"/>.</param>
    /// <returns>True if equal, oterwhise false.</returns>
    public bool Equals(Array<T> other)
    {
        return _array == other._array && Count == other.Count;
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="obj">The other <see cref="UnsafeArray"/>.</param>
    /// <returns>True if equal, oterwhise false.</returns>
    public override bool Equals(object? obj)
    {
        return obj is Array<T> other && Equals(other);
    }
    
    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeArray"/>.</param>
    /// <param name="right">The second <see cref="UnsafeArray"/>.</param>
    /// <returns></returns>
    public static bool operator ==(Array<T> left, Array<T> right)
    {
        return left.Equals(right);
    }

    /// <summary>
    ///     Checks for inequality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeArray"/>.</param>
    /// <param name="right">The second <see cref="UnsafeArray"/>.</param>
    /// <returns></returns>
    public static bool operator !=(Array<T> left, Array<T> right)
    {
        return !left.Equals(right);
    }

    /// <summary>
    ///     Returns the hash of this <see cref="UnsafeArray"/>.
    /// </summary>
    /// <returns></returns>
    public override int GetHashCode()
    {
        return _array.GetHashCode();
    }
    
    /// <summary>
    ///     Converts an <see cref="Array{T}"/> into a generic array.
    /// </summary>
    /// <param name="instance">The <see cref="Array{T}"/> instance.</param>
    /// <returns>The array.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static implicit operator T[](Array<T> instance)
    {
        return instance._array;
    }
    
    /// <summary>
    ///     Converts an <see cref="Array{T}"/> into a generic array.
    /// </summary>
    /// <param name="instance">The <see cref="Array{T}"/> instance.</param>
    /// <returns>The array.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static implicit operator Array<T>(T[] instance)
    {
        return new Array<T>(instance);
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeArray{T}"/> to a string.
    /// </summary>
    /// <returns>The string.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public override string ToString()
    {
        var items = new StringBuilder();
        foreach (ref var item in this)
        {
            items.Append($"{item},");
        }
        items.Length--;
        return $"Array<{typeof(T).Name}>[{Count}]{{{items}}}";
    }
}


/// <summary>
/// Array.
/// </summary>
public unsafe struct Array
{

    /// <summary>
    ///     Returns an empty <see cref="UnsafeArray{T}"/>.
    /// </summary>
    /// <typeparam name="T">The generic type.</typeparam>
    /// <returns>The empty <see cref="UnsafeArray{T}"/>.</returns>
    public static Array<T> Empty<T>()
    {
        return Array<T>.Empty;
    }
    
    /// <summary>
    ///  Copies the a part of the <see cref="UnsafeArray{T}"/> to the another <see cref="UnsafeArray{T}"/>.
    /// </summary>
    /// <param name="source">The source <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="index">The start index in the source <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="destination">The destination <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="destinationIndex">The start index in the destination <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="length">The length indicating the amount of items being copied.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void Copy<T>(ref Array<T> source, int index, ref Array<T> destination, int destinationIndex, int length)
    {
        System.Array.Copy(source._array, index, destination._array, destinationIndex, length);
    }


    /// <summary>
    ///     Fills an <see cref="UnsafeArray{T}"/> with a given value.
    /// </summary>
    /// <param name="source">The <see cref="UnsafeArray{T}"/> instance.</param>
    /// <param name="value">The value.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void Fill<T>(ref Array<T> source, in T value = default!) 
    {
        source.AsSpan().Fill(value);
    }
    
    /// <summary>
    ///     Resizes an <see cref="UnsafeArray{T}"/> to a new <paramref name="newCapacity"/>.
    /// </summary>
    /// <param name="source">The <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="newCapacity">The new capacity.</param>
    /// <typeparam name="T">The generic type.</typeparam>
    /// <returns>The new resized <see cref="UnsafeArray{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static Array<T> Resize<T>(ref Array<T> source, int newCapacity) 
    {
        // Create a new array with the new capacity
        var destination = new Array<T>(newCapacity);
    
        // Calculate the number of elements to copy
        var lengthToCopy = Math.Min(source.Length, newCapacity);
        Copy(ref source, 0, ref destination, 0, lengthToCopy);
        return destination;
    }
}

/// <summary>
///     A debug view for the <see cref="UnsafeArray{T}"/>.
/// </summary>
/// <typeparam name="T">The unmanaged type.</typeparam>
internal class ArrayDebugView<T> where T : unmanaged
{
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    private readonly Array<T> _entity;

    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public T[] Items
    {
        get
        {
            var items = new T[_entity.Count];
            _entity.AsSpan().CopyTo(items);
            return items;
        }
    }

    public ArrayDebugView(Array<T> entity) => _entity = entity;
}

================================================
FILE: Arch.LowLevel/Enumerators.cs
================================================
using System.Collections;
using System.Runtime.CompilerServices;

namespace Arch.LowLevel;

/// <summary>
///     The <see cref="Enumerator{T}"/> is a basic implementation of an enumerator for the <see cref="Array{T}"/>>.
/// </summary>
/// <typeparam name="T"></typeparam>
public unsafe ref struct Enumerator<T> 
{
    private readonly Span<T> _list;
    private readonly int _count;
    private int _index;

    /// <summary>
    ///     Creates an instance of the <see cref="Enumerator{T}"/>.
    /// </summary>
    /// <param name="list">The <see cref="Span{T}"/>.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal Enumerator(Span<T> list)
    {
        _list = list;
        _count = list.Length;
        _index = -1;
    }

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    public readonly ref T Current => ref _list[_index];

    /// <summary>
    ///     Moves to the next item.
    /// </summary>
    /// <returns></returns>
    public bool MoveNext()
    {
        return unchecked(++_index < _count);
    }

    /// <summary>
    ///     Resets the enumerator.
    /// </summary>
    public void Reset()
    {
        _index = -1;
    }
}

/// <summary>
///     The <see cref="UnsafeIEnumerator{T}"/> is a basic implementation of the <see cref="IEnumerator{T}"/> interface for the <see cref="UnsafeList{T}"/>.
/// </summary>
/// <typeparam name="T"></typeparam>
public unsafe struct UnsafeIEnumerator<T> : IEnumerator<T> where T : unmanaged
{
    private readonly T* _list;
    private readonly int _count;
    private int _index;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeIEnumerator{T}"/>.
    /// </summary>
    /// <param name="list">The <see cref="UnsafeList{T}"/>.</param>
    /// <param name="count">Count.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal UnsafeIEnumerator(T* list, int count)
    {
        _list = list;
        _count = count;
        _index = -1;
    }

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    public T Current => _list[_index];

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    object IEnumerator.Current => _list[_index];

    /// <summary>
    ///     Disposes this enumerator.
    /// </summary>
    public void Dispose() { }   // nop

    /// <summary>
    ///     Moves to the next item.
    /// </summary>
    /// <returns></returns>
    public bool MoveNext()
    {
        return unchecked(++_index < _count);
    }

    /// <summary>
    ///     Resets the enumerator.
    /// </summary>
    public void Reset()
    {
        _index = -1;
    }
}

/// <summary>
///     The <see cref="UnsafeIEnumerator{T}"/> is a basic implementation of the <see cref="IEnumerator{T}"/> interface for the <see cref="UnsafeList{T}"/>.
/// </summary>
/// <typeparam name="T"></typeparam>
public unsafe ref struct UnsafeEnumerator<T> where T : unmanaged
{
    private readonly T* _list;
    private readonly int _count;
    private int _index;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeIEnumerator{T}"/>.
    /// </summary>
    /// <param name="list">The <see cref="UnsafeList{T}"/>.</param>
    /// <param name="count">Count.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal UnsafeEnumerator(T* list, int count)
    {
        _list = list;
        _count = count;
        _index = -1;
    }

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    public ref T Current => ref _list[_index];

    /// <summary>
    ///     Moves to the next item.
    /// </summary>
    /// <returns></returns>
    public bool MoveNext()
    {
        return unchecked(++_index < _count);
    }

    /// <summary>
    ///     Resets the enumerator.
    /// </summary>
    public void Reset()
    {
        _index = -1;
    }
}

/// <summary>
///     The <see cref="ReverseIEnumerator{T}"/> is a basic implementation of the <see cref="IEnumerator{T}"/> interface for iterating backwards.
/// </summary>
/// <typeparam name="T"></typeparam>
public unsafe struct ReverseIEnumerator<T> : IEnumerator<T> where T : unmanaged
{
    private readonly T* _list;
    private readonly int _count;
    private int _index;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeIEnumerator{T}"/>.
    /// </summary>
    /// <param name="list">The <see cref="UnsafeList{T}"/>.</param>
    /// <param name="count">Count.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal ReverseIEnumerator(T* list, int count)
    {
        _list = list;
        _count = count;
        _index = count+1;
    }

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    public T Current => _list[_index-1];

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    object IEnumerator.Current => _list[_index-1];

    /// <summary>
    ///     Disposes this enumerator.
    /// </summary>
    public void Dispose() { }   // nop

    /// <summary>
    ///     Moves to the next item.
    /// </summary>
    /// <returns></returns>
    public bool MoveNext()
    {
        return unchecked(--_index > 0);
    }

    /// <summary>
    ///     Resets the enumerator.
    /// </summary>
    public void Reset()
    {
        _index = _count+1;
    }
}
/// <summary>
///     The <see cref="UnsafeReverseEnumerator{T}"/> is a basic implementation of the <see cref="IEnumerator{T}"/> interface for iterating backwards.
/// </summary>
/// <typeparam name="T"></typeparam>
public unsafe ref struct UnsafeReverseEnumerator<T> where T : unmanaged
{
    private readonly T* _list;
    private readonly int _count;
    private int _index;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeIEnumerator{T}"/>.
    /// </summary>
    /// <param name="list">The <see cref="UnsafeList{T}"/>.</param>
    /// <param name="count">Count.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal UnsafeReverseEnumerator(T* list, int count)
    {
        _list = list;
        _count = count;
        _index = count+1;
    }

    /// <summary>
    ///     Returns the current item.
    /// </summary>
    public ref T Current => ref _list[_index-1];

    /// <summary>
    ///     Moves to the next item.
    /// </summary>
    /// <returns></returns>
    public bool MoveNext()
    {
        return unchecked(--_index > 0);
    }

    /// <summary>
    ///     Resets the enumerator.
    /// </summary>
    public void Reset()
    {
        _index = _count+1;
    }
}

================================================
FILE: Arch.LowLevel/Jagged/JaggedArray.cs
================================================
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using CommunityToolkit.HighPerformance;

namespace Arch.LowLevel.Jagged;

/// <summary>
///     The <see cref="MathExtensions"/>
///     contains several methods for math operations.
/// </summary>
internal static class MathExtensions
{
    /// <summary>
    /// This method will round down to the nearest power of 2 number. If the supplied number is a power of 2 it will return it.
    /// </summary>
    /// <param name="num"></param>
    /// <returns></returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal static int RoundToPowerOfTwo(int num)
    {
        // If num is a power of 2, return it
        if (num > 0 && (num & (num - 1)) == 0)
        {
            return num;
        }

        // Find the exponent of the nearest power of 2 (rounded down)
        var exponent = (int)Math.Floor(Math.Log(num) / Math.Log(2));

        // Calculate the nearest power of 2
        var result = (int)Math.Pow(2, exponent);

        return result;
    }
}

/// <summary>
///     The <see cref="Bucket{T}"/> struct
///     represents a bucket of the <see cref="JaggedArray{T}"/> where items are stored
/// </summary>
/// <typeparam name="T"></typeparam>
public record struct Bucket<T>
{
    /// <summary>
    ///     The items array.
    /// </summary>
    internal readonly T[] Array = System.Array.Empty<T>();
    
    /// <summary>
    ///     Creates an instance of the <see cref="Bucket{T}"/>.
    /// </summary>
    /// <param name="capacity">The capacity</param>
    public Bucket(int capacity)
    {
        Array = new T[capacity];
    }
    
    /// <summary>
    ///     The amount of items in this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        internal set;
    }

    /// <summary>
    ///     If this <see cref="Bucket{T}"/> is empty.
    /// </summary>
    public bool IsEmpty
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count <= 0;
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref Array.DangerousGetReferenceAt(i);
    }
    
    /// <summary>
    ///     Clears this <see cref="Bucket{T}"/> and sets all values to the <paramref name="filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear(T filler = default!)
    {
        System.Array.Fill(Array, filler);
    }
}

/// <summary>
///     The <see cref="JaggedArray{T}"/> class,
///     represents a jagged array with <see cref="Bucket{T}"/>s storing the items.
/// </summary>
/// <typeparam name="T"></typeparam>
public class JaggedArray<T>
{
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items.
    /// </summary>
    private readonly int _bucketSize;
    
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items - 1.
    /// </summary>
    private readonly int _bucketSizeMinusOne;

    /// <summary>
    ///     The <see cref="_bucketSize"/> is always a value the power of 2, therefore we can use a bitshift for the division during the index calculation. 
    /// </summary>
    private readonly int _bucketSizeShift;
    
    /// <summary>
    ///     The allocated <see cref="Bucket{T}"/>s.
    /// </summary>
    private Array<Bucket<T>> _buckets;

    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;
    
    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public JaggedArray(int bucketSize, int capacity = 64)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _buckets = new Array<Bucket<T>>(capacity/_bucketSize + 1);
        
        _filler = default!;

        // Fill buckets
        for (var i = 0; i < _buckets.Length; i++)
        {
            var bucket = new Bucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="filler">The filler value for all slots, basically a custom default-value.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public JaggedArray(int bucketSize, T filler, int capacity = 64) : this(bucketSize, capacity)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _buckets = new Bucket<T>[capacity/_bucketSize + 1];
        
        _filler = filler;

        // Fill buckets
        for (var i = 0; i < _buckets.Length; i++)
        {
            var bucket = new Bucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }
    
    /// <summary>
    ///     The capacity, the total amount of items. 
    /// </summary>
    public int Capacity => _buckets.Length * _bucketSize;

    /// <summary>
    ///     The length, the buckets inside the <see cref="_buckets"/>.
    /// </summary>
    public int Buckets => _buckets.Length;

    /// <summary>
    ///     Adds an item to the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="item">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Add(int index, in T item)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = item;
        bucket.Count++;
    }

    /// <summary>
    ///     Removes an item from the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Remove(int index)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = _filler;
        bucket.Count--;
    }
    
    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="value">The returned value.</param>
    /// <returns>True if sucessfull, otherwhise false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool TryGetValue(int index, out T value)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            value = _filler;
            return false;
        }

        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            value = _filler;
            return false;
        }

        value = item;
        return true;
    }
    
    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bool">True if sucessfull, otherwhise false</param>
    /// <returns>A reference or null reference to the item.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T TryGetValue(int index, out bool @bool)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }

        @bool = true;
        return ref item!; 
    }
    
    /// <summary>
    ///     Checks if the value at the given index exists.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>True if it does, false if it does not.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool ContainsKey(int index)
    {
        if (index < 0 || index > Capacity)
        {
            return false;
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        return !EqualityComparer<T>.Default.Equals(item, _filler);
    }

    /// <summary>
    ///     Ensures the capacity and increases it if necessary.
    /// </summary>
    /// <param name="newCapacity">The new capcity.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int newCapacity)
    {
        if (newCapacity < Capacity)
        {
            return;
        }

        var length = Buckets;
        var buckets = newCapacity / _bucketSize + 1;
        _buckets = Array.Resize(ref _buckets, buckets);

        for (var i = length; i < _buckets.Length; i++)
        {
            var bucket = new Bucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     Trims the last few empty buckets to release memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        // Count how many of the last buckets are empty, to trim them
        var count = 0;
        for (var i = _buckets.Length-1; i >= 0; i--)
        {
            ref var bucket = ref GetBucket(i);
            if (!bucket.IsEmpty)
            {
                break;
            }

            count++;
        }

        var buckets = _buckets.Length-count;
        _buckets = Array.Resize(ref _buckets, buckets);
    }

    /// <summary>
    ///     Converts the passed id to its inner and outer index ( or slot ) inside the <see cref="_buckets"/> array.
    /// </summary>
    /// <param name="id">The id.</param>
    /// <param name="bucketIndex">The outer index.</param>
    /// <param name="itemIndex">The inner index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void IndexToSlot(int id, out int bucketIndex, out int itemIndex)
    {
        Debug.Assert(id >= 0, "Id cannot be negative.");

        /* Instead of the '%' operator we can use logical '&' operator which is faster. But it requires the bucket size to be a power of 2. */
        bucketIndex = id >> _bucketSizeShift;
        itemIndex = id & _bucketSizeMinusOne;
    }
    
    /// <summary>
    ///     Returns the <see cref="Bucket{T}"/> from the <see cref="_buckets"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>The <see cref="Bucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref Bucket<T> GetBucket(int index)
    {
        return ref _buckets[index];
    }

    /// <summary>
    ///     Sets the <see cref="Bucket{T}"/> of the <see cref="_buckets"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bucket">The <see cref="Bucket{T}"/> to set</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void SetBucket(int index, in Bucket<T> bucket)
    {
        _buckets[index] = bucket;
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get
        {
            IndexToSlot(i, out var bucketIndex, out var itemIndex);
            return ref GetBucket(bucketIndex)[itemIndex];
        }
    }
    
    /// <summary>
    ///     Clears this <see cref="JaggedArray{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        foreach (var bucket in _buckets)
        {
            if (bucket.IsEmpty)
            {
                continue;
            }
            
            bucket.Clear(_filler);
        }
    }
}

================================================
FILE: Arch.LowLevel/Jagged/SparseJaggedArray.cs
================================================
using CommunityToolkit.HighPerformance;

namespace Arch.LowLevel.Jagged;

using System.Diagnostics;
using System.Runtime.CompilerServices;

/// <summary>
///     The <see cref="SparseBucket{T}"/> struct
///     represents a bucket of the <see cref="SparseJaggedArray{T}"/> where items are stored.
///     <remarks>It will not allocate memory upon creation, it stays empty till the first item was added in.</remarks>
/// </summary>
/// <typeparam name="T"></typeparam>
public record struct SparseBucket<T>
{
    /// <summary>
    ///     The items array.
    /// </summary>
    internal T[] Array = System.Array.Empty<T>();
    
    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;

    /// <summary>
    ///     Creates an instance of the <see cref="Bucket{T}"/>.
    /// </summary>
    /// <param name="capacity">The total capacity.</param>
    /// <param name="filler">The filler.</param>
    /// <param name="allocate">If it should allocate straight forward.</param>
    public SparseBucket(int capacity, T filler, bool allocate = false)
    {
        Capacity = capacity;
        _filler = filler;
        if (allocate)
        {
            EnsureCapacity();
        }
    }

    /// <summary>
    ///     The total capacity of this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Capacity
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;
        
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private set;
    }
    
    /// <summary>
    ///     The amount of items in this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        internal set;
    }

    /// <summary>
    ///     If this <see cref="Bucket{T}"/> is empty.
    /// </summary>
    public bool IsEmpty
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count <= 0;
    }

    /// <summary>
    ///     Ensures the <see cref="Capacity"/> of this <see cref="Bucket{T}"/>.
    ///     Basically allocated a new array. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal void EnsureCapacity()
    {
        if (Array != System.Array.Empty<T>())
        {
            return;
        }
        
        Array = new T[Capacity];
        Clear();
    }

    /// <summary>
    ///     Trims the bucket to an empty one. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal void TrimExcess()
    {
        if (Count > 0)
        {
            return;
        }
        
        Array = System.Array.Empty<T>();
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref Array.DangerousGetReferenceAt(i);
    }
    
    /// <summary>
    ///     Clears this <see cref="SparseBucket{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        System.Array.Fill(Array, _filler);
    }
}

/// <summary>
///     The <see cref="SparseJaggedArray{T}"/> class,
///     represents a jagged array with <see cref="SparseBucket{T}"/>s storing the items.
///     <remarks>Its buckets will stay empty and not allocate memory till a slot in it is being used.</remarks>
/// </summary>
/// <typeparam name="T"></typeparam>
public class SparseJaggedArray<T>
{
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items.
    /// </summary>
    private readonly int _bucketSize;
    
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items - 1.
    /// </summary>
    private readonly int _bucketSizeMinusOne;
    
    /// <summary>
    ///     The <see cref="_bucketSize"/> is always a value the power of 2, therefore we can use a bitshift for the division during the index calculation. 
    /// </summary>
    private readonly int _bucketSizeShift;

    /// <summary>
    ///     The allocated <see cref="Bucket{T}"/>s.
    /// </summary>
    private Array<SparseBucket<T>> _buckets;

    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;
    
    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public SparseJaggedArray(int bucketSize, int capacity = 64)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _buckets = new Array<SparseBucket<T>>(capacity/_bucketSize + 1);
        
        _filler = default!;

        // Fill buckets
        for (var i = 0; i < _buckets.Length; i++)
        {
            var bucket = new SparseBucket<T>(_bucketSize, _filler);
            SetBucket(i, in bucket);
            bucket.Clear();
        }
    }

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="filler">The filler value for all slots, basically a custom default-value.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public SparseJaggedArray(int bucketSize, T filler, int capacity = 64) : this(bucketSize, capacity)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _buckets = new Array<SparseBucket<T>>(capacity/_bucketSize + 1);
        
        _filler = filler!;

        // Fill buckets
        for (var i = 0; i < _buckets.Length; i++)
        {
            var bucket = new SparseBucket<T>(_bucketSize, filler);
            SetBucket(i, in bucket);
            bucket.Clear();
        }
    }
    
    /// <summary>
    ///     If true, each bucket will stay empty and will not allocate memory until its actually being used. 
    /// </summary>
    public bool Sparse { get; set; }
    
    /// <summary>
    ///     The capacity, the total amount of items. 
    /// </summary>
    public int Capacity => _buckets.Length * _bucketSize;

    /// <summary>
    ///     The length, the buckets inside the <see cref="_buckets"/>.
    /// </summary>
    public int Buckets => _buckets.Length;

    /// <summary>
    ///     Adds an item to the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="item">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Add(int index, in T item)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        ref var bucket = ref GetBucket(bucketIndex);
        bucket.EnsureCapacity();
        bucket[itemIndex] = item;
        bucket.Count++;
    }

    /// <summary>
    ///     Removes an item from the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Remove(int index)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = _filler;
   
        bucket.Count--;
        bucket.TrimExcess();
    }

    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="value">The returned value.</param>
    /// <returns>True if sucessfull, otherwhise false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool TryGetValue(int index, out T value)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            value = _filler;
            return false;
        }

        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // Bucket empty? return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            value = _filler;
            return false;
        }
        
        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            value = _filler;
            return false;
        }

        value = item;
        return true;
    }
    
    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bool">True if sucessfull, otherwhise false</param>
    /// <returns>A reference or null reference to the item.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T TryGetValue(int index, out bool @bool)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // Bucket empty? return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }
        
        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }

        @bool = true;
        return ref item!; 
    }

    /// <summary>
    ///     Checks if the value at the given index exists.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>True if it does, false if it does not.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool ContainsKey(int index)
    {
        if (index < 0 || index >= Capacity)
        {
            return false;
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // If bucket empty return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            return false;
        }

        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        return !EqualityComparer<T>.Default.Equals(item, _filler);
    }

    /// <summary>
    ///     Ensures the capacity and increases it if necessary.
    /// </summary>
    /// <param name="newCapacity">The new capcity.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int newCapacity)
    {
        if (newCapacity < Capacity)
        {
            return;
        }

        var length = Buckets;
        var buckets = newCapacity / _bucketSize + 1;
        _buckets = Array.Resize(ref _buckets, buckets);

        for (var i = length; i < _buckets.Length; i++)
        {
            var bucket = new SparseBucket<T>(_bucketSize, _filler);
            SetBucket(i, bucket);
            bucket.Clear();
        }
    }

    /// <summary>
    ///     Trims the last few empty buckets to release memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        // Count how many of the last buckets are empty, to trim them
        var count = 0;
        for (var i = _buckets.Length-1; i >= 0; i--)
        {
            ref var bucket = ref GetBucket(i);
            if (!bucket.IsEmpty)
            {
                break;
            }

            count++;
        }

        var buckets = _buckets.Length-count;
        _buckets = Array.Resize(ref _buckets, buckets);
    }

    /// <summary>
    ///     Converts the passed id to its inner and outer index ( or slot ) inside the <see cref="_buckets"/> array.
    /// </summary>
    /// <param name="id">The id.</param>
    /// <param name="bucketIndex">The outer index.</param>
    /// <param name="itemIndex">The inner index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void IndexToSlot(int id, out int bucketIndex, out int itemIndex)
    {
        Debug.Assert(id >= 0, "Id cannot be negative.");

        /* Instead of the '%' operator we can use logical '&' operator which is faster. But it requires the bucket size to be a power of 2. */
        bucketIndex = id >> _bucketSizeShift;
        itemIndex = id & _bucketSizeMinusOne;
    }
    
    /// <summary>
    ///     Returns the <see cref="SparseBucket{T}"/> from the <see cref="_buckets"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>The <see cref="SparseBucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref SparseBucket<T> GetBucket(int index)
    {
        return ref _buckets[index];
    }
    
    /// <summary>
    ///     Sets the <see cref="SparseBucket{T}"/> of the <see cref="_buckets"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bucket">The <see cref="SparseBucket{T}"/> to set</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void SetBucket(int index, in SparseBucket<T> bucket)
    {
        _buckets[index] = bucket;
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get
        {
            IndexToSlot(i, out var bucketIndex, out var itemIndex);
            return ref GetBucket(bucketIndex)[itemIndex];
        }
    }
    
    /// <summary>
    ///     Clears this <see cref="SparseJaggedArray{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        foreach (var bucket in _buckets)
        {
            if (bucket.IsEmpty)
            {
                continue;
            }
            
            bucket.Clear();
        }
    }
}

================================================
FILE: Arch.LowLevel/Jagged/UnsafeJaggedArray.cs
================================================
using System.Diagnostics;
using System.Runtime.CompilerServices;

namespace Arch.LowLevel.Jagged;

/// <summary>
///     The <see cref="Bucket{T}"/> struct
///     represents a bucket of the <see cref="JaggedArray{T}"/> where items are stored
/// </summary>
/// <typeparam name="T"></typeparam>
public record struct UnsafeBucket<T> : IDisposable where T : unmanaged
{
    /// <summary>
    ///     The items array.
    /// </summary>
    internal UnsafeArray<T> Array = UnsafeArray.Empty<T>();
    
    /// <summary>
    ///     Creates an instance of the <see cref="Bucket{T}"/>.
    /// </summary>
    /// <param name="capacity">The capacity</param>
    public UnsafeBucket(int capacity)
    {
        Array = new UnsafeArray<T>(capacity);
    }
    
    /// <summary>
    ///     The amount of items in this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        internal set;
    }

    /// <summary>
    ///     If this <see cref="Bucket{T}"/> is empty.
    /// </summary>
    public bool IsEmpty
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count <= 0;
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref Array[i];
    }

    /// <summary>
    ///     Clears this <see cref="UnsafeBucket{T}"/> and sets all values to the <paramref name="filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear(T filler = default)
    {
        UnsafeArray.Fill(ref Array, filler);
    }
    
    /// <summary>
    ///     Disposes this <see cref="UnsafeBucket{T}"/>. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        Array.Dispose();
    }
}

/// <summary>
///     The <see cref="UnsafeJaggedArray{T}"/> class,
///     represents a jagged array with <see cref="UnsafeBucket{T}"/>s storing the items.
/// </summary>
/// <typeparam name="T"></typeparam>
public struct UnsafeJaggedArray<T> : IDisposable where T : unmanaged
{
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items.
    /// </summary>
    private readonly int _bucketSize;

    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items - 1.
    /// </summary>
    private readonly int _bucketSizeMinusOne;
    
    /// <summary>
    ///     The <see cref="_bucketSize"/> is always a value the power of 2, therefore we can use a bitshift for the division during the index calculation. 
    /// </summary>
    private readonly int _bucketSizeShift;

    /// <summary>
    ///     The allocated <see cref="Bucket{T}"/>s.
    /// </summary>
    private UnsafeArray<UnsafeBucket<T>> _bucketArray;

    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public UnsafeJaggedArray(int bucketSize, int capacity = 64)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _bucketArray = new UnsafeArray<UnsafeBucket<T>>(capacity / _bucketSize + 1);

        _filler = default!;
        
        // Fill buckets
        for (var i = 0; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeBucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="filler">The filler value for all slots, basically a custom default-value.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public UnsafeJaggedArray(int bucketSize, T filler, int capacity = 64)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _bucketArray = new UnsafeArray<UnsafeBucket<T>>(capacity / _bucketSize + 1);

        _filler = filler;
        
        // Fill buckets
        for (var i = 0; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeBucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     The capacity, the total amount of items. 
    /// </summary>
    public int Capacity => _bucketArray.Length * _bucketSize;

    /// <summary>
    ///     The length, the buckets inside the <see cref="_bucketArray"/>.
    /// </summary>
    public int Buckets => _bucketArray.Length;

    /// <summary>
    ///     Adds an item to the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="item">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Add(int index, in T item)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);

        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = item;
        bucket.Count++;
    }

    /// <summary>
    ///     Removes an item from the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Remove(int index)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);

        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = _filler;
        bucket.Count--;
    }

    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="value">The returned value.</param>
    /// <returns>True if sucessfull, otherwhise false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool TryGetValue(int index, out T value)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity )
        {
            value = _filler;
            return false;
        }
        
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            value = _filler;
            return false;
        }

        value = item;
        return true;
    }
    
    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bool">True if sucessfull, otherwhise false</param>
    /// <returns>A reference or null reference to the item.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T TryGetValue(int index, out bool @bool)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }

        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }

        @bool = true;
        return ref item; 
    }
    
    /// <summary>
    ///     Checks if the value at the given index exists.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>True if it does, false if it does not.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool ContainsKey(int index)
    {
        if (index < 0 || index > Capacity)
        {
            return false;
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        ref var item = ref GetBucket(bucketIndex)[itemIndex];

        // If the item is the default then the nobody set its value.
        return !EqualityComparer<T>.Default.Equals(item, _filler);
    }

    /// <summary>
    ///     Ensures the capacity and increases it if necessary.
    /// </summary>
    /// <param name="newCapacity">The new capcity.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int newCapacity)
    {
        if (newCapacity < Capacity)
        {
            return;
        }

        var length = Buckets;
        var buckets = newCapacity / _bucketSize + 1;
        _bucketArray = UnsafeArray.Resize(ref _bucketArray, buckets);

        for (var i = length; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeBucket<T>(_bucketSize);
            SetBucket(i, in bucket);
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     Trims the last few empty buckets to release memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        // Count how many of the last buckets are empty, to trim them
        var count = 0;
        for (var i = _bucketArray.Length - 1; i >= 0; i--)
        {
            ref var bucket = ref _bucketArray[i];
            if (!bucket.IsEmpty)
            {
                break;
            }

            count++;
        }

        var buckets = _bucketArray.Length - count;
        _bucketArray = UnsafeArray.Resize(ref _bucketArray, buckets);
    }

    /// <summary>
    ///     Converts the passed id to its inner and outer index ( or slot ) inside the <see cref="_bucketArray"/> array.
    /// </summary>
    /// <param name="id">The id.</param>
    /// <param name="bucketIndex">The outer index.</param>
    /// <param name="itemIndex">The inner index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void IndexToSlot(int id, out int bucketIndex, out int itemIndex)
    {
        Debug.Assert(id >= 0, "Id cannot be negative.");

        /* Instead of the '%' operator we can use logical '&' operator which is faster. But it requires the bucket size to be a power of 2. */
        bucketIndex = id >> _bucketSizeShift;
        itemIndex = id & _bucketSizeMinusOne;
    }
    
    /// <summary>
    ///     Returns the <see cref="UnsafeBucket{T}"/> from the <see cref="_bucketArray"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>The <see cref="UnsafeBucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref UnsafeBucket<T> GetBucket(int index)
    {
        return ref _bucketArray[index];
    }

    /// <summary>
    ///     Sets the <see cref="UnsafeBucket{T}"/> from the <see cref="_bucketArray"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bucket">Bucket.</param>
    /// <returns>The <see cref="UnsafeBucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void SetBucket(int index, in UnsafeBucket<T> bucket)
    {
        _bucketArray[index] = bucket;
    }

    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get
        {
            IndexToSlot(i, out var bucketIndex, out var itemIndex);
            return ref GetBucket(bucketIndex)[itemIndex];
        }
    }
    
    /// <summary>
    ///     Clears this <see cref="JaggedArray{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        foreach (ref var bucket in _bucketArray)
        {
            if (bucket.IsEmpty)
            {
                continue;
            }
            
            bucket.Clear(_filler);
        }
    }

    /// <summary>
    ///     Disposes this <see cref="UnsafeJaggedArray{T}"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        foreach (ref var bucket in _bucketArray)
        {
            bucket.Dispose();
        }
        _bucketArray.Dispose();
    }
}


================================================
FILE: Arch.LowLevel/Jagged/UnsafeSparseJaggedArray.cs
================================================
using System.Diagnostics;
using System.Runtime.CompilerServices;

namespace Arch.LowLevel.Jagged;


/// <summary>
///     The <see cref="UnsafeSparseBucket{T}"/> struct
///     represents a bucket of the <see cref="UnsafeSparseJaggedArray{T}"/> where items are stored.
///     <remarks>It will not allocate memory upon creation, it stays empty till the first item was added in.</remarks>
/// </summary>
/// <typeparam name="T"></typeparam>
public record struct UnsafeSparseBucket<T> : IDisposable where T : unmanaged
{
    
    /// <summary>
    ///     The items array.
    /// </summary>
    internal UnsafeArray<T> Array = UnsafeArray.Empty<T>();
    
    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;


    /// <summary>
    ///     Creates an instance of the <see cref="Bucket{T}"/>.
    /// </summary>
    /// <param name="capacity">The total capacity.</param>
    /// <param name="filler">The filler.</param>
    /// <param name="allocate">If it should allocate straight forward.</param>
    public UnsafeSparseBucket(int capacity, T filler, bool allocate = false)
    {
        Capacity = capacity;
        _filler = filler;
        if (allocate)
        {
            EnsureCapacity();
        }
    }

    /// <summary>
    ///     The total capacity of this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Capacity
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;
        
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private set;
    }
    
    /// <summary>
    ///     The amount of items in this <see cref="Bucket{T}"/>.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        internal set;
    }

    /// <summary>
    ///     If this <see cref="Bucket{T}"/> is empty.
    /// </summary>
    public bool IsEmpty
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count <= 0;
    }

    /// <summary>
    ///     Ensures the <see cref="Capacity"/> of this <see cref="Bucket{T}"/>.
    ///     Basically allocated a new array. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal void EnsureCapacity()
    {
        if (Array != UnsafeArray.Empty<T>())
        {
            return;
        }
        
        Array = new UnsafeArray<T>(Capacity);
        Clear();
    }

    /// <summary>
    ///     Trims the bucket to an empty one. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    internal void TrimExcess()
    {
        if (Count > 0)
        {
            return;
        }
        
        Array = UnsafeArray.Empty<T>();
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref Array[i];
    }
    
    /// <summary>
    ///     Clears this <see cref="UnsafeSparseBucket{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        UnsafeArray.Fill(ref Array, _filler);
    }


    /// <summary>
    ///     Disposes this <see cref="UnsafeSparseBucket{T}"/>
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        Array.Dispose();
    }
}

/// <summary>
///     The <see cref="UnsafeSparseJaggedArray{T}"/> class,
///     represents a jagged array with <see cref="SparseBucket{T}"/>s storing the items.
///     <remarks>Its buckets will stay empty and not allocate memory till a slot in it is being used.</remarks>
/// </summary>
/// <typeparam name="T"></typeparam>
public struct UnsafeSparseJaggedArray<T> : IDisposable where T : unmanaged
{
    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items.
    /// </summary>
    private readonly int _bucketSize;

    /// <summary>
    ///     The <see cref="Bucket{T}"/> size in items - 1.
    /// </summary>
    private readonly int _bucketSizeMinusOne;
    
    /// <summary>
    ///     The <see cref="_bucketSize"/> is always a value the power of 2, therefore we can use a bitshift for the division during the index calculation. 
    /// </summary>
    private readonly int _bucketSizeShift;

    /// <summary>
    ///     The allocated <see cref="Bucket{T}"/>s.
    /// </summary>
    private UnsafeArray<UnsafeSparseBucket<T>> _bucketArray;

    /// <summary>
    ///     The filler, the default value.
    /// </summary>
    private readonly T _filler;

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public UnsafeSparseJaggedArray(int bucketSize, int capacity = 64)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _bucketArray = new UnsafeArray<UnsafeSparseBucket<T>>(capacity / _bucketSize + 1);

        _filler = default!;

        // Fill buckets
        for (var i = 0; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeSparseBucket<T>(_bucketSize, _filler);
            SetBucket(i, in bucket);
            bucket.Clear();
        }
    }

    /// <summary>
    ///     Creates an instance of the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="bucketSize">The <see cref="Bucket{T}"/> size in bytes.</param>
    /// <param name="filler">The filler value for all slots, basically a custom default-value.</param>
    /// <param name="capacity">The total initial capacity, how many items should fit in.</param>
    public UnsafeSparseJaggedArray(int bucketSize, T filler, int capacity = 64) : this(bucketSize, capacity)
    {
        _bucketSize = MathExtensions.RoundToPowerOfTwo(bucketSize);
        _bucketSizeMinusOne = _bucketSize - 1;
        _bucketSizeShift = (int)Math.Log(_bucketSize, 2);
        _bucketArray = new UnsafeArray<UnsafeSparseBucket<T>>(capacity / _bucketSize + 1);

        _filler = filler!;

        // Fill buckets
        for (var i = 0; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeSparseBucket<T>(_bucketSize, _filler);
            SetBucket(i, in bucket);
            bucket.Clear();
        }
    }

    /// <summary>
    ///     If true, each bucket will stay empty and will not allocate memory until its actually being used. 
    /// </summary>
    public bool Sparse { get; set; }

    /// <summary>
    ///     The capacity, the total amount of items. 
    /// </summary>
    public int Capacity => _bucketArray.Length * _bucketSize;

    /// <summary>
    ///     The length, the buckets inside the <see cref="_bucketArray"/>.
    /// </summary>
    public int Buckets => _bucketArray.Length;

    /// <summary>
    ///     Adds an item to the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="item">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Add(int index, in T item)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);

        ref var bucket = ref GetBucket(bucketIndex);
        bucket.EnsureCapacity();
        bucket[itemIndex] = item;
        bucket.Count++;
    }

    /// <summary>
    ///     Removes an item from the <see cref="JaggedArray{T}"/>.
    /// </summary>
    /// <param name="index">The index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Remove(int index)
    {
        IndexToSlot(index, out var bucketIndex, out var itemIndex);

        ref var bucket = ref GetBucket(bucketIndex);
        bucket[itemIndex] = _filler;

        bucket.Count--;
        bucket.TrimExcess();
    }

    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="value">The returned value.</param>
    /// <returns>True if sucessfull, otherwhise false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool TryGetValue(int index, out T value)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            value = _filler;
            return false;
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // Bucket empty? return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            value = _filler;
            return false;
        }

        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            value = _filler;
            return false;
        }

        value = item;
        return true;
    }
    
    /// <summary>
    ///     Trys to get an item from its index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bool">True if sucessfull, otherwhise false</param>
    /// <returns>A reference or null reference to the item.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T TryGetValue(int index, out bool @bool)
    {
        // If the id is negative
        if (index < 0 || index >= Capacity)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }
        
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // Bucket empty? return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }
        
        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        if (EqualityComparer<T>.Default.Equals(item, _filler))
        {
            @bool = false;
            return ref Unsafe.NullRef<T>(); 
        }

        @bool = true;
        return ref item; 
    }

    /// <summary>
    ///     Checks if the value at the given index exists.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>True if it does, false if it does not.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool ContainsKey(int index)
    {
        if (index < 0 || index > Capacity)
        {
            return false;
        }
    
        IndexToSlot(index, out var bucketIndex, out var itemIndex);
        
        // If bucket empty return false
        ref var bucket = ref GetBucket(bucketIndex);
        if (bucket.IsEmpty)
        {
            return false;
        }

        // If the item is the default then the nobody set its value.
        ref var item = ref bucket[itemIndex];
        return !EqualityComparer<T>.Default.Equals(item, _filler);
    }

    /// <summary>
    ///     Ensures the capacity and increases it if necessary.
    /// </summary>
    /// <param name="newCapacity">The new capcity.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int newCapacity)
    {
        if (newCapacity < Capacity)
        {
            return;
        }

        var length = Buckets;
        var buckets = newCapacity / _bucketSize + 1;
        _bucketArray = UnsafeArray.Resize(ref _bucketArray, buckets);

        for (var i = length; i < _bucketArray.Length; i++)
        {
            var bucket = new UnsafeSparseBucket<T>(_bucketSize, _filler);
            SetBucket(i, in bucket);
            bucket.Clear();
        }
    }

    /// <summary>
    ///     Trims the last few empty buckets to release memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        // Count how many of the last buckets are empty, to trim them
        var count = 0;
        for (var i = _bucketArray.Length - 1; i >= 0; i--)
        {
            ref var bucket = ref _bucketArray[i];
            if (!bucket.IsEmpty)
            {
                break;
            }

            count++;
        }

        var buckets = _bucketArray.Length - count;
        _bucketArray = UnsafeArray.Resize(ref _bucketArray, buckets);
    }

    /// <summary>
    ///     Converts the passed id to its inner and outer index ( or slot ) inside the <see cref="_bucketArray"/> array.
    /// </summary>
    /// <param name="id">The id.</param>
    /// <param name="bucketIndex">The outer index.</param>
    /// <param name="itemIndex">The inner index.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void IndexToSlot(int id, out int bucketIndex, out int itemIndex)
    {
        Debug.Assert(id >= 0, "Id cannot be negative.");

        /* Instead of the '%' operator we can use logical '&' operator which is faster. But it requires the bucket size to be a power of 2. */
        bucketIndex = id >> _bucketSizeShift;
        itemIndex = id & _bucketSizeMinusOne;
    }
    
    /// <summary>
    ///     Returns the <see cref="UnsafeSparseBucket{T}"/> from the <see cref="_bucketArray"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <returns>The <see cref="UnsafeSparseBucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref UnsafeSparseBucket<T> GetBucket(int index)
    {
        return ref _bucketArray[index];
    }

    /// <summary>
    ///     Sets the <see cref="UnsafeSparseBucket{T}"/> from the <see cref="_bucketArray"/> at the given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="bucket">Bucket.</param>
    /// <returns>The <see cref="UnsafeSparseBucket{T}"/> at the given index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void SetBucket(int index, in UnsafeSparseBucket<T> bucket)
    {
        _bucketArray[index] = bucket;
    }
    
    /// <summary>
    ///     Returns a reference to an item at the given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get
        {
            IndexToSlot(i, out var bucketIndex, out var itemIndex);
            return ref GetBucket(bucketIndex)[itemIndex];
        }
    }
    
    /// <summary>
    ///     Clears this <see cref="UnsafeSparseJaggedArray{T}"/> and sets all values to the <see cref="_filler"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        foreach (ref var bucket in _bucketArray)
        {
            if (bucket.IsEmpty)
            {
                continue;
            }
            
            UnsafeArray.Fill(ref bucket.Array, _filler);
        }
    }
    
    /// <summary>
    ///     Disposes this <see cref="UnsafeSparseJaggedArray{T}"/>.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        foreach (ref var bucket in _bucketArray)
        {
            bucket.Dispose();
        }
        _bucketArray.Dispose();
    }
}

================================================
FILE: Arch.LowLevel/Resources.cs
================================================
using System.Runtime.CompilerServices;
using Arch.LowLevel.Jagged;

[assembly: InternalsVisibleTo("Arch.LowLevel.Tests")]
namespace Arch.LowLevel;

/// <summary>
///     The <see cref="Handle{T}"/> struct
///     represents a reference to an managed resource.
///     This is used commonly for referencing managed resources from components.
/// </summary>
/// <typeparam name="T">The type of the managed resource.</typeparam>
public readonly record struct Handle<T>
{
    
    /// <summary>
    ///     A null <see cref="Handle{T}"/> which is invalid and used for camparison.
    /// </summary>
    public static readonly Handle<T> NULL = new(-1);
    
    /// <summary>
    ///     The id, its index inside a <see cref="Resources{T}"/> array.
    /// </summary>
    public readonly int Id = -1;

    /// <summary>
    ///     Public default constructor.
    /// </summary>
    public Handle()
    {
        Id = -1;
    }

    /// <summary>
    ///      Initializes a new instance of the <see cref="Handle{T}" /> class.
    /// </summary>
    /// <param name="id"></param>
    internal Handle(int id)
    {
        Id = id;
    }
}

/// <summary>
///     The <see cref="Handle{T}"/> class,
///     represents an collection of managed resources which can be accesed by a <see cref="Handle{T}"/>.
/// </summary>
/// <typeparam name="T"></typeparam>
public sealed class Resources<T> : IDisposable
{

    /// <summary>
    ///     The <see cref="JaggedArray{T}"/> which stores the managed resources on the <see cref="Handle{T}"/> index.
    /// </summary>
    private JaggedArray<T> _array;

    /// <summary>
    ///     A list of recycled <see cref="Handle{T}"/> ids, used to fill in old gaps.
    /// </summary>
    internal Queue<int> _ids;

    /// <summary>
    ///     Creates an <see cref="Resources{T}"/> instance.
    /// </summary>
    /// <param name="capacity">The capacity of the bucket.</param>
    public Resources(int capacity = 64)
    {
        _array = new JaggedArray<T>(capacity, capacity);
        _ids = new Queue<int>(capacity);
    }

    /// <summary>
    ///     Creates an <see cref="Resources{T}"/> instance.
    /// </summary>
    /// <param name="size">The size of the generic type in bytes.</param>
    /// <param name="capacity">The capcity, how many items of that type should fit into the array.</param>
    public Resources(int size, int capacity = 64)
    {
        _array = new JaggedArray<T>(160000/size, capacity);
        _ids = new Queue<int>(capacity);
    }

    /// <summary>
    ///     The amount of registered <see cref="Handle{T}"/>s.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private set;
    }

    /// <summary>
    ///     Creates a <see cref="Handle{T}"/> for the given resource.
    /// </summary>
    /// <param name="item">The resource instance.</param>
    /// <returns></returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Handle<T> Add(in T item)
    {
        // Create handle
        var recyled = _ids.TryDequeue(out var id);
        id = recyled ? id : Count;
        var handle = new Handle<T>(id);

        // Resize array and fill it in
        _array.EnsureCapacity(id+1);
        _array.Add(id, item);

        Count++;
        return handle;
    }

    /// <summary>
    ///     Checks if the <see cref="Handle{T}"/> is valid.
    /// </summary>
    /// <param name="handle">The <see cref="Handle{T}"/>.</param>
    /// <returns>True or false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool IsValid(in Handle<T> handle)
    {
        return handle.Id > -1 && handle.Id <= _array.Capacity;
    }
    
    /// <summary>
    ///     Returns a resource for the given <see cref="Handle{T}"/>.
    /// </summary>
    /// <param name="handle">The <see cref="Handle{T}"/>.</param>
    /// <returns>The resource.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T Get(in Handle<T> handle)
    {
        return ref _array[handle.Id];
    }

    /// <summary>
    ///     Removes a <see cref="Handle{T}"/> and its resource.
    /// </summary>
    /// <param name="handle">The <see cref="Handle{T}"/>.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Remove(in Handle<T> handle)
    {
        _array.Remove(handle.Id);
        _ids.Enqueue(handle.Id);

        Count--;
    }

    /// <summary>
    ///     Trims the resources and releases unused memory if possible.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        _array.TrimExcess();
        _ids.TrimExcess();
    }

    /// <summary>
    ///     Disposes this <see cref="Resources{T}"/> instance.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        _array = null!;
        _ids = null!;
        Count = 0;
    }
}


================================================
FILE: Arch.LowLevel/UnsafeArray.cs
================================================
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;

namespace Arch.LowLevel;

/// <summary>
///     The <see cref="UnsafeArray{T}"/> struct
///     represents an unsafe allocated array of unmanaged items.
/// </summary>
/// <typeparam name="T">The unmanaged generic.</typeparam>
[DebuggerTypeProxy(typeof(UnsafeArrayDebugView<>))]
public readonly unsafe struct UnsafeArray<T> : IDisposable where T : unmanaged
{

    /// <summary>
    ///     The static empty <see cref="UnsafeArray{T}"/>.
    /// </summary>
    internal static UnsafeArray<T> Empty = new(null, 0);
    
    /// <summary>
    ///     The pointer, pointing towards the first element of this <see cref="UnsafeArray{T}"/>.
    /// </summary>
    internal readonly T* _ptr;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeArray{T}"/>.
    ///     Allocates the array for the passed count of items.
    /// </summary>
    /// <param name="count">The arrays count or capacity.</param>
    public UnsafeArray(int count)
    {
#if NET6_0_OR_GREATER
        _ptr = (T*)NativeMemory.Alloc((nuint)(sizeof(T) * count));
#else
        _ptr = (T*)Marshal.AllocHGlobal(sizeof(T) * count);
#endif
        Count = count;
    }
    
    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeArray{T}"/> by a pointer.
    /// </summary>
    /// <param name="ptr">The pointer.</param>
    /// <param name="count">The count.</param>
    public UnsafeArray(T* ptr, int count)
    {
        _ptr = ptr;
        Count = count;
    }

    /// <summary>
    ///     The count of this <see cref="UnsafeArray{T}"/> instance, its capacity.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;
    }

    /// <summary>
    ///     The count of this <see cref="UnsafeArray{T}"/> instance, its capacity.
    /// </summary>
    public int Length
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => Count;
    }

    /// <summary>
    ///     Returns a reference to an item at a given index.
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref _ptr[i];
    }

    /// <summary>
    ///     Disposes this instance of <see cref="UnsafeArray{T}"/> and releases its memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
#if NET6_0_OR_GREATER
        NativeMemory.Free(_ptr);
#else
        Marshal.FreeHGlobal((IntPtr)_ptr);
#endif
    }

    /// <summary>
    ///     Converts this <see cref="UnsafeArray{T}"/> instance into a <see cref="Span{T}"/>.
    /// </summary>
    /// <returns>A new instance of <see cref="Span{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Span<T> AsSpan()
    {
        return new Span<T>(_ptr, Count);
    }
    
    /// <summary>
    ///     Creates an instance of a <see cref="UnsafeEnumerator{T}"/> for ref acessing the array content.
    /// </summary>
    /// <returns>A new <see cref="UnsafeEnumerator{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public UnsafeEnumerator<T> GetEnumerator()
    {
        return new UnsafeEnumerator<T>(_ptr, Count);
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="other">The other <see cref="UnsafeArray"/>.</param>
    /// <returns>True if equal, oterwhise false.</returns>
    public bool Equals(UnsafeArray<T> other)
    {
        return _ptr == other._ptr && Count == other.Count;
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="obj">The other <see cref="UnsafeArray"/>.</param>
    /// <returns>True if equal, oterwhise false.</returns>
    public override bool Equals(object? obj)
    {
        return obj is UnsafeArray<T> other && Equals(other);
    }

    
    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeArray"/>.</param>
    /// <param name="right">The second <see cref="UnsafeArray"/>.</param>
    /// <returns></returns>
    public static bool operator ==(UnsafeArray<T> left, UnsafeArray<T> right)
    {
        return left.Equals(right);
    }

    /// <summary>
    ///     Checks for inequality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeArray"/>.</param>
    /// <param name="right">The second <see cref="UnsafeArray"/>.</param>
    /// <returns></returns>
    public static bool operator !=(UnsafeArray<T> left, UnsafeArray<T> right)
    {
        return !left.Equals(right);
    }

    /// <summary>
    ///     Returns the hash of this <see cref="UnsafeArray"/>.
    /// </summary>
    /// <returns></returns>
    public override int GetHashCode()
    {
        unchecked
        {
            return (unchecked((int)(long)_ptr) * 397) ^ Count;
        }
    }
    
    /// <summary>
    ///     Converts an <see cref="UnsafeArray{T}"/> into a void pointer.
    /// </summary>
    /// <param name="instance">The <see cref="UnsafeArray{T}"/> instance.</param>
    /// <returns>A void pointer.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static implicit operator void*(UnsafeArray<T> instance)
    {
        return (void*)instance._ptr;
    }
    
    /// <summary>
    ///     Converts an <see cref="UnsafeArray{T}"/> into a generic pointer.
    /// </summary>
    /// <param name="instance">The <see cref="UnsafeArray{T}"/> instance.</param>
    /// <returns>A void pointer.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static implicit operator T*(UnsafeArray<T> instance)
    {
        return instance._ptr;
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeArray{T}"/> to a string.
    /// </summary>
    /// <returns>The string.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public override string ToString()
    {
        var items = new StringBuilder();
        foreach (ref var item in this)
        {
            items.Append($"{item},");
        }
        items.Length--;
        return $"UnsafeArray<{typeof(T).Name}>[{Count}]{{{items}}}";
    }
}

/// <summary>
/// Unsafe array.
/// </summary>
public unsafe struct UnsafeArray
{

    /// <summary>
    ///     Returns an empty <see cref="UnsafeArray{T}"/>.
    /// </summary>
    /// <typeparam name="T">The generic type.</typeparam>
    /// <returns>The empty <see cref="UnsafeArray{T}"/>.</returns>
    public static UnsafeArray<T> Empty<T>() where T : unmanaged
    {
        return UnsafeArray<T>.Empty;
    }
    
    /// <summary>
    ///  Copies the a part of the <see cref="UnsafeArray{T}"/> to the another <see cref="UnsafeArray{T}"/>.
    /// </summary>
    /// <param name="source">The source <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="index">The start index in the source <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="destination">The destination <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="destinationIndex">The start index in the destination <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="length">The length indicating the amount of items being copied.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void Copy<T>(ref UnsafeArray<T> source, int index, ref UnsafeArray<T> destination, int destinationIndex, int length) where T : unmanaged
    {
        var size = sizeof(T);
        var bytes = size * length;
        var sourcePtr = (void*)(source._ptr + index);
        var destinationPtr = (void*)(destination._ptr + destinationIndex);
        Buffer.MemoryCopy(sourcePtr, destinationPtr, bytes, bytes);
    }


    /// <summary>
    ///     Fills an <see cref="UnsafeArray{T}"/> with a given value.
    /// </summary>
    /// <param name="source">The <see cref="UnsafeArray{T}"/> instance.</param>
    /// <param name="value">The value.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static void Fill<T>(ref UnsafeArray<T> source, in T value = default) where T : unmanaged
    {
        source.AsSpan().Fill(value);
    }
    
    /// <summary>
    ///     Resizes an <see cref="UnsafeArray{T}"/> to a new <paramref name="newCapacity"/>.
    /// </summary>
    /// <param name="source">The <see cref="UnsafeArray{T}"/>.</param>
    /// <param name="newCapacity">The new capacity.</param>
    /// <typeparam name="T">The generic type.</typeparam>
    /// <returns>The new resized <see cref="UnsafeArray{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static UnsafeArray<T> Resize<T>(ref UnsafeArray<T> source, int newCapacity) where T : unmanaged
    {
        var destination = new UnsafeArray<T>(newCapacity);
        Copy(ref source, 0, ref destination, 0, Math.Min(source.Length, destination.Length));

        source.Dispose();
        return destination;
    }
}

/// <summary>
///     A debug view for the <see cref="UnsafeArray{T}"/>.
/// </summary>
/// <typeparam name="T">The unmanaged type.</typeparam>
internal class UnsafeArrayDebugView<T> where T : unmanaged
{
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    private readonly UnsafeArray<T> _entity;

    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public T[] Items
    {
        get
        {
            var items = new T[_entity.Count];
            _entity.AsSpan().CopyTo(items);
            return items;
        }
    }

    public UnsafeArrayDebugView(UnsafeArray<T> entity) => _entity = entity;
}

================================================
FILE: Arch.LowLevel/UnsafeList.cs
================================================
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Text;

namespace Arch.LowLevel;

/// <summary>
///     The struct <see cref="UnsafeList{T}"/> represents a native unmanaged list.
///     Can easily be stored in unmanaged structs. 
/// </summary>
/// <typeparam name="T">The generic type stored in the list.</typeparam>
[DebuggerTypeProxy(typeof(UnsafeListDebugView<>))]
public unsafe struct UnsafeList<T> : IList<T>, IDisposable where T : unmanaged
{
    /// <summary>
    ///     The array pointer.
    /// </summary>
    private UnsafeArray<T> _array;
    
    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeList{T}"/>.
    /// </summary>
    /// <param name="capacity">The initial capacity that is being allocated.</param>
    public UnsafeList(int capacity = 8)
    {
        Count = 0;
        Capacity = capacity;
        _array = new UnsafeArray<T>(capacity);
    }

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeList{T}"/> by a pointer.
    /// </summary>
    /// <param name="ptr">The pointer.</param>
    /// <param name="capacity">The initial capacity that is being allocated.</param>
    public UnsafeList(T* ptr, int capacity = 8)
    {
        Count = 0;
        Capacity = capacity;
        _array = new UnsafeArray<T>(ptr, capacity);
    }

    /// <summary>
    ///     The amount of items in the list.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get; 
        
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private set;
    }

    /// <summary>
    ///     The total capacity of this list.
    /// </summary>
    public int Capacity
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get; 
        
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        private set;
    }

    /// <summary>
    ///     If its readonly.
    /// </summary>
    public bool IsReadOnly
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get;
    }

    /// <summary>
    ///     Adds an item to the list.
    /// </summary>
    /// <param name="item">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Add(T item)
    {
        if (Count == Capacity)
        {
            EnsureCapacity(Capacity * 2);
        }

        _array[Count] = item;
        Count++;
    }
    
    /// <summary>
    ///     Inserts an item at the given index. 
    /// </summary>
    /// <param name="index">The index.</param>
    /// <param name="item">The item instance.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Insert(int index, T item)
    {
        // Inserting to end of the list is legal.
        if ((uint)index > (uint)Count)
        {
            throw new ArgumentOutOfRangeException(nameof(index)); 
        }
        
        // Resize if the list is actually full
        if (Capacity == Count) 
        {
            EnsureCapacity(Capacity + 1);
        }

        if (index < Count)
        {
            //var span = _array.AsSpan();
            //var src = span.Slice(index, Count - index);
            //var dst = span.Slice(index + 1, src.Length);
            //src.CopyTo(dst);

            UnsafeArray.Copy(ref _array, index, ref _array, index + 1, Count - index);
        }
        
        _array[index] = item;
        Count++;
    }


    /// <summary>
    ///     Removes an item from the list at a given index.
    /// </summary>
    /// <param name="index">The index.</param>
    /// <exception cref="ArgumentOutOfRangeException">Throws when the index is out of range.</exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void RemoveAt(int index)
    {
        if ((uint)index > (uint)Count) 
        {
            throw new ArgumentOutOfRangeException(nameof(index));
        }
        
        Count--;
        if (index < Count) 
        {
            //Buffer.MemoryCopy(_array+(index+1), _array+index,Count-index,Count-index);
            UnsafeArray.Copy(ref _array, index + 1, ref _array, index, Count - index);
        }
        _array[Count] = default;
    }

    /// <summary>
    ///     Removes the item by its value and returns true or false.
    /// </summary>
    /// <param name="item">The item.</param>
    /// <returns>True if the operation was sucessfull, false if it was not.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool Remove(T item)
    {
        var index = IndexOf(item);
        if (index < 0) return false;
        
        RemoveAt(index);
        return true;
    }
    
    /// <summary>
    ///     Checks if the item is containted in this <see cref="UnsafeList{T}"/> instance and returns its index.
    /// </summary>
    /// <param name="item">The item.</param>
    /// <returns>Its index.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public int IndexOf(T item)
    {
        for(var i = 0; i < Count; i++) 
        {
            if(EqualityComparer<T>.Default.Equals(_array[i], item)) 
            {
                return i;
            }
        }
        return -1;
    }
    
    /// <summary>
    ///     Checks if the item is containted in this <see cref="UnsafeList{T}"/> instance.
    /// </summary>
    /// <param name="item">The item.</param>
    /// <returns>True if it exists, otherwhise false.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public bool Contains(T item)
    {
        for(var i = 0; i < Count; i++) 
        {
            if(EqualityComparer<T>.Default.Equals(_array[i], item)) 
            {
                return true;
            }
        }
        return false;
    }

    /// <summary>
    ///     Copies all items from this <see cref="UnsafeList{T}"/> to the specified array.
    /// </summary>
    /// <param name="array">The array to copy to.</param>
    /// <param name="arrayIndex">The index to start with.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void CopyTo(T[] array, int arrayIndex)
    {
        if (Count == 0)
            return;
        if (arrayIndex < 0 || arrayIndex >= array.Length)
            throw new IndexOutOfRangeException("Index must be 0 <= index <= array.Length");
        if (arrayIndex + Count > array.Length)
            throw new ArgumentException("Destination array was not long enough. Check the destination index, length, and the array's lower bounds.", nameof(arrayIndex));

        fixed(T* arrayPtr = array)
        {
            Buffer.MemoryCopy(_array, arrayPtr+arrayIndex, array.Length * sizeof(T), Count * sizeof(T));
        }
    }

    /// <summary>
    ///     Ensures the capacity of this <see cref="UnsafeList{T}"/> instance and resizes it accordingly.
    /// </summary>
    /// <param name="min">The minimum amount of items ensured.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int min)
    {
        if (min <= Count)
        {
            return;
        }
        
        var oldArray = _array;
        var newArray = new UnsafeArray<T>(min);
        
        // Copy & Free
        UnsafeArray.Copy(ref oldArray, 0, ref newArray,0, Count);
        oldArray.Dispose();

        _array = newArray;
        Capacity = min;
    }
    
    /// <summary>
    ///     Trims the capacity of this <see cref="UnsafeList{T}"/> to release unused memory.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        var oldArray = _array;
        var newArray = new UnsafeArray<T>(Count);
        
        // Copy & free
        UnsafeArray.Copy(ref oldArray, 0, ref newArray,0, Count);
        oldArray.Dispose();
        
        _array = newArray;
        Capacity = Count;
    }
    
    /// <summary>
    ///    Acesses an item at the index of the list. 
    /// </summary>
    /// <param name="index">The index.</param>
    T IList<T>.this[int index]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _array[CheckIndex(index)];
        
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        set => _array[CheckIndex(index)] = value;
    }

    /// <summary>
    ///     Acesses an item at the index of the list. 
    /// </summary>
    /// <param name="i">The index.</param>
    public ref T this[int i]
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => ref _array[CheckIndex(i)];
    }

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    private readonly int CheckIndex(int index)
    {
#if DEBUG
        if (index < 0)
            throw new IndexOutOfRangeException("Index cannot be less than zero");
        if (index >= Count)
            throw new IndexOutOfRangeException("Index cannot be greater than or equal to the count");
#endif

        return index;
    }

    /// <summary>
    ///     Clears this <see cref="UnsafeList{T}"/> instance.
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        Count = 0;
    }
    
    /// <summary>
    ///     Disposes this instance and releases its memory. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        _array.Dispose();
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeList{T}"/> instance into a <see cref="Span{T}"/>.
    /// </summary>
    /// <returns>A new instance of <see cref="Span{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Span<T> AsSpan()
    {
        return new Span<T>(_array, Count);
    }

    /// <summary>
    ///     Creates an instance of a <see cref="UnsafeEnumerator{T}"/> for ref acessing the list content.
    /// </summary>
    /// <returns>A new <see cref="UnsafeEnumerator{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public UnsafeEnumerator<T> GetEnumerator()
    {
        return new UnsafeEnumerator<T>(_array, Count);
    }
    
    /// <summary>
    ///     Creates an instance of a <see cref="IEnumerable{T}"/>.
    /// </summary>
    /// <returns>The new <see cref="IEnumerable{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    IEnumerator<T> IEnumerable<T>.GetEnumerator()
    {
        return new UnsafeIEnumerator<T>(_array, Count);
    }

    /// <summary>
    ///     Creates an instance of a <see cref="IEnumerable{T}"/>.
    /// </summary>
    /// <returns>The new <see cref="IEnumerator"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    IEnumerator IEnumerable.GetEnumerator()
    {
        return new UnsafeIEnumerator<T>(_array, Count);
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="other">The other <see cref="UnsafeList{T}"/>.</param>
    /// <returns>True or false.</returns>
    public bool Equals(UnsafeList<T> other)
    {
        return _array.Equals(other._array) && Count == other.Count && Capacity == other.Capacity;
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="obj">The other <see cref="UnsafeList{T}"/>.</param>
    /// <returns>True or false.</returns>
    public override bool Equals(object? obj)
    {
        return obj is UnsafeList<T> other && Equals(other);
    }

    /// <summary>
    ///     Checks for equality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeList{T}"/>.</param>
    /// <param name="right">The second <see cref="UnsafeList{T}"/>.</param>
    /// <returns>True or false.</returns>
    public static bool operator ==(UnsafeList<T> left, UnsafeList<T> right)
    {
        return left.Equals(right);
    }

    /// <summary>
    ///     Checks for inequality.
    /// </summary>
    /// <param name="left">The first <see cref="UnsafeList{T}"/>.</param>
    /// <param name="right">The second <see cref="UnsafeList{T}"/>.</param>
    /// <returns>True or false.</returns>
    public static bool operator !=(UnsafeList<T> left, UnsafeList<T> right)
    {
        return !left.Equals(right);
    }
    
    /// <summary>
    ///     Returns the hashcode of this <see cref="UnsafeList{T}"/>.
    /// </summary>
    /// <returns></returns>
    public override int GetHashCode()
    {
        unchecked
        {
            var hashCode = _array.GetHashCode();
            hashCode = (hashCode * 397) ^ Count;
            hashCode = (hashCode * 397) ^ Capacity;
            return hashCode;
        }
    }

    /// <summary>
    ///     Converts this <see cref="UnsafeList{T}"/> to a string.
    /// </summary>
    /// <returns>The string.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public override string ToString()
    {
        var items = new StringBuilder();
        foreach (ref var item in this)
        {
            items.Append($"{item},");
        }
        items.Length--;
        return $"UnsafeList<{typeof(T).Name}>[{Count}]{{{items}}}";
    }
}


/// <summary>
///     A debug view for the <see cref="UnsafeList{T}"/>.
/// </summary>
/// <typeparam name="T">The unmanaged type.</typeparam>
internal class UnsafeListDebugView<T> where T : unmanaged
{
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    private readonly UnsafeList<T> _entity;

    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public T[] Items
    {
        get
        {
            var items = new T[_entity.Count];
            _entity.CopyTo(items, 0);
            return items;
        }
    }

    public UnsafeListDebugView(UnsafeList<T> entity) => _entity = entity;
}

================================================
FILE: Arch.LowLevel/UnsafeQueue.cs
================================================
using System.Collections;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using System.Runtime.CompilerServices;
using System.Text;

namespace Arch.LowLevel;

/// <summary>
///     The struct <see cref="UnsafeStack{T}"/> represents a native unmanaged queue.
///     Can easily be stored in unmanaged structs. 
/// </summary>
/// <typeparam name="T">The generic type stored in the queue.</typeparam>
[DebuggerTypeProxy(typeof(UnsafeQueueDebugView<>))]
public unsafe struct UnsafeQueue<T> : IEnumerable<T>, IDisposable where T : unmanaged
{
    private UnsafeArray<T> _queue;
    private int _capacity;
    private int _frontIndex;
    private int _count;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeQueue{T}"/>.
    /// </summary>
    /// <param name="capacity">Initial capacity of this queue.</param>
    /// <exception cref="ArgumentOutOfRangeException"></exception>
    public UnsafeQueue(int capacity)
    {
        if (capacity <= 0)
        {
            throw new ArgumentOutOfRangeException(nameof(capacity), "Capacity must be greater than 0.");
        }
        
        _queue = new UnsafeArray<T>(capacity);
        _capacity = capacity;
        _frontIndex =  _count = 0;
    }
    
    /// <summary>
    ///     The amount of items in the queue.
    /// </summary>
    public int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _count;
    }

    /// <summary>
    ///     The total capacity of this queue.
    /// </summary>
    public int Capacity
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _capacity;
    }

    /// <summary>
    ///     Enqueues a item.
    /// </summary>
    /// <param name="item">The item</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Enqueue(T item)
    {
        if (Count == Capacity)
        {
            EnsureCapacity(_capacity * 2);
        }

        var itemOffset = (_frontIndex + _count) % _capacity;
        _queue[itemOffset] = item;
        _count++;
    }

    /// <summary>
    ///     Dequeues an item.
    /// </summary>
    /// <returns>The item</returns>
    /// <exception cref="InvalidOperationException"></exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public T Dequeue()
    {
        if (_count == 0)
        {
            throw new InvalidOperationException("Queue is empty");
        }

        var item = Peek();
        _frontIndex = (_frontIndex + 1) % _capacity;
        _count--;
        return item;
    }

    /// <summary>
    ///     Peeks at an item.
    /// </summary>
    /// <returns>The item.</returns>
    /// <exception cref="InvalidOperationException"></exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T Peek()
    {
        if (_count == 0)
        {
            throw new InvalidOperationException("Queue is empty");
        }

        return ref _queue[_frontIndex];
    }
    
    /// <summary>
    ///     Trims this instance and releases memory in this process.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void TrimExcess()
    {
        var newCapacity = _count;
        SetCapacity(newCapacity);
    }

    /// <summary>
    ///     Ensures the capacity of this instance. 
    /// </summary>
    /// <param name="newCapacity">The new capacity.</param>
    /// <exception cref="ArgumentException"></exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int newCapacity)
    {
        if (newCapacity <= _capacity)
        {
            return;
        }

        SetCapacity(newCapacity);
    }

    /// <summary>
    ///     Ensures the capacity of this instance. 
    /// </summary>
    /// <param name="newCapacity">The new capacity.</param>
    /// <exception cref="ArgumentException"></exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    private void SetCapacity(int newCapacity)
    {
        if (newCapacity < _count)
        {
            throw new ArgumentOutOfRangeException(nameof(newCapacity), "newCapacity cannot be smaller than _count");
        }

        var newBuffer = new UnsafeArray<T>(newCapacity);
        if (_count > 0)
        {
            var firstChunkCount = Math.Min(_count, _capacity - _frontIndex);
            var secondChunkCount = _count - firstChunkCount;

            // Copy elements in front->rear order to the new buffer
            if (firstChunkCount > 0)
            {
                UnsafeArray.Copy(ref _queue, _frontIndex, ref newBuffer, 0, firstChunkCount);
            }

            if (secondChunkCount > 0)
            {
                UnsafeArray.Copy(ref _queue, 0, ref newBuffer, firstChunkCount, secondChunkCount);
            }
        }
        
        _queue.Dispose();
        
        _queue = newBuffer;
        _capacity = newCapacity;
        _frontIndex = 0;
    }

    /// <summary>
    ///     Clears this instance.
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Clear()
    {
        _frontIndex = _count = 0;
    }

    /// <summary>
    ///     Disposes this instance. 
    /// </summary>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        _queue.Dispose();
        _capacity = _frontIndex  = _count = 0;
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeQueue{T}"/> instance into a <see cref="Span{T}"/>.
    /// </summary>
    /// <returns>A new instance of <see cref="Span{T}"/>.</returns>
    [Pure]
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public Span<T> AsSpan()
    {
        return new Span<T>(_queue, Count);
    }
    
    /// <summary>
    ///     Creates an instance of a <see cref="UnsafeEnumerator{T}"/> for ref acessing the list content.
    /// </summary>
    /// <returns>A new <see cref="UnsafeEnumerator{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public UnsafeEnumerator<T> GetEnumerator()
    {
        return new UnsafeEnumerator<T>(_queue, Count);
    }

    /// <summary>
    ///     Creates an instance of a <see cref="IEnumerable{T}"/>.
    /// </summary>
    /// <returns>The new <see cref="IEnumerable{T}"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    IEnumerator<T> IEnumerable<T>.GetEnumerator()
    {
        return new UnsafeIEnumerator<T>(_queue, Count);
    }

    /// <summary>
    ///     Creates an instance of a <see cref="IEnumerable{T}"/>.
    /// </summary>
    /// <returns>The new <see cref="IEnumerator"/>.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    IEnumerator IEnumerable.GetEnumerator()
    {
        return new UnsafeIEnumerator<T>(_queue, Count);
    }
    
    /// <summary>
    ///     Converts this <see cref="UnsafeStack{T}"/> to a string.
    /// </summary>
    /// <returns>The string.</returns>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public override string ToString()
    {
        var items = new StringBuilder();
        foreach (ref var item in this)
        {
            items.Append($"{item},");
        }
        items.Length--;
        return $"UnsafeQueue<{typeof(T).Name}>[{Count}]{{{items}}}";
    }
}

/// <summary>
///     A debug view for the <see cref="UnsafeQueue{T}"/>.
/// </summary>
/// <typeparam name="T">The unmanaged type.</typeparam>
internal class UnsafeQueueDebugView<T> where T : unmanaged
{
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    private readonly UnsafeQueue<T> _entity;

    [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
    public T[] Items
    {
        get
        {
            var items = new T[_entity.Count];
            _entity.AsSpan().CopyTo(items);
            return items;
        }
    }

    public UnsafeQueueDebugView(UnsafeQueue<T> entity) => _entity = entity;
}

================================================
FILE: Arch.LowLevel/UnsafeStack.cs
================================================
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Text;

namespace Arch.LowLevel;

/// <summary>
///     The struct <see cref="UnsafeStack{T}"/> represents a native unmanaged stack.
///     Can easily be stored in unmanaged structs. 
/// </summary>
/// <typeparam name="T">The generic type stored in the stack.</typeparam>
[DebuggerTypeProxy(typeof(UnsafeStackDebugView<>))]
public unsafe struct UnsafeStack<T> :  IEnumerable<T>, IDisposable where T : unmanaged  
{
    private const int DefaultCapacity = 4;
    
    /// <summary>
    ///     The stack pointer.
    /// </summary>
    private UnsafeArray<T> _stack;
    
    /// <summary>
    ///     Its capacity.
    /// </summary>
    private int _capacity;
    
    /// <summary>
    ///     Its count.
    /// </summary>
    private int _count;

    /// <summary>
    ///     Creates an instance of the <see cref="UnsafeStack{T}"/>.
    /// </summary>
    /// <param name="capacity">The initial capacity that is being allocated.</param>
    public UnsafeStack(int capacity = DefaultCapacity)
    {
        if (capacity <= 0)
        {
            throw new ArgumentOutOfRangeException(nameof(capacity), "Capacity must be greater than 0.");
        }

        _stack = new UnsafeArray<T>(capacity);
        _capacity = capacity;
        _count = 0;
    }

    /// <summary>
    ///     The amount of items in the stack.
    /// </summary>
    public readonly int Count
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _count;
    }

    /// <summary>
    ///     The total capacity of this stack.
    /// </summary>
    public readonly int Capacity
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _capacity;
    }

    /// <summary>
    ///     If this stack is empty.
    /// </summary>
    public readonly bool IsEmpty
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _count == 0;
    }

    /// <summary>
    ///     If this stack is full. 
    /// </summary>
    public readonly bool IsFull
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        get => _count >= _capacity;
    }

    /// <summary>
    ///     Pushes an item to the <see cref="UnsafeStack{T}"/>.
    /// </summary>
    /// <param name="value">The item.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void Push(T value)
    {
        if (Count == Capacity)
        {
            EnsureCapacity(_capacity * 2);
        }
        
        _stack[_count] = value;
        _count++;
    }

    /// <summary>
    ///     Pops the first item of this <see cref="UnsafeStack{T}"/> and returns it.
    /// </summary>
    /// <returns>The item.</returns>
    /// <exception cref="InvalidOperationException">If the stack is empty.</exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public T Pop()
    {
        if (_count == 0)
        {
            throw new InvalidOperationException("Stack is empty.");
        }

        _count--;
        return _stack[_count];
    }

    /// <summary>
    ///     Peeks at the first item of this <see cref="UnsafeStack{T}"/> and returns it. 
    /// </summary>
    /// <returns>The item.</returns>
    /// <exception cref="InvalidOperationException">If the stack is empty.</exception>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public ref T Peek()
    {
        if (_count == 0)
        {
            throw new InvalidOperationException("Stack is empty.");
        }

        return ref _stack[_count - 1];
    }
    
    /// <summary>
    ///     Ensures the capacity of this <see cref="UnsafeStack{T}"/> instance and resizes it accordingly.
    /// </summary>
    /// <param name="min">The minimum amount of items ensured.</param>
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public void EnsureCapacity(int min)
    {
        if (min <= _capacity)
        {
            return;
        }

        var newCapacity = _capacity * 2;
        if (newCapacity < min)
        {
            newCapacity = min;
        }

        // Create new stack and copy elements
    
Download .txt
gitextract_j5eynvpp/

├── .gitattributes
├── .github/
│   └── workflows/
│       └── main.yml
├── .gitignore
├── Arch.AOT.SourceGenerator/
│   ├── Arch.AOT.SourceGenerator.csproj
│   ├── ComponentType.cs
│   ├── Extensions/
│   │   └── StringBuilderExtensions.cs
│   └── SourceGenerator.cs
├── Arch.EventBus/
│   ├── Arch.EventBus.csproj
│   ├── EventBus.cs
│   ├── Hooks.cs
│   ├── MethodSymbolExtensions.cs
│   └── SourceGenerator.cs
├── Arch.Extended.Sample/
│   ├── Arch.Extended.Sample.csproj
│   ├── Components.cs
│   ├── Extensions.cs
│   ├── Game.cs
│   ├── Program.cs
│   ├── Serializer.cs
│   └── Systems.cs
├── Arch.Extended.sln
├── Arch.Extended.sln.DotSettings
├── Arch.LowLevel/
│   ├── Arch.LowLevel.csproj
│   ├── Array.cs
│   ├── Enumerators.cs
│   ├── Jagged/
│   │   ├── JaggedArray.cs
│   │   ├── SparseJaggedArray.cs
│   │   ├── UnsafeJaggedArray.cs
│   │   └── UnsafeSparseJaggedArray.cs
│   ├── Resources.cs
│   ├── UnsafeArray.cs
│   ├── UnsafeList.cs
│   ├── UnsafeQueue.cs
│   └── UnsafeStack.cs
├── Arch.LowLevel.Tests/
│   ├── Arch.LowLevel.Tests.csproj
│   ├── ArrayTest.cs
│   ├── Jagged/
│   │   └── JaggedArrayTest.cs
│   ├── ResourcesTest.cs
│   ├── UnsafeArrayTest.cs
│   ├── UnsafeListTest.cs
│   ├── UnsafeQueueTest.cs
│   ├── UnsafeStackTest.cs
│   └── Usings.cs
├── Arch.Persistence/
│   ├── Arch.Persistence.csproj
│   ├── Binary.cs
│   ├── Json.cs
│   ├── Serializer.cs
│   └── StreamBufferWriter.cs
├── Arch.Persistence.Tests/
│   ├── Arch.Persistence.Tests.csproj
│   ├── PersistenceTest.cs
│   └── Usings.cs
├── Arch.Relationships/
│   ├── Arch.Relationships.csproj
│   ├── EntityRelationshipExtensions.cs
│   ├── Enumerators.cs
│   ├── InRelationship.cs
│   ├── Relationship.cs
│   └── WorldRelationshipExtensions.cs
├── Arch.Relationships.Tests/
│   ├── Arch.Relationships.Tests.csproj
│   ├── RelationshipTest.cs
│   └── Usings.cs
├── Arch.System/
│   ├── Arch.System.csproj
│   ├── Attributes.cs
│   ├── Systems.cs
│   └── Templates/
│       ├── GenericAttributes.cs
│       ├── GenericAttributes.tt
│       └── Helpers.ttinclude
├── Arch.System.SourceGenerator/
│   ├── Arch.System.SourceGenerator.csproj
│   ├── Extensions/
│   │   ├── CommonUtils.cs
│   │   └── MethodSymbolExtensions.cs
│   ├── Model.cs
│   ├── QueryUtils.cs
│   └── SourceGenerator.cs
├── Arch.System.SourceGenerator.SnapshotTests/
│   ├── .editorconfig
│   ├── Arch.System.SourceGenerator.SnapshotTests.csproj
│   └── SnapshotTest.cs
├── Arch.System.SourceGenerator.Tests/
│   ├── .editorconfig
│   ├── .gitignore
│   ├── Arch.System.SourceGenerator.Tests.csproj
│   ├── AttributeQueryCompilation/
│   │   ├── AttributeQuerySystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── AttributeQuerySystem.IncrementA(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAAndB(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAAndBExclusive(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementANotB(Entity).g.cs
│   │       ├── AttributeQuerySystem.IncrementAOrB(Entity).g.cs
│   │       └── AttributeQuerySystem.IncrementAOrBNotC(Entity).g.cs
│   ├── BasicCompilation/
│   │   ├── BasicSystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── BasicSystem.Basic(IntComponentA).g.cs
│   │       └── BasicSystem.BasicStatic(IntComponentA).g.cs
│   ├── DataParamCompilation/
│   │   ├── DataParamSystem.cs
│   │   └── ExpectedGeneration/
│   │       ├── DataParamSystem.AssignEntityDataParamWithEntityRight(in Entity, in IntComponentA, ref Entity).g.cs
│   │       ├── DataParamSystem.CountANoParams(ref int).g.cs
│   │       ├── DataParamSystem.CountATwiceWithParams(ref int, in IntComponentA, ref int, in IntComponentB).g.cs
│   │       ├── DataParamSystem.CountAWithEntityAndParamLeft(ref int, in IntComponentA, in Entity).g.cs
│   │       ├── DataParamSystem.CountAWithEntityAndParamRight(in Entity, in IntComponentA, ref int).g.cs
│   │       ├── DataParamSystem.CountAWithEntityLeft(ref int, in Entity).g.cs
│   │       ├── DataParamSystem.CountAWithEntityRight(in Entity, ref int).g.cs
│   │       ├── DataParamSystem.CountAWithParamsLeft(ref int, in IntComponentA).g.cs
│   │       ├── DataParamSystem.CountAWithParamsMiddle(in IntComponentA, ref int, in IntComponentB).g.cs
│   │       └── DataParamSystem.CountAWithParamsRight(in IntComponentA, ref int).g.cs
│   ├── GeneratedUpdateCompilation/
│   │   ├── ExpectedGeneration/
│   │   │   ├── GeneratedUpdateSystem.AutoRunA().g.cs
│   │   │   ├── GeneratedUpdateSystem.AutoRunB().g.cs
│   │   │   └── GeneratedUpdateSystem.g.cs
│   │   └── GeneratedUpdateSystem.cs
│   ├── ParamQueryCompilation/
│   │   ├── ExpectedGeneration/
│   │   │   ├── ParamQuerySystem.IncrementA(ref IntComponentA).g.cs
│   │   │   ├── ParamQuerySystem.IncrementAAndB(ref IntComponentA, ref IntComponentB).g.cs
│   │   │   ├── ParamQuerySystem.IncrementANotC(ref IntComponentA).g.cs
│   │   │   └── ParamQuerySystem.IncrementOnlyAWithB(ref IntComponentA, in IntComponentB).g.cs
│   │   └── ParamQuerySystem.cs
│   ├── Shared/
│   │   ├── BaseTestSystem.cs
│   │   └── IntComponents.cs
│   └── SystemsTest.cs
├── Directory.Build.targets
├── LICENSE.MD
├── README.md
└── scripts/
    └── UnityPublish.sh
Download .txt
Showing preview only (354K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (922 symbols across 83 files)

FILE: Arch.AOT.SourceGenerator/ComponentType.cs
  type ComponentType (line 7) | public struct ComponentType
    method ComponentType (line 28) | public ComponentType(string typeName, bool isZeroSize, bool isValueType)

FILE: Arch.AOT.SourceGenerator/Extensions/StringBuilderExtensions.cs
  class StringBuilderExtensions (line 9) | public static class StringBuilderExtensions
    method AppendComponentTypes (line 17) | public static StringBuilder AppendComponentTypes(this StringBuilder sb...
    method AppendComponentType (line 54) | public static StringBuilder AppendComponentType(this StringBuilder sb,...

FILE: Arch.AOT.SourceGenerator/SourceGenerator.cs
  class ComponentRegistryGenerator (line 14) | [Generator(LanguageNames.CSharp)]
    method Initialize (line 36) | public void Initialize(IncrementalGeneratorInitializationContext context)
    method ShouldTypeBeRegistered (line 60) | private static bool ShouldTypeBeRegistered(SyntaxNode node, Cancellati...
    method GetMemberDeclarationsForSourceGen (line 76) | private static (TypeDeclarationSyntax, bool attributeFound) GetMemberD...
    method GenerateCode (line 106) | private void GenerateCode(SourceProductionContext productionContext, C...

FILE: Arch.EventBus/EventBus.cs
  type EventBus (line 9) | public struct EventBus
  type Method (line 25) | public struct Method
  type ReceivingMethod (line 47) | public struct ReceivingMethod
  class EventBusExtensions (line 70) | public static class EventBusExtensions
    method RefKindToString (line 79) | public static string RefKindToString(RefKind refKind)
    method AppendEventMethods (line 101) | public static StringBuilder AppendEventMethods(this StringBuilder sb, ...
    method AppendEventMethod (line 116) | public static StringBuilder AppendEventMethod(this StringBuilder sb, M...
    method MethodCalls (line 141) | public static StringBuilder MethodCalls(this StringBuilder sb, Method ...
    method InstanceReceiverLists (line 181) | public static StringBuilder InstanceReceiverLists(this StringBuilder s...
    method AppendEventBus (line 208) | public static StringBuilder AppendEventBus(this StringBuilder sb, ref ...

FILE: Arch.EventBus/Hooks.cs
  type Hooks (line 9) | public struct Hooks
  type ClassHooks (line 20) | public struct ClassHooks
  type EventHook (line 37) | public struct EventHook
  class HookExtensions (line 54) | public static class HookExtensions
    method Hook (line 64) | public static StringBuilder Hook(this StringBuilder sb, IList<EventHoo...
    method Unhook (line 87) | public static StringBuilder Unhook(this StringBuilder sb, IList<EventH...
    method AppendHookList (line 109) | public static StringBuilder AppendHookList(this StringBuilder sb, List...
    method AppendHooks (line 149) | public static StringBuilder AppendHooks(this StringBuilder sb, ref Hoo...

FILE: Arch.EventBus/MethodSymbolExtensions.cs
  class MethodSymbolExtensions (line 8) | public static class MethodSymbolExtensions
    method GetAttributeData (line 17) | public static AttributeData GetAttributeData(this IMethodSymbol ms, st...
    method GetAttributeTypes (line 36) | public static void GetAttributeTypes(this AttributeData? data, List<IT...

FILE: Arch.EventBus/SourceGenerator.cs
  class QueryGenerator (line 14) | [Generator]
    method Initialize (line 24) | public void Initialize(IncrementalGeneratorInitializationContext context)
    method GetMethodSymbolIfAttributeof (line 71) | private static MethodDeclarationSyntax? GetMethodSymbolIfAttributeof(G...
    method MapMethodToEventType (line 100) | private static void MapMethodToEventType(IMethodSymbol methodSymbol)
    method MapMethodToContainingType (line 123) | private static void MapMethodToContainingType(IMethodSymbol methodSymbol)
    method PrepareEventBus (line 143) | private static void PrepareEventBus()
    method PrepareHooks (line 162) | private static void PrepareHooks()
    method Generate (line 189) | private static void Generate(Compilation compilation, ImmutableArray<M...
    class Comparer (line 224) | class Comparer : IEqualityComparer<MethodDeclarationSyntax>
      method Equals (line 228) | public bool Equals(MethodDeclarationSyntax x, MethodDeclarationSynta...
      method GetHashCode (line 233) | public int GetHashCode(MethodDeclarationSyntax obj)

FILE: Arch.Extended.Sample/Components.cs
  type Position (line 13) | public struct Position
    method Position (line 26) | public Position(float x, float y)
    method Position (line 36) | public Position(Vector2 vector2)
  type Velocity (line 45) | public struct Velocity
    method Velocity (line 58) | public Velocity(float x, float y)
    method Velocity (line 68) | public Velocity(Vector2 vector2)
  type Sprite (line 77) | public struct Sprite
    method Sprite (line 100) | public Sprite(Texture2D texture2D, Color color)

FILE: Arch.Extended.Sample/Extensions.cs
  class TextureExtensions (line 7) | public static class TextureExtensions
    method CreateSquareTexture (line 15) | public static Texture2D CreateSquareTexture(GraphicsDevice graphicsDev...
  class RandomExtensions (line 26) | public static class RandomExtensions
    method NextVector2 (line 34) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method NextVector2 (line 47) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method NextColor (line 58) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.Extended.Sample/Game.cs
  class Game (line 27) | public class Game : Microsoft.Xna.Framework.Game
    method Game (line 43) | public Game()
    method Initialize (line 49) | protected override void Initialize()
    method LoadContent (line 58) | protected override void LoadContent()
    method BeginRun (line 64) | protected override void BeginRun()
    method Update (line 115) | protected override void Update(GameTime gameTime)
    method Draw (line 202) | protected override void Draw(GameTime gameTime)
    method EndRun (line 213) | protected override void EndRun()

FILE: Arch.Extended.Sample/Serializer.cs
  class SpriteSerializer (line 13) | public class SpriteSerializer : IJsonFormatter<Sprite>, IMessagePackForm...
    method Serialize (line 20) | public void Serialize(ref JsonWriter writer, Sprite value, IJsonFormat...
    method Deserialize (line 36) | public Sprite Deserialize(ref JsonReader reader, IJsonFormatterResolve...
    method Serialize (line 61) | public void Serialize(ref MessagePackWriter writer, Sprite value, Mess...
    method Deserialize (line 70) | public Sprite Deserialize(ref MessagePackReader reader, MessagePackSer...

FILE: Arch.Extended.Sample/Systems.cs
  class MovementSystem (line 16) | public partial class MovementSystem : BaseSystem<World, GameTime>
    method MovementSystem (line 30) | public MovementSystem(World world, Rectangle viewport) : base(world) {...
    method Move (line 39) | [Query(Parallel = true)]
    method Bounce (line 52) | [Query]
  class ColorSystem (line 73) | public partial class ColorSystem : BaseSystem<World, GameTime>
    method ColorSystem (line 79) | public ColorSystem(World world) : base(world) {}
    method ChangeColor (line 87) | [Query]
  class DrawSystem (line 100) | public partial class DrawSystem : BaseSystem<World, GameTime>
    method DrawSystem (line 112) | public DrawSystem(World world, SpriteBatch batch) : base(world) { _bat...
    method BeforeUpdate (line 118) | public override void BeforeUpdate(in GameTime t)
    method Draw (line 130) | [Query]
    method AfterUpdate (line 141) | public override void AfterUpdate(in GameTime t)
  class DebugSystem (line 151) | public partial class DebugSystem : BaseSystem<World, GameTime>
    method DebugSystem (line 162) | public DebugSystem(World world) : base(world)
    method Update (line 171) | public override void Update(in GameTime t)
    method PrintEntitiesWithoutVelocity (line 182) | [Query]
    method OnKeyboardEventPrint (line 195) | [Event(order: 0)]
  class EventHandler (line 206) | public static partial class EventHandler
    method OnDeleteStopEntities (line 214) | [Event(order: 1)]

FILE: Arch.LowLevel.Tests/ArrayTest.cs
  class ArrayTest (line 9) | [TestFixture]
    method ArrayCreate (line 15) | [Test]
    method ArrayEnumerator (line 26) | [Test]
    method ArrayEmptyIsEmpty (line 39) | [Test]
    method ArrayFill (line 46) | [Test]
    method ArrayCopy (line 56) | [Test]
    method ArrayResizeShrink (line 79) | [Test]
    method ArrayResizeGrow (line 91) | [Test]
    method ArrayEquals (line 103) | [Test]
    method ArrayNotEquals (line 113) | [Test]

FILE: Arch.LowLevel.Tests/Jagged/JaggedArrayTest.cs
  class JaggedArrayTest (line 10) | [TestFixture]
    method Add (line 17) | [Test]
    method TryGetValue (line 39) | [Test]
    method TryGetValueRef (line 64) | [Test]
    method Remove (line 94) | [Test]
    method TrimExcess (line 123) | [Test]

FILE: Arch.LowLevel.Tests/ResourcesTest.cs
  class ResourcesTest (line 8) | [TestFixture]
    method ResourcesAddHandle (line 15) | [Test]
    method ResourcesAddManyHandles (line 30) | [Test]
    method ResourcesGetHandle (line 52) | [Test]
    method ResourcesRemoveHandle (line 71) | [Test]
    method ResourcesRecycleHandle (line 91) | [Test]
    method ResourcesHandleValid (line 111) | [Test]
    method ResourcesDispose (line 126) | [Test]

FILE: Arch.LowLevel.Tests/UnsafeArrayTest.cs
  class UnsafeArrayTest (line 9) | [TestFixture]
    method UnsafeArrayCreate (line 15) | [Test]
    method UnsafeArrayEnumerator (line 26) | [Test]
    method UnsafeArrayEmptyIsEmpty (line 39) | [Test]
    method UnsafeArrayFill (line 51) | [Test]
    method UnsafeArrayCopy (line 66) | [Test]
    method UnsafeArrayResizeShrink (line 94) | [Test]
    method UnsafeArrayResizeGrow (line 108) | [Test]
    method UnsafeArrayEquals (line 122) | [Test]
    method UnsafeArrayNotEquals (line 132) | [Test]

FILE: Arch.LowLevel.Tests/UnsafeListTest.cs
  class UnsafeListTest (line 8) | [TestFixture]
    method UnsafeListAdd (line 15) | [Test]
    method UnsafeListGetHashCode (line 30) | [Test]
    method UnsafeListRefIndex (line 42) | [Test]
    method UnsafeListIndex (line 62) | [Test]
    method UnsafeListCopyTo (line 83) | [Test]
    method UnsafeListClear (line 114) | [Test]
    method UnsafeListAsSpan (line 129) | [Test]
    method UnsafeListEquality (line 143) | [Test]
    method UnsafeListInsertAt (line 170) | [Test]
    method UnsafeListRemoveAt (line 200) | [Test]
    method UnsafeListRemove (line 227) | [Test]
    method UnsafeListContains (line 245) | [Test]
    method UnsafeListIndexOf (line 261) | [Test]
    method UnsafeListEnsureCapacity (line 278) | [Test]
    method UnsafeListTrimExcess (line 298) | [Test]
    method UnsafeListEnumerator (line 314) | [Test]
    method UnsafeListAsIListEnumeratorReset (line 350) | [Test]
    method UnsafeListEnumeratorReset (line 378) | [Test]
    method UnsafeListFuzz (line 403) | [Test]

FILE: Arch.LowLevel.Tests/UnsafeQueueTest.cs
  class UnsafeQueueTest (line 7) | [TestFixture]
    method UnsafeQueueEnqueue (line 14) | [Test]
    method UnsafeQueueAsSpan (line 29) | [Test]
    method UnsafeQueuePeek (line 45) | [Test]
    method UnsafeQueueDequeue (line 60) | [Test]
    method UnsafeQueueClear (line 83) | [Test]
    method UnsafeQueueEnumerator (line 101) | [Test]
    method UnsafeQueueInvalidConstruction (line 121) | [Test]
    method UnsafeQueueEnsureCapacity (line 133) | [Test]
    method UnsafeQueueTrimExcess (line 150) | [Test]

FILE: Arch.LowLevel.Tests/UnsafeStackTest.cs
  class UnsafeStackTest (line 9) | [TestFixture]
    method UnsafeStackInvalidCapacity (line 15) | [Test]
    method UnsafeStackAdd (line 24) | [Test]
    method UnsafeStackAsSpan (line 46) | [Test]
    method UnsafeStackAddBeyondCapacity (line 68) | [Test]
    method UnsafeStackEnsureCapacityExpands (line 90) | [Test]
    method UnsafeStackEnsureCapacityCannotShrink (line 104) | [Test]
    method UnsafeStackEnsureCapacityExpandsALot (line 118) | [Test]
    method UnsafeStackTrimExcessShrinks (line 132) | [Test]
    method UnsafeStackTrimExcessNeverExpands (line 146) | [Test]
    method UnsafeStackClear (line 159) | [Test]
    method UnsafeStackPeek (line 180) | [Test]
    method UnsafeStackPop (line 195) | [Test]
    method UnsafeStackEnumerator (line 210) | [Test]
    method UnsafeStackEnumeratorReset (line 230) | [Test]
    method UnsafeStackIEnumerableTEnumerator (line 258) | [Test]
    method UnsafeStackIEnumerableEnumeratorReset (line 279) | [Test]

FILE: Arch.LowLevel/Array.cs
  type Array (line 15) | [DebuggerTypeProxy(typeof(ArrayDebugView<>))]
    method Array (line 34) | public Array(int count)
    method Array (line 45) | public Array(T[] array)
    method AsSpan (line 83) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 93) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Equals (line 104) | public bool Equals(Array<T> other)
    method Equals (line 114) | public override bool Equals(object? obj)
    method GetHashCode (line 145) | public override int GetHashCode()
    method ToString (line 176) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Empty (line 201) | public static Array<T> Empty<T>()
    method Copy (line 214) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Fill (line 226) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Resize (line 239) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  type Array (line 193) | public unsafe struct Array
    method Array (line 34) | public Array(int count)
    method Array (line 45) | public Array(T[] array)
    method AsSpan (line 83) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 93) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Equals (line 104) | public bool Equals(Array<T> other)
    method Equals (line 114) | public override bool Equals(object? obj)
    method GetHashCode (line 145) | public override int GetHashCode()
    method ToString (line 176) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Empty (line 201) | public static Array<T> Empty<T>()
    method Copy (line 214) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Fill (line 226) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Resize (line 239) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class ArrayDebugView (line 256) | internal class ArrayDebugView<T> where T : unmanaged
    method ArrayDebugView (line 272) | public ArrayDebugView(Array<T> entity) => _entity = entity;

FILE: Arch.LowLevel/Enumerators.cs
  type Enumerator (line 10) | public unsafe ref struct Enumerator<T>
    method Enumerator (line 20) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method MoveNext (line 37) | public bool MoveNext()
    method Reset (line 45) | public void Reset()
  type UnsafeIEnumerator (line 55) | public unsafe struct UnsafeIEnumerator<T> : IEnumerator<T> where T : unm...
    method UnsafeIEnumerator (line 66) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 87) | public void Dispose() { }
    method MoveNext (line 93) | public bool MoveNext()
    method Reset (line 101) | public void Reset()
  type UnsafeEnumerator (line 111) | public unsafe ref struct UnsafeEnumerator<T> where T : unmanaged
    method UnsafeEnumerator (line 122) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method MoveNext (line 139) | public bool MoveNext()
    method Reset (line 147) | public void Reset()
  type ReverseIEnumerator (line 157) | public unsafe struct ReverseIEnumerator<T> : IEnumerator<T> where T : un...
    method ReverseIEnumerator (line 168) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 189) | public void Dispose() { }
    method MoveNext (line 195) | public bool MoveNext()
    method Reset (line 203) | public void Reset()
  type UnsafeReverseEnumerator (line 212) | public unsafe ref struct UnsafeReverseEnumerator<T> where T : unmanaged
    method UnsafeReverseEnumerator (line 223) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method MoveNext (line 240) | public bool MoveNext()
    method Reset (line 248) | public void Reset()

FILE: Arch.LowLevel/Jagged/JaggedArray.cs
  class MathExtensions (line 12) | internal static class MathExtensions
    method RoundToPowerOfTwo (line 19) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  type Bucket (line 43) | public record struct Bucket<T>
  class JaggedArray (line 105) | public class JaggedArray<T>
    method JaggedArray (line 137) | public JaggedArray(int bucketSize, int capacity = 64)
    method JaggedArray (line 161) | public JaggedArray(int bucketSize, T filler, int capacity = 64) : this...
    method Add (line 194) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 208) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 224) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 254) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ContainsKey (line 283) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 302) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 325) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IndexToSlot (line 351) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetBucket (line 366) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetBucket (line 377) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 400) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.LowLevel/Jagged/SparseJaggedArray.cs
  type SparseBucket (line 14) | public record struct SparseBucket<T>
  class SparseJaggedArray (line 131) | public class SparseJaggedArray<T>
    method SparseJaggedArray (line 163) | public SparseJaggedArray(int bucketSize, int capacity = 64)
    method SparseJaggedArray (line 187) | public SparseJaggedArray(int bucketSize, T filler, int capacity = 64) ...
    method Add (line 225) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 240) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 258) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 296) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ContainsKey (line 333) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 359) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 382) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IndexToSlot (line 408) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetBucket (line 423) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetBucket (line 434) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 457) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.LowLevel/Jagged/UnsafeJaggedArray.cs
  type UnsafeBucket (line 11) | public record struct UnsafeBucket<T> : IDisposable where T : unmanaged
  type UnsafeJaggedArray (line 82) | public struct UnsafeJaggedArray<T> : IDisposable where T : unmanaged
    method UnsafeJaggedArray (line 114) | public UnsafeJaggedArray(int bucketSize, int capacity = 64)
    method UnsafeJaggedArray (line 138) | public UnsafeJaggedArray(int bucketSize, T filler, int capacity = 64)
    method Add (line 171) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 185) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 201) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 232) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ContainsKey (line 261) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 280) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 303) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IndexToSlot (line 329) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetBucket (line 344) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetBucket (line 356) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 379) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 396) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.LowLevel/Jagged/UnsafeSparseJaggedArray.cs
  type UnsafeSparseBucket (line 13) | public record struct UnsafeSparseBucket<T> : IDisposable where T : unman...
  type UnsafeSparseJaggedArray (line 142) | public struct UnsafeSparseJaggedArray<T> : IDisposable where T : unmanaged
    method UnsafeSparseJaggedArray (line 174) | public UnsafeSparseJaggedArray(int bucketSize, int capacity = 64)
    method UnsafeSparseJaggedArray (line 198) | public UnsafeSparseJaggedArray(int bucketSize, T filler, int capacity ...
    method Add (line 236) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 251) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 269) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 307) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ContainsKey (line 344) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 370) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 393) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IndexToSlot (line 419) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetBucket (line 434) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetBucket (line 446) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 469) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 486) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.LowLevel/Resources.cs
  type Handle (line 13) | public readonly record struct Handle<T>
  class Resources (line 49) | public sealed class Resources<T> : IDisposable
    method Resources (line 66) | public Resources(int capacity = 64)
    method Resources (line 77) | public Resources(int size, int capacity = 64)
    method Add (line 100) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IsValid (line 121) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Get (line 132) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 142) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 154) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 164) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.LowLevel/UnsafeArray.cs
  type UnsafeArray (line 13) | [DebuggerTypeProxy(typeof(UnsafeArrayDebugView<>))]
    method UnsafeArray (line 32) | public UnsafeArray(int count)
    method UnsafeArray (line 47) | public UnsafeArray(T* ptr, int count)
    method Dispose (line 84) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AsSpan (line 98) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 108) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Equals (line 119) | public bool Equals(UnsafeArray<T> other)
    method Equals (line 129) | public override bool Equals(object? obj)
    method GetHashCode (line 161) | public override int GetHashCode()
    method ToString (line 195) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Empty (line 219) | public static UnsafeArray<T> Empty<T>() where T : unmanaged
    method Copy (line 232) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Fill (line 248) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Resize (line 261) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  type UnsafeArray (line 211) | public unsafe struct UnsafeArray
    method UnsafeArray (line 32) | public UnsafeArray(int count)
    method UnsafeArray (line 47) | public UnsafeArray(T* ptr, int count)
    method Dispose (line 84) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AsSpan (line 98) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 108) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Equals (line 119) | public bool Equals(UnsafeArray<T> other)
    method Equals (line 129) | public override bool Equals(object? obj)
    method GetHashCode (line 161) | public override int GetHashCode()
    method ToString (line 195) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Empty (line 219) | public static UnsafeArray<T> Empty<T>() where T : unmanaged
    method Copy (line 232) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Fill (line 248) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Resize (line 261) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class UnsafeArrayDebugView (line 276) | internal class UnsafeArrayDebugView<T> where T : unmanaged
    method UnsafeArrayDebugView (line 292) | public UnsafeArrayDebugView(UnsafeArray<T> entity) => _entity = entity;

FILE: Arch.LowLevel/UnsafeList.cs
  type UnsafeList (line 13) | [DebuggerTypeProxy(typeof(UnsafeListDebugView<>))]
    method UnsafeList (line 25) | public UnsafeList(int capacity = 8)
    method UnsafeList (line 37) | public UnsafeList(T* ptr, int capacity = 8)
    method Add (line 81) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Insert (line 98) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method RemoveAt (line 133) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 155) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method IndexOf (line 170) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Contains (line 188) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method CopyTo (line 206) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 226) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 248) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method CheckIndex (line 285) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 302) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 311) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AsSpan (line 321) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 331) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 341) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 351) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Equals (line 362) | public bool Equals(UnsafeList<T> other)
    method Equals (line 372) | public override bool Equals(object? obj)
    method GetHashCode (line 403) | public override int GetHashCode()
    method ToString (line 418) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class UnsafeListDebugView (line 436) | internal class UnsafeListDebugView<T> where T : unmanaged
    method UnsafeListDebugView (line 452) | public UnsafeListDebugView(UnsafeList<T> entity) => _entity = entity;

FILE: Arch.LowLevel/UnsafeQueue.cs
  type UnsafeQueue (line 14) | [DebuggerTypeProxy(typeof(UnsafeQueueDebugView<>))]
    method UnsafeQueue (line 27) | public UnsafeQueue(int capacity)
    method Enqueue (line 61) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dequeue (line 79) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Peek (line 98) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 112) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 124) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetCapacity (line 140) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 176) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 185) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AsSpan (line 196) | [Pure]
    method GetEnumerator (line 207) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 217) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 227) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ToString (line 237) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class UnsafeQueueDebugView (line 254) | internal class UnsafeQueueDebugView<T> where T : unmanaged
    method UnsafeQueueDebugView (line 270) | public UnsafeQueueDebugView(UnsafeQueue<T> entity) => _entity = entity;

FILE: Arch.LowLevel/UnsafeStack.cs
  type UnsafeStack (line 13) | [DebuggerTypeProxy(typeof(UnsafeStackDebugView<>))]
    method UnsafeStack (line 37) | public UnsafeStack(int capacity = DefaultCapacity)
    method Push (line 89) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Pop (line 106) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Peek (line 123) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method EnsureCapacity (line 138) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TrimExcess (line 164) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Clear (line 186) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Dispose (line 195) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AsSpan (line 205) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 215) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 225) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 235) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method ToString (line 245) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class UnsafeStackDebugView (line 262) | internal class UnsafeStackDebugView<T> where T : unmanaged
    method UnsafeStackDebugView (line 278) | public UnsafeStackDebugView(UnsafeStack<T> entity) => _entity = entity;

FILE: Arch.Persistence.Tests/PersistenceTest.cs
  type Transform (line 13) | public record struct Transform
  type MetaData (line 23) | public record struct MetaData
  class Tests (line 28) | public class Tests
    method Setup (line 35) | [SetUp]
    method BinaryWorldSerialization (line 51) | [Test]
    method BinaryEntitySerialization (line 94) | [Test]
    method JsonWorldSerialization (line 110) | [Test]
    method JsonEntitySerialization (line 153) | [Test]

FILE: Arch.Persistence/Binary.cs
  class SingleEntityFormatter (line 18) | public partial class SingleEntityFormatter : IMessagePackFormatter<Entity>
    method Serialize (line 22) | public void Serialize(ref MessagePackWriter writer, Entity value, Mess...
    method Deserialize (line 50) | public Entity Deserialize(ref MessagePackReader reader, MessagePackSer...
  class EntityFormatter (line 85) | public partial class EntityFormatter : IMessagePackFormatter<Entity>
    method Serialize (line 88) | public void Serialize(ref MessagePackWriter writer, Entity value, Mess...
    method Deserialize (line 95) | public Entity Deserialize(ref MessagePackReader reader, MessagePackSer...
  class ArrayFormatter (line 108) | public partial class ArrayFormatter : IMessagePackFormatter<Array>
    method Serialize (line 111) | public void Serialize(ref MessagePackWriter writer, Array value, Messa...
    method Deserialize (line 128) | public Array Deserialize(ref MessagePackReader reader, MessagePackSeri...
  class JaggedArrayFormatter (line 152) | public partial class JaggedArrayFormatter<T> : IMessagePackFormatter<Jag...
    method JaggedArrayFormatter (line 161) | public JaggedArrayFormatter(T filler)
    method Serialize (line 167) | public void Serialize(ref MessagePackWriter writer, JaggedArray<T> val...
    method Deserialize (line 179) | public JaggedArray<T> Deserialize(ref MessagePackReader reader, Messag...
  class ComponentTypeFormatter (line 198) | public partial class ComponentTypeFormatter : IMessagePackFormatter<Comp...
    method Serialize (line 201) | public void Serialize(ref MessagePackWriter writer, ComponentType valu...
    method Deserialize (line 211) | public ComponentType Deserialize(ref MessagePackReader reader, Message...
  class SignatureFormatter (line 224) | public partial class SignatureFormatter : IMessagePackFormatter<Signature>
    method Serialize (line 227) | public void Serialize(ref MessagePackWriter writer, Signature value, M...
    method Deserialize (line 240) | public Signature Deserialize(ref MessagePackReader reader, MessagePack...
  class EntitySlotFormatter (line 262) | public partial class EntitySlotFormatter : IMessagePackFormatter<EntityD...
    method Serialize (line 265) | public void Serialize(ref MessagePackWriter writer, EntityData value, ...
    method Deserialize (line 275) | public EntityData Deserialize(ref MessagePackReader reader, MessagePac...
  class WorldFormatter (line 291) | public partial class WorldFormatter : IMessagePackFormatter<World>
    method Serialize (line 294) | public void Serialize(ref MessagePackWriter writer, World value, Messa...
    method Deserialize (line 316) | public World Deserialize(ref MessagePackReader reader, MessagePackSeri...
  class ArchetypeFormatter (line 361) | public partial class ArchetypeFormatter : IMessagePackFormatter<Archetype>
    method Serialize (line 364) | public void Serialize(ref MessagePackWriter writer, Archetype value, M...
    method Deserialize (line 390) | public Archetype Deserialize(ref MessagePackReader reader, MessagePack...
  class ChunkFormatter (line 435) | public partial class ChunkFormatter : IMessagePackFormatter<Chunk>
    method Serialize (line 438) | public void Serialize(ref MessagePackWriter writer, Chunk value, Messa...
    method Deserialize (line 459) | public Chunk Deserialize(ref MessagePackReader reader, MessagePackSeri...

FILE: Arch.Persistence/Json.cs
  class SingleEntityFormatter (line 17) | public partial class SingleEntityFormatter : IJsonFormatter<Entity>
    method Serialize (line 26) | public void Serialize(ref JsonWriter writer, Entity value, IJsonFormat...
    method Deserialize (line 75) | public Entity Deserialize(ref JsonReader reader, IJsonFormatterResolve...
  class EntityFormatter (line 128) | public partial class EntityFormatter : IJsonFormatter<Entity>
    method Serialize (line 138) | public void Serialize(ref JsonWriter writer, Entity value, IJsonFormat...
    method Deserialize (line 146) | public Entity Deserialize(ref JsonReader reader, IJsonFormatterResolve...
  class ArrayFormatter (line 161) | public partial class ArrayFormatter : IJsonFormatter<Array>
    method Serialize (line 164) | public void Serialize(ref JsonWriter writer, Array value, IJsonFormatt...
    method Deserialize (line 193) | public Array Deserialize(ref JsonReader reader, IJsonFormatterResolver...
  class JaggedArrayFormatter (line 227) | public partial class JaggedArrayFormatter<T> : IJsonFormatter<JaggedArra...
    method Serialize (line 230) | public void Serialize(ref JsonWriter writer, JaggedArray<T> value, IJs...
    method Deserialize (line 260) | public JaggedArray<T> Deserialize(ref JsonReader reader, IJsonFormatte...
  class ComponentTypeFormatter (line 290) | public partial class ComponentTypeFormatter : IJsonFormatter<ComponentType>
    method Serialize (line 293) | public void Serialize(ref JsonWriter writer, ComponentType value, IJso...
    method Deserialize (line 310) | public ComponentType Deserialize(ref JsonReader reader, IJsonFormatter...
  class SignatureFormatter (line 332) | public partial class SignatureFormatter : IJsonFormatter<Signature>
    method Serialize (line 335) | public void Serialize(ref JsonWriter writer, Signature value, IJsonFor...
    method Deserialize (line 367) | public Signature Deserialize(ref JsonReader reader, IJsonFormatterReso...
  class EntitySlotFormatter (line 400) | public partial class EntitySlotFormatter : IJsonFormatter<EntityData>
    method Serialize (line 403) | public void Serialize(ref JsonWriter writer, EntityData value, IJsonFo...
    method Deserialize (line 420) | public EntityData Deserialize(ref JsonReader reader, IJsonFormatterRes...
  class WorldFormatter (line 442) | public partial class WorldFormatter : IJsonFormatter<World>
    method Serialize (line 445) | public void Serialize(ref JsonWriter writer, World value, IJsonFormatt...
    method Deserialize (line 511) | public World Deserialize(ref JsonReader reader, IJsonFormatterResolver...
  class ArchetypeFormatter (line 589) | public partial class ArchetypeFormatter : IJsonFormatter<Archetype>
    method Serialize (line 598) | public void Serialize(ref JsonWriter writer, Archetype value, IJsonFor...
    method Deserialize (line 644) | public Archetype Deserialize(ref JsonReader reader, IJsonFormatterReso...
  class ChunkFormatter (line 703) | public partial class ChunkFormatter : IJsonFormatter<Chunk>
    method Serialize (line 731) | public void Serialize(ref JsonWriter writer, Chunk value, IJsonFormatt...
    method Deserialize (line 772) | public Chunk Deserialize(ref JsonReader reader, IJsonFormatterResolver...

FILE: Arch.Persistence/Serializer.cs
  type IArchSerializer (line 17) | public interface IArchSerializer
    method Serialize (line 24) | byte[] Serialize(World world, Entity entity);
    method Serialize (line 32) | void Serialize(Stream stream, World world, Entity entity);
    method Serialize (line 40) | void Serialize(IBufferWriter<byte> writer, World world, Entity entity);
    method Deserialize (line 49) | Entity Deserialize(World world, byte[] entity);
    method Deserialize (line 58) | Entity Deserialize(Stream stream, World world);
    method Serialize (line 64) | byte[] Serialize(World world);
    method Serialize (line 71) | void Serialize(Stream stream, World world);
    method Serialize (line 78) | void Serialize(IBufferWriter<byte> writer, World world);
    method Deserialize (line 85) | World Deserialize(byte[] world);
    method Deserialize (line 92) | World Deserialize(Stream stream);
  class ArchBinarySerializer (line 99) | public class ArchBinarySerializer : IArchSerializer
    method ArchBinarySerializer (line 142) | public ArchBinarySerializer(params IMessagePackFormatter[] custFormatt...
    method Serialize (line 169) | public byte[] Serialize(World world, Entity entity)
    method Serialize (line 176) | public void Serialize(Stream stream, World world, Entity entity)
    method Serialize (line 183) | public void Serialize(IBufferWriter<byte> writer, World world, Entity ...
    method Deserialize (line 190) | public Entity Deserialize(World world, byte[] entity)
    method Deserialize (line 197) | public Entity Deserialize(Stream stream, World world)
    method Serialize (line 204) | public byte[] Serialize(World world)
    method Serialize (line 210) | public void Serialize(Stream stream, World world)
    method Serialize (line 216) | public void Serialize(IBufferWriter<byte> writer, World world)
    method Deserialize (line 222) | public World Deserialize(byte[] world)
    method Deserialize (line 228) | public World Deserialize(Stream stream)
  class ArchJsonSerializer (line 238) | public class ArchJsonSerializer : IArchSerializer
    method ArchJsonSerializer (line 284) | public ArchJsonSerializer(params IJsonFormatter[] custFormatters)
    method ArchJsonSerializer (line 310) | public ArchJsonSerializer(IJsonFormatter[] custFormatters, IJsonFormat...
    method ToJson (line 337) | public string ToJson(World world)
    method ToJson (line 349) | public string ToJson(World world, Entity entity)
    method FromJson (line 360) | public World FromJson(string jsonWorld)
    method FromJson (line 372) | public Entity FromJson(World world, string jsonEntity)
    method Serialize (line 379) | public byte[] Serialize(World world, Entity entity)
    method Serialize (line 386) | public void Serialize(Stream stream, World world, Entity entity)
    method Serialize (line 393) | public void Serialize(IBufferWriter<byte> writer, World world, Entity ...
    method Deserialize (line 399) | public Entity Deserialize(World world, byte[] entity)
    method Deserialize (line 406) | public Entity Deserialize(Stream stream, World world)
    method Serialize (line 413) | public byte[] Serialize(World world)
    method Serialize (line 419) | public void Serialize(Stream stream, World world)
    method Serialize (line 425) | public void Serialize(IBufferWriter<byte> writer, World world)
    method Deserialize (line 431) | public World Deserialize(byte[] world)
    method Deserialize (line 437) | public World Deserialize(Stream stream)

FILE: Arch.Persistence/StreamBufferWriter.cs
  class StreamBufferWriter (line 10) | public sealed class StreamBufferWriter : IBufferWriter<byte>, IDisposable
    method StreamBufferWriter (line 38) | public StreamBufferWriter(Stream destination, int bufferSize = 1024, b...
    method Lease (line 56) | private int Lease(int sizeHint)
    method Flush (line 73) | public void Flush(bool flushUnderlyingStream = false)
    method Advance (line 91) | void IBufferWriter<byte>.Advance(int count)
    method GetMemory (line 103) | Memory<byte> IBufferWriter<byte>.GetMemory(int sizeHint)
    method GetSpan (line 114) | Span<byte> IBufferWriter<byte>.GetSpan(int sizeHint)
    method Dispose (line 123) | public void Dispose()

FILE: Arch.Relationships.Tests/RelationshipTest.cs
  type ParentOf (line 10) | public record struct ParentOf;
  type ChildOf (line 11) | public record struct ChildOf;
  class RelationshipTest (line 17) | [TestFixture]
    method SetUp (line 22) | [SetUp]
    method NoRelationships (line 31) | [Test]
    method AddRelationship (line 63) | [Test]
    method RelationshipData (line 77) | [Test]
    method RemoveRelationship (line 98) | [Test]
    method RelationshipCleanup (line 115) | [Test]
    method QueryRelationship (line 184) | [Test]

FILE: Arch.Relationships/EntityRelationshipExtensions.cs
  class EntityRelationshipExtensions (line 13) | public static class EntityRelationshipExtensions
    method AddRelationship (line 23) | public static void AddRelationship<T>(this in Entity source, Entity ta...
    method SetRelationship (line 36) | public static void SetRelationship<T>(this in Entity source, Entity ta...
    method HasRelationship (line 49) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method HasRelationship (line 62) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method GetRelationship (line 76) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method GetRelationships (line 89) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method TryGetRelationship (line 105) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method RemoveRelationship (line 118) | public static void RemoveRelationship<T>(this in Entity source, Entity...

FILE: Arch.Relationships/Enumerators.cs
  type SortedListEnumerator (line 15) | public struct SortedListEnumerator<TValue>
    method SortedListEnumerator (line 24) | public SortedListEnumerator(SortedList<Entity, TValue> list)
    method MoveNext (line 49) | public bool MoveNext()
    method Reset (line 58) | public void Reset()

FILE: Arch.Relationships/InRelationship.cs
  type InRelationship (line 12) | internal readonly struct InRelationship
    method InRelationship (line 25) | internal InRelationship(ComponentType targetRelation)
    method InRelationship (line 35) | internal InRelationship(int componentTypeId)

FILE: Arch.Relationships/Relationship.cs
  type IRelationship (line 10) | internal interface IRelationship
    method Destroy (line 26) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 33) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
  class Relationship (line 41) | public class Relationship<T> : IRelationship
    method Relationship (line 52) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Relationship (line 62) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Add (line 87) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Set (line 98) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Contains (line 109) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Get (line 120) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method TryGetValue (line 132) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 139) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Remove (line 146) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Destroy (line 153) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Destroy (line 160) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetEnumerator (line 170) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.Relationships/WorldRelationshipExtensions.cs
  class WorldRelationshipExtensions (line 15) | public static class WorldRelationshipExtensions
    method HandleRelationshipCleanup (line 23) | public static void HandleRelationshipCleanup(this World world)
    method CleanupRelationships (line 34) | public static void CleanupRelationships(this World world, in Entity en...
    method AddRelationship (line 80) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AddOrGetRelationship (line 100) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method AddOrGetRelationships (line 120) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method SetRelationship (line 141) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method HasRelationship (line 156) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method HasRelationship (line 175) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method GetRelationship (line 189) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method TryGetRelationship (line 206) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method GetRelationships (line 226) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method TryGetRelationships (line 240) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method TryGetRefRelationships (line 255) | [MethodImpl(MethodImplOptions.AggressiveInlining), Pure]
    method RemoveRelationship (line 268) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.SnapshotTests/SnapshotTest.cs
  class SnapshotTest (line 21) | [TestFixture]
    method TestSystem (line 32) | private static void TestSystem(Compilation compilation, string testSys...
    method VerifyCompilation (line 75) | private static void VerifyCompilation(string compilationFolder, string...
    method BasicCompilation (line 169) | [Test]
    method AttributeQueryCompilation (line 175) | [Test]
    method ParamQueryCompilation (line 181) | [Test]
    method DataParamCompilation (line 187) | [Test]
    method GeneratedUpdateCompilation (line 193) | [Test]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/AttributeQuerySystem.cs
  class AttributeQuerySystem (line 11) | internal partial class AttributeQuerySystem : BaseTestSystem
    method AttributeQuerySystem (line 13) | public AttributeQuerySystem(World world) : base(world) { }
    method IncrementA (line 15) | [Query]
    method IncrementAOrB (line 23) | [Query]
    method IncrementAOrBNotC (line 41) | [Query]
    method IncrementAAndB (line 60) | [Query]
    method IncrementANotB (line 70) | [Query]
    method IncrementAAndBExclusive (line 79) | [Query]
    method Setup (line 92) | public override void Setup()
    method TestExpectedValues (line 107) | private void TestExpectedValues()
    method Update (line 120) | public override void Update(in int t)

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementA(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementAQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAAndB(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementAAndBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAAndBExclusive(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementAAndBExclusiveQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementANotB(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementANotBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAOrB(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementAOrBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAOrBNotC(Entity).g.cs
  class AttributeQuerySystem (line 13) | partial class AttributeQuerySystem
    method IncrementAOrBNotCQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/BasicCompilation/BasicSystem.cs
  class BasicSystem (line 9) | internal partial class BasicSystem : BaseTestSystem
    method BasicSystem (line 11) | public BasicSystem(World world) : base(world) { }
    method Basic (line 16) | [Query]
    method BasicStatic (line 23) | [Query]
    method Setup (line 29) | public override void Setup()
    method Update (line 34) | public override void Update(in int t)

FILE: Arch.System.SourceGenerator.Tests/BasicCompilation/ExpectedGeneration/BasicSystem.Basic(IntComponentA).g.cs
  class BasicSystem (line 13) | partial class BasicSystem
    method BasicQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/BasicCompilation/ExpectedGeneration/BasicSystem.BasicStatic(IntComponentA).g.cs
  class BasicSystem (line 13) | partial class BasicSystem
    method BasicStaticQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/DataParamSystem.cs
  class DataParamSystem (line 10) | [SuppressMessage("Style", "IDE0060:Remove unused parameter", Justificati...
    method DataParamSystem (line 13) | public DataParamSystem(World world) : base(world) { }
    method CountANoParams (line 15) | [Query]
    method CountAWithParamsLeft (line 22) | [Query]
    method CountAWithParamsRight (line 28) | [Query]
    method CountAWithParamsMiddle (line 34) | [Query]
    method CountATwiceWithParams (line 40) | [Query]
    method CountAWithEntityRight (line 47) | [Query]
    method CountAWithEntityLeft (line 54) | [Query]
    method CountAWithEntityAndParamLeft (line 61) | [Query]
    method CountAWithEntityAndParamRight (line 67) | [Query]
    method AssignEntityDataParamWithEntityRight (line 87) | [Query]
    method Setup (line 110) | public override void Setup()
    method Update (line 116) | public override void Update(in int t)

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.AssignEntityDataParamWithEntityRight(in Entity, in IntComponentA, ref Entity).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method AssignEntityDataParamWithEntityRightQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountANoParams(ref int).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountANoParamsQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountATwiceWithParams(ref int, in IntComponentA, ref int, in IntComponentB).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountATwiceWithParamsQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityAndParamLeft(ref int, in IntComponentA, in Entity).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithEntityAndParamLeftQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityAndParamRight(in Entity, in IntComponentA, ref int).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithEntityAndParamRightQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityLeft(ref int, in Entity).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithEntityLeftQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityRight(in Entity, ref int).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithEntityRightQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsLeft(ref int, in IntComponentA).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithParamsLeftQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsMiddle(in IntComponentA, ref int, in IntComponentB).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithParamsMiddleQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsRight(in IntComponentA, ref int).g.cs
  class DataParamSystem (line 13) | partial class DataParamSystem
    method CountAWithParamsRightQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.AutoRunA().g.cs
  class GeneratedUpdateSystem (line 13) | partial class GeneratedUpdateSystem
    method AutoRunAQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.AutoRunB().g.cs
  class GeneratedUpdateSystem (line 13) | partial class GeneratedUpdateSystem
    method AutoRunBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.g.cs
  class GeneratedUpdateSystem (line 7) | partial class GeneratedUpdateSystem
    method Update (line 9) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/GeneratedUpdateSystem.cs
  class GeneratedUpdateSystem (line 9) | internal partial class GeneratedUpdateSystem : BaseTestSystem
    method GeneratedUpdateSystem (line 11) | public GeneratedUpdateSystem(World world) : base(world) { }
    method AutoRunA (line 15) | [Query]
    method AutoRunB (line 23) | [Query]
    method Setup (line 31) | public override void Setup()
    method Test (line 36) | public override void Test()

FILE: Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementA(ref IntComponentA).g.cs
  class ParamQuerySystem (line 13) | partial class ParamQuerySystem
    method IncrementAQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementAAndB(ref IntComponentA, ref IntComponentB).g.cs
  class ParamQuerySystem (line 13) | partial class ParamQuerySystem
    method IncrementAAndBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementANotC(ref IntComponentA).g.cs
  class ParamQuerySystem (line 13) | partial class ParamQuerySystem
    method IncrementANotCQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementOnlyAWithB(ref IntComponentA, in IntComponentB).g.cs
  class ParamQuerySystem (line 13) | partial class ParamQuerySystem
    method IncrementOnlyAWithBQuery (line 18) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ParamQuerySystem.cs
  class ParamQuerySystem (line 11) | internal partial class ParamQuerySystem : BaseTestSystem
    method ParamQuerySystem (line 13) | public ParamQuerySystem(World world) : base(world) { }
    method IncrementA (line 15) | [Query]
    method IncrementOnlyAWithB (line 21) | [Query]
    method IncrementANotC (line 27) | [Query]
    method IncrementAAndB (line 34) | [Query]
    method Setup (line 44) | public override void Setup()
    method TestExpectedValues (line 59) | private void TestExpectedValues()
    method Update (line 72) | public override void Update(in int t)

FILE: Arch.System.SourceGenerator.Tests/Shared/BaseTestSystem.cs
  class BaseTestSystem (line 9) | internal abstract class BaseTestSystem : BaseSystem<World, int>
    method BaseTestSystem (line 11) | protected BaseTestSystem(World world) : base(world) { }
    method Setup (line 16) | public abstract void Setup();
    method Test (line 21) | public virtual void Test()

FILE: Arch.System.SourceGenerator.Tests/Shared/IntComponents.cs
  type IIntComponent (line 4) | internal interface IIntComponent
  type IntComponentA (line 9) | internal struct IntComponentA : IIntComponent
  type IntComponentB (line 19) | internal struct IntComponentB : IIntComponent
  type IntComponentC (line 29) | internal struct IntComponentC : IIntComponent
  type IntComponentD (line 39) | internal struct IntComponentD : IIntComponent

FILE: Arch.System.SourceGenerator.Tests/SystemsTest.cs
  class SystemsTest (line 13) | [TestFixture]
    method TestSystem (line 22) | private static void TestSystem<T>() where T : BaseTestSystem
    method BasicCompilation (line 32) | [Test]
    method AttributeQueryCompilation (line 38) | [Test]
    method ParamQueryCompilation (line 44) | [Test]
    method DataParamCompilation (line 50) | [Test]
    method GeneratedUpdateCompilation (line 56) | [Test]

FILE: Arch.System.SourceGenerator/Extensions/CommonUtils.cs
  class CommonUtils (line 9) | public static class CommonUtils
    method RefKindToString (line 17) | public static string RefKindToString(RefKind refKind)
    method GenericsWithoutBrackets (line 40) | public static StringBuilder GenericsWithoutBrackets(this StringBuilder...
    method GenericsToTypeArray (line 56) | public static StringBuilder GenericsToTypeArray(this StringBuilder sb,...

FILE: Arch.System.SourceGenerator/Extensions/MethodSymbolExtensions.cs
  class MethodSymbolExtensions (line 8) | public static class MethodSymbolExtensions
    method GetAttributeData (line 17) | public static AttributeData GetAttributeData(this IMethodSymbol ms, st...

FILE: Arch.System.SourceGenerator/Model.cs
  type BaseSystem (line 8) | public struct BaseSystem
  type QueryMethod (line 39) | public struct QueryMethod

FILE: Arch.System.SourceGenerator/QueryUtils.cs
  class QueryUtils (line 9) | public static class QueryUtils
    method GetFirstElements (line 18) | public static StringBuilder GetFirstElements(this StringBuilder sb, IE...
    method GetComponents (line 34) | public static StringBuilder GetComponents(this StringBuilder sb, IEnum...
    method InsertParams (line 50) | public static StringBuilder InsertParams(this StringBuilder sb, IEnume...
    method GetTypeArray (line 65) | public static StringBuilder GetTypeArray(this StringBuilder sb, IList<...
    method DataParameters (line 93) | public static StringBuilder DataParameters(this StringBuilder sb, IEnu...
    method JobParameters (line 112) | public static StringBuilder JobParameters(this StringBuilder sb, IEnum...
    method JobParametersAssigment (line 129) | public static StringBuilder JobParametersAssigment(this StringBuilder ...
    method CallMethods (line 151) | public static StringBuilder CallMethods(this StringBuilder sb, IEnumer...
    method GetAttributeTypes (line 175) | public static void GetAttributeTypes(AttributeData? data, List<ITypeSy...
    method AppendQueryMethod (line 195) | public static StringBuilder AppendQueryMethod(this StringBuilder sb, I...
    method AppendQueryMethod (line 270) | public static StringBuilder AppendQueryMethod(this StringBuilder sb, r...
    method AppendParallelQueryMethod (line 344) | public static StringBuilder AppendParallelQueryMethod(this StringBuild...
    method AppendBaseSystem (line 430) | public static StringBuilder AppendBaseSystem(this StringBuilder sb, Ke...
    method AppendBaseSystem (line 480) | public static StringBuilder AppendBaseSystem(this StringBuilder sb, re...

FILE: Arch.System.SourceGenerator/SourceGenerator.cs
  class QueryGenerator (line 14) | [Generator]
    method Initialize (line 20) | public void Initialize(IncrementalGeneratorInitializationContext context)
    method AddMethodToClass (line 40) | private static void AddMethodToClass(IMethodSymbol methodSymbol)
    method GetMethodSymbolIfAttributeof (line 56) | private static MethodDeclarationSyntax? GetMethodSymbolIfAttributeof(G...
    method Generate (line 87) | private static void Generate(Compilation compilation, ImmutableArray<M...
    class Comparer (line 130) | class Comparer : IEqualityComparer<MethodDeclarationSyntax>
      method Equals (line 134) | public bool Equals(MethodDeclarationSyntax x, MethodDeclarationSynta...
      method GetHashCode (line 139) | public int GetHashCode(MethodDeclarationSyntax obj)

FILE: Arch.System/Attributes.cs
  class QueryAttribute (line 6) | [global::System.AttributeUsage(global::System.AttributeTargets.Method)]
  class DataAttribute (line 19) | [global::System.AttributeUsage(global::System.AttributeTargets.Parameter)]
  class AllAttribute (line 27) | [global::System.AttributeUsage(global::System.AttributeTargets.Method, A...
    method AllAttribute (line 39) | public AllAttribute(params Type[] componentTypes)
  class AnyAttribute (line 48) | [global::System.AttributeUsage(global::System.AttributeTargets.Method, A...
    method AnyAttribute (line 60) | public AnyAttribute(params Type[] componentTypes)
  class NoneAttribute (line 69) | [global::System.AttributeUsage(global::System.AttributeTargets.Method, A...
    method NoneAttribute (line 82) | public NoneAttribute(params Type[] componentTypes)
  class ExclusiveAttribute (line 91) | [global::System.AttributeUsage(global::System.AttributeTargets.Method, A...
    method ExclusiveAttribute (line 103) | public ExclusiveAttribute(params Type[] componentTypes)

FILE: Arch.System/Systems.cs
  type ISystem (line 20) | public interface ISystem<T> : IDisposable
    method Initialize (line 25) | void Initialize();
    method BeforeUpdate (line 31) | void BeforeUpdate(in T t);
    method Update (line 37) | void Update(in T t);
    method AfterUpdate (line 43) | void AfterUpdate(in T t);
  class BaseSystem (line 51) | public abstract class BaseSystem<W, T> : ISystem<T>
    method BaseSystem (line 58) | protected BaseSystem(W world)
    method Initialize (line 69) | public virtual void Initialize(){}
    method BeforeUpdate (line 72) | public virtual void BeforeUpdate(in T t) { }
    method Update (line 75) | public virtual void Update(in T t){}
    method AfterUpdate (line 78) | public virtual void AfterUpdate(in T t){}
    method Dispose (line 81) | public virtual void Dispose(){}
  class Group (line 89) | public class Group<T> : ISystem<T>, IEnumerable<ISystem<T>>
    method Group (line 111) | public Group(string name, params ISystem<T>[] systems)
    method Group (line 121) | public Group(string name, IEnumerable<ISystem<T>> systems)
    method Add (line 144) | public Group<T> Add(params ISystem<T>[] systems)
    method Add (line 160) | public Group<T> Add<G>() where G : ISystem<T>, new()
    method Add (line 170) | public Group<T> Add(ISystem<T> system)
    method Get (line 186) | public G Get<G>() where G : ISystem<T>
    method Find (line 211) | public IEnumerable<G> Find<G>() where G : ISystem<T>
    method Initialize (line 235) | public void Initialize()
    method BeforeUpdate (line 248) | public void BeforeUpdate(in T t)
    method Update (line 273) | public void Update(in T t)
    method AfterUpdate (line 298) | public void AfterUpdate(in T t)
    method Dispose (line 322) | public void Dispose()
    method ToString (line 334) | public override string ToString()
    method GetEnumerator (line 353) | public IEnumerator<ISystem<T>> GetEnumerator()
    method GetEnumerator (line 362) | IEnumerator IEnumerable.GetEnumerator()
    type SystemEntry (line 370) | private readonly struct SystemEntry : IDisposable
      method Dispose (line 380) | public void Dispose()
      method SystemEntry (line 385) | public SystemEntry(ISystem<T> system

FILE: Arch.System/Templates/GenericAttributes.cs
  class AllAttribute (line 6) | public class AllAttribute<T0> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 13) | public class AllAttribute<T0, T1> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 20) | public class AllAttribute<T0, T1, T2> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 27) | public class AllAttribute<T0, T1, T2, T3> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 34) | public class AllAttribute<T0, T1, T2, T3, T4> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 41) | public class AllAttribute<T0, T1, T2, T3, T4, T5> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 48) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 55) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7> : AllAttribute
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 62) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8> : AllAttri...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 69) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> : AllA...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 76) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> :...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 83) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 90) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 97) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 104) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 111) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 118) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 125) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 132) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 139) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 146) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 153) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 160) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 167) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AllAttribute (line 174) | public class AllAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AllAttribute (line 9) | public AllAttribute() : base(typeof(T0)) { }
    method AllAttribute (line 16) | public AllAttribute() : base(typeof(T0), typeof(T1)) { }
    method AllAttribute (line 23) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AllAttribute (line 30) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 37) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 44) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 51) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 58) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 65) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 72) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 79) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 86) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 93) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 100) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 107) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 114) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 121) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 128) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 135) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 142) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 149) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 156) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 163) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 170) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AllAttribute (line 177) | public AllAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 181) | public class AnyAttribute<T0> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 188) | public class AnyAttribute<T0, T1> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 195) | public class AnyAttribute<T0, T1, T2> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 202) | public class AnyAttribute<T0, T1, T2, T3> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 209) | public class AnyAttribute<T0, T1, T2, T3, T4> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 216) | public class AnyAttribute<T0, T1, T2, T3, T4, T5> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 223) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 230) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7> : AnyAttribute
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 237) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8> : AnyAttri...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 244) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> : AnyA...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 251) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> :...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 258) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 265) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 272) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 279) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 286) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 293) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 300) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 307) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 314) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 321) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 328) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 240) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 247) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 254) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 261) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 268) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 275) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 282) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 289) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 296) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 303) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 310) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 317) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 324) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 331) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 338) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 345) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 352) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
  class AnyAttribute (line 335) | public class AnyAttribute<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T...
    method AnyAttribute (line 184) | public AnyAttribute() : base(typeof(T0)) { }
    method AnyAttribute (line 191) | public AnyAttribute() : base(typeof(T0), typeof(T1)) { }
    method AnyAttribute (line 198) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2)) { }
    method AnyAttribute (line 205) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 212) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 219) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 226) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T2), typeo...
    method AnyAttribute (line 233) | public AnyAttribute() : base(typeof(T0), typeof(T1), typeof(T
Condensed preview — 114 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (626K chars).
[
  {
    "path": ".gitattributes",
    "chars": 15,
    "preview": "* text eol=crlf"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 1092,
    "preview": "name: CI\r\non:\r\n  push:\r\n    branches: [master]\r\n  pull_request:\r\n    branches: [master]\r\n\r\njobs:\r\n  build:\r\n    name: Te"
  },
  {
    "path": ".gitignore",
    "chars": 773,
    "preview": "dist\r\nbin/\r\nobj/\r\n/packages/\r\nriderModule.iml\r\n/_ReSharper.Caches/\r\n\r\n# Common IntelliJ Platform excludes\r\n\r\n# User spec"
  },
  {
    "path": "Arch.AOT.SourceGenerator/Arch.AOT.SourceGenerator.csproj",
    "chars": 1962,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFramework>netstandard2.0</TargetFramework>\r\n   "
  },
  {
    "path": "Arch.AOT.SourceGenerator/ComponentType.cs",
    "chars": 1010,
    "preview": "namespace Arch.AOT.SourceGenerator;\r\n\r\n/// <summary>\r\n///     The struct <see cref=\"ComponentType\"/>\r\n///\t\trepresents a"
  },
  {
    "path": "Arch.AOT.SourceGenerator/Extensions/StringBuilderExtensions.cs",
    "chars": 2060,
    "preview": "using System.Text;\r\n\r\nnamespace Arch.AOT.SourceGenerator.Extensions;\r\n\r\n/// <summary>\r\n///\t\tThe <see cref=\"StringBuilde"
  },
  {
    "path": "Arch.AOT.SourceGenerator/SourceGenerator.cs",
    "chars": 5143,
    "preview": "using System.Collections.Immutable;\r\nusing System.Text;\r\nusing Arch.AOT.SourceGenerator.Extensions;\r\nusing Microsoft.Co"
  },
  {
    "path": "Arch.EventBus/Arch.EventBus.csproj",
    "chars": 1936,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <ImplicitUsings>enable</ImplicitUsings>\r\n        <Null"
  },
  {
    "path": "Arch.EventBus/EventBus.cs",
    "chars": 8625,
    "preview": "using System.Text;\r\nusing Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.Bus;\r\n\r\n/// <summary>\r\n///     The EventBus model\r\n"
  },
  {
    "path": "Arch.EventBus/Hooks.cs",
    "chars": 6152,
    "preview": "using System.Text;\r\nusing Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.Bus;\r\n\r\n/// <summary>\r\n/// Hooks.\r\n/// </summary>\r\n"
  },
  {
    "path": "Arch.EventBus/MethodSymbolExtensions.cs",
    "chars": 2006,
    "preview": "using Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.Bus;\r\n\r\n/// <summary>\r\n/// Method symbol extensions.\r\n/// </summary>\r\np"
  },
  {
    "path": "Arch.EventBus/SourceGenerator.cs",
    "chars": 10193,
    "preview": "using System.Collections.Immutable;\r\nusing System.Diagnostics;\r\nusing System.Text;\r\nusing Microsoft.CodeAnalysis;\r\nusin"
  },
  {
    "path": "Arch.Extended.Sample/Arch.Extended.Sample.csproj",
    "chars": 1473,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <OutputType>Exe</OutputType>\r\n        <TargetFramework"
  },
  {
    "path": "Arch.Extended.Sample/Components.cs",
    "chars": 2726,
    "preview": "using System.Runtime.Serialization;\r\nusing Arch.AOT.SourceGenerator;\r\nusing Arch.Core;\r\nusing MessagePack;\r\nusing Micro"
  },
  {
    "path": "Arch.Extended.Sample/Extensions.cs",
    "chars": 2550,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Microsoft.Xna.Framework;\r\nusing Microsoft.Xna.Framework.Graphics;\r\n\r\nname"
  },
  {
    "path": "Arch.Extended.Sample/Game.cs",
    "chars": 8168,
    "preview": "using System.IO.Compression;\r\nusing System.Runtime.Serialization;\r\nusing System.Text;\r\nusing System.Text.Json.Serializa"
  },
  {
    "path": "Arch.Extended.Sample/Program.cs",
    "chars": 697,
    "preview": "// See https://aka.ms/new-console-template for more information\r\n\r\nusing Microsoft.Xna.Framework;\r\nusing Game = Arch.Ex"
  },
  {
    "path": "Arch.Extended.Sample/Serializer.cs",
    "chars": 2862,
    "preview": "using MessagePack;\r\nusing MessagePack.Formatters;\r\nusing Microsoft.Xna.Framework;\r\nusing Microsoft.Xna.Framework.Graphi"
  },
  {
    "path": "Arch.Extended.Sample/Systems.cs",
    "chars": 9750,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Arch.Bus;\r\nusing Arch.Core;\r\nusing Arch.Core.Extensions;\r\nusing Arch.LowL"
  },
  {
    "path": "Arch.Extended.sln",
    "chars": 7266,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 17\r\nVisualStudioVersion = 17.8.3"
  },
  {
    "path": "Arch.Extended.sln.DotSettings",
    "chars": 575,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "Arch.LowLevel/Arch.LowLevel.csproj",
    "chars": 2054,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFrameworks>net7.0; net6.0; netstandard2.1</Targ"
  },
  {
    "path": "Arch.LowLevel/Array.cs",
    "chars": 9193,
    "preview": "using System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing System."
  },
  {
    "path": "Arch.LowLevel/Enumerators.cs",
    "chars": 6874,
    "preview": "using System.Collections;\r\nusing System.Runtime.CompilerServices;\r\n\r\nnamespace Arch.LowLevel;\r\n\r\n/// <summary>\r\n///    "
  },
  {
    "path": "Arch.LowLevel/Jagged/JaggedArray.cs",
    "chars": 13570,
    "preview": "using System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing Communi"
  },
  {
    "path": "Arch.LowLevel/Jagged/SparseJaggedArray.cs",
    "chars": 15226,
    "preview": "using CommunityToolkit.HighPerformance;\r\n\r\nnamespace Arch.LowLevel.Jagged;\r\n\r\nusing System.Diagnostics;\r\nusing System.R"
  },
  {
    "path": "Arch.LowLevel/Jagged/UnsafeJaggedArray.cs",
    "chars": 13429,
    "preview": "using System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\n\r\nnamespace Arch.LowLevel.Jagged;\r\n\r\n/// <summary>\r\n"
  },
  {
    "path": "Arch.LowLevel/Jagged/UnsafeSparseJaggedArray.cs",
    "chars": 16122,
    "preview": "using System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\n\r\nnamespace Arch.LowLevel.Jagged;\r\n\r\n\r\n/// <summary>"
  },
  {
    "path": "Arch.LowLevel/Resources.cs",
    "chars": 5188,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Arch.LowLevel.Jagged;\r\n\r\n[assembly: InternalsVisibleTo(\"Arch.LowLevel.Tes"
  },
  {
    "path": "Arch.LowLevel/UnsafeArray.cs",
    "chars": 10004,
    "preview": "using System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing System."
  },
  {
    "path": "Arch.LowLevel/UnsafeList.cs",
    "chars": 14221,
    "preview": "using System.Collections;\r\nusing System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Text;\r\n\r\nnam"
  },
  {
    "path": "Arch.LowLevel/UnsafeQueue.cs",
    "chars": 8167,
    "preview": "using System.Collections;\r\nusing System.Diagnostics;\r\nusing System.Diagnostics.Contracts;\r\nusing System.Runtime.Compile"
  },
  {
    "path": "Arch.LowLevel/UnsafeStack.cs",
    "chars": 8365,
    "preview": "using System.Collections;\r\nusing System.Diagnostics;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Text;\r\n\r\nnam"
  },
  {
    "path": "Arch.LowLevel.Tests/Arch.LowLevel.Tests.csproj",
    "chars": 787,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFramework>net7.0</TargetFramework>\r\n        <Im"
  },
  {
    "path": "Arch.LowLevel.Tests/ArrayTest.cs",
    "chars": 2867,
    "preview": "using System.ComponentModel.DataAnnotations;\r\n\r\nnamespace Arch.LowLevel.Tests;\r\nusing static Assert;\r\n\r\n/// <summary>\r\n"
  },
  {
    "path": "Arch.LowLevel.Tests/Jagged/JaggedArrayTest.cs",
    "chars": 4849,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Arch.LowLevel.Jagged;\r\n\r\nnamespace Arch.LowLevel.Tests.Jagged;\r\nusing sta"
  },
  {
    "path": "Arch.LowLevel.Tests/ResourcesTest.cs",
    "chars": 4529,
    "preview": "using static NUnit.Framework.Assert;\r\n\r\nnamespace Arch.LowLevel.Tests;\r\n\r\n/// <summary>\r\n///     Checks <see cref=\"Resou"
  },
  {
    "path": "Arch.LowLevel.Tests/UnsafeArrayTest.cs",
    "chars": 3860,
    "preview": "using System.ComponentModel.DataAnnotations;\r\n\r\nnamespace Arch.LowLevel.Tests;\r\nusing static Assert;\r\n\r\n/// <summary>\r\n"
  },
  {
    "path": "Arch.LowLevel.Tests/UnsafeListTest.cs",
    "chars": 12607,
    "preview": "using System.Collections;\r\nusing static NUnit.Framework.Assert;\r\nnamespace Arch.LowLevel.Tests;\r\n\r\n/// <summary>\r\n///  "
  },
  {
    "path": "Arch.LowLevel.Tests/UnsafeQueueTest.cs",
    "chars": 4292,
    "preview": "namespace Arch.LowLevel.Tests;\r\nusing static NUnit.Framework.Assert;\r\n\r\n/// <summary>\r\n///     Checks <see cref=\"Unsafe"
  },
  {
    "path": "Arch.LowLevel.Tests/UnsafeStackTest.cs",
    "chars": 8083,
    "preview": "using System.Collections;\r\n\r\nnamespace Arch.LowLevel.Tests;\r\nusing static NUnit.Framework.Assert;\r\n\r\n/// <summary>\r\n///"
  },
  {
    "path": "Arch.LowLevel.Tests/Usings.cs",
    "chars": 29,
    "preview": "global using NUnit.Framework;"
  },
  {
    "path": "Arch.Persistence/Arch.Persistence.csproj",
    "chars": 1902,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <ImplicitUsings>enable</ImplicitUsings>\r\n        <Null"
  },
  {
    "path": "Arch.Persistence/Binary.cs",
    "chars": 18114,
    "preview": "using Arch.Core;\r\nusing Arch.Core.Extensions;\r\nusing Arch.Core.Extensions.Dangerous;\r\nusing Arch.Core.Utils;\r\nusing Arc"
  },
  {
    "path": "Arch.Persistence/Json.cs",
    "chars": 28737,
    "preview": "using Arch.Core;\r\nusing Arch.Core.Extensions;\r\nusing Arch.Core.Extensions.Dangerous;\r\nusing Arch.Core.Utils;\r\nusing Arc"
  },
  {
    "path": "Arch.Persistence/Serializer.cs",
    "chars": 17391,
    "preview": "using Arch.Core;\r\nusing MessagePack;\r\nusing MessagePack.Formatters;\r\nusing System.Buffers;\r\nusing Utf8Json;\r\nusing Utf8"
  },
  {
    "path": "Arch.Persistence/StreamBufferWriter.cs",
    "chars": 4613,
    "preview": "using System.Buffers;\r\n\r\nnamespace Arch.Persistence;\r\n\r\n/// <summary>\r\n///     The <see cref=\"StreamBufferWriter\"/> cla"
  },
  {
    "path": "Arch.Persistence.Tests/Arch.Persistence.Tests.csproj",
    "chars": 849,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFramework>net7.0</TargetFramework>\r\n        <Im"
  },
  {
    "path": "Arch.Persistence.Tests/PersistenceTest.cs",
    "chars": 6041,
    "preview": "using Arch.Core;\r\nusing Arch.Core.Extensions;\r\nusing CommunityToolkit.HighPerformance;\r\nusing static NUnit.Framework.Ass"
  },
  {
    "path": "Arch.Persistence.Tests/Usings.cs",
    "chars": 29,
    "preview": "global using NUnit.Framework;"
  },
  {
    "path": "Arch.Relationships/Arch.Relationships.csproj",
    "chars": 1638,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <ImplicitUsings>enable</ImplicitUsings>\r\n        <Null"
  },
  {
    "path": "Arch.Relationships/EntityRelationshipExtensions.cs",
    "chars": 5796,
    "preview": "using System.Diagnostics.Contracts;\r\nusing System.Runtime.CompilerServices;\r\nusing Arch.Core;\r\n\r\nnamespace Arch.Relatio"
  },
  {
    "path": "Arch.Relationships/Enumerators.cs",
    "chars": 1717,
    "preview": "using System.Collections;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing Arch.Cor"
  },
  {
    "path": "Arch.Relationships/InRelationship.cs",
    "chars": 1481,
    "preview": "using Arch.Core;\r\nusing Arch.Core.Utils;\r\n\r\nnamespace Arch.Relationships;\r\n\r\n\r\n/// <summary>\r\n///     The struct <see c"
  },
  {
    "path": "Arch.Relationships/Relationship.cs",
    "chars": 5895,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Arch.Core;\r\n\r\nnamespace Arch.Relationships;\r\n\r\n/// <summary>\r\n///     The"
  },
  {
    "path": "Arch.Relationships/WorldRelationshipExtensions.cs",
    "chars": 12412,
    "preview": "using System.Diagnostics.Contracts;\r\nusing System.Runtime.CompilerServices;\r\nusing Arch.Core;\r\nusing Arch.Core.Extensio"
  },
  {
    "path": "Arch.Relationships.Tests/Arch.Relationships.Tests.csproj",
    "chars": 1002,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFramework>net7.0</TargetFramework>\r\n        <Im"
  },
  {
    "path": "Arch.Relationships.Tests/RelationshipTest.cs",
    "chars": 7958,
    "preview": "using System.Runtime.CompilerServices;\r\nusing Arch.Core;\r\nusing static NUnit.Framework.Assert;\r\nusing Throws = NUnit.Fra"
  },
  {
    "path": "Arch.Relationships.Tests/Usings.cs",
    "chars": 29,
    "preview": "global using NUnit.Framework;"
  },
  {
    "path": "Arch.System/Arch.System.csproj",
    "chars": 2170,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFrameworks>net7.0; net6.0; netstandard2.1</Tar"
  },
  {
    "path": "Arch.System/Attributes.cs",
    "chars": 3598,
    "preview": "namespace Arch.System;\r\n\r\n/// <summary>\r\n///     Marks a method to generate a high performance query for it. \r\n/// </su"
  },
  {
    "path": "Arch.System/Systems.cs",
    "chars": 11600,
    "preview": "//#if !NET5_0_OR_GREATER\r\n    #define ARCH_METRICS_DISABLED\r\n//#endif\r\n\r\nusing System.Collections;\r\nusing System.Diagno"
  },
  {
    "path": "Arch.System/Templates/GenericAttributes.cs",
    "chars": 39094,
    "preview": "namespace Arch.System;\r\n\r\n#if NET7_0_OR_GREATER\r\n\r\n/// <inheritdoc/>\r\npublic class AllAttribute<T0> : AllAttribute\r\n{\r\n "
  },
  {
    "path": "Arch.System/Templates/GenericAttributes.tt",
    "chars": 765,
    "preview": "namespace Arch.System;\r\n<#@ template language=\"C#\" #>\r\n<#@ output extension=\".cs\" #>\r\n<#@ import namespace=\"System.Text\""
  },
  {
    "path": "Arch.System/Templates/Helpers.ttinclude",
    "chars": 1227,
    "preview": "<#@ import namespace=\"System.Text\" #>\r\n<#@ import namespace=\"System.Collections.Generic\" #>\r\n<#+\r\n    public int Amount"
  },
  {
    "path": "Arch.System.SourceGenerator/Arch.System.SourceGenerator.csproj",
    "chars": 1975,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n    <PropertyGroup>\r\n        <TargetFramework>netstandard2.0</TargetFramework>\r\n   "
  },
  {
    "path": "Arch.System.SourceGenerator/Extensions/CommonUtils.cs",
    "chars": 2054,
    "preview": "using System.Text;\r\nusing Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.System.SourceGenerator;\r\n\r\n/// <summary>\r\n/// Commo"
  },
  {
    "path": "Arch.System.SourceGenerator/Extensions/MethodSymbolExtensions.cs",
    "chars": 924,
    "preview": "using Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.System.SourceGenerator;\r\n\r\n/// <summary>\r\n/// Extensions for <see cref="
  },
  {
    "path": "Arch.System.SourceGenerator/Model.cs",
    "chars": 3742,
    "preview": "using Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.System.SourceGenerator;\r\n\r\n/// <summary>\r\n/// Represents the BaseSystem"
  },
  {
    "path": "Arch.System.SourceGenerator/QueryUtils.cs",
    "chars": 25338,
    "preview": "using System.Text;\r\nusing Microsoft.CodeAnalysis;\r\n\r\nnamespace Arch.System.SourceGenerator;\r\n\r\n/// <summary>\r\n/// Vario"
  },
  {
    "path": "Arch.System.SourceGenerator/SourceGenerator.cs",
    "chars": 6621,
    "preview": "using System.Collections.Immutable;\r\nusing System.Diagnostics;\r\nusing System.Text;\r\nusing Microsoft.CodeAnalysis;\r\nusin"
  },
  {
    "path": "Arch.System.SourceGenerator.SnapshotTests/.editorconfig",
    "chars": 16675,
    "preview": "root = true\r\n\r\n# All files\r\n[*]\r\n\r\n# Indentation and spacing\r\nend_of_line              = crlf\r\nindent_style             "
  },
  {
    "path": "Arch.System.SourceGenerator.SnapshotTests/Arch.System.SourceGenerator.SnapshotTests.csproj",
    "chars": 1358,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n    <PropertyGroup>\r\n        <TargetFramework>net8.0</TargetFramework>\r\n        <Imp"
  },
  {
    "path": "Arch.System.SourceGenerator.SnapshotTests/SnapshotTest.cs",
    "chars": 9194,
    "preview": "using System.Reflection;\r\nusing System.Runtime.ExceptionServices;\r\nusing Arch.Core;\r\nusing Microsoft.CodeAnalysis;\r\nusi"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/.editorconfig",
    "chars": 16904,
    "preview": "root = true\r\n\r\n# All files\r\n[*]\r\n\r\n# Indentation and spacing\r\nend_of_line              = crlf\r\nindent_style             "
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/.gitignore",
    "chars": 12,
    "preview": "Generated/\r\n"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/Arch.System.SourceGenerator.Tests.csproj",
    "chars": 2138,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n    <PropertyGroup>\r\n        <TargetFramework>net8.0</TargetFramework>\r\n        <Nul"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/AttributeQuerySystem.cs",
    "chars": 5661,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.Sou"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementA(Entity).g.cs",
    "chars": 1478,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAAndB(Entity).g.cs",
    "chars": 1583,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAAndBExclusive(Entity).g.cs",
    "chars": 1673,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementANotB(Entity).g.cs",
    "chars": 1582,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAOrB(Entity).g.cs",
    "chars": 1573,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/AttributeQueryCompilation/ExpectedGeneration/AttributeQuerySystem.IncrementAOrBNotC(Entity).g.cs",
    "chars": 1677,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/BasicCompilation/BasicSystem.cs",
    "chars": 1083,
    "preview": "using Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.SourceGenerator.Tests;\r\n\r\n/// <summary>\r\n/// Tests ba"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/BasicCompilation/ExpectedGeneration/BasicSystem.Basic(IntComponentA).g.cs",
    "chars": 1484,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/BasicCompilation/ExpectedGeneration/BasicSystem.BasicStatic(IntComponentA).g.cs",
    "chars": 1572,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/DataParamSystem.cs",
    "chars": 5297,
    "preview": "using System.Diagnostics.CodeAnalysis;\r\nusing Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.SourceGenerat"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.AssignEntityDataParamWithEntityRight(in Entity, in IntComponentA, ref Entity).g.cs",
    "chars": 2047,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountANoParams(ref int).g.cs",
    "chars": 1403,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountATwiceWithParams(ref int, in IntComponentA, ref int, in IntComponentB).g.cs",
    "chars": 2040,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityAndParamLeft(ref int, in IntComponentA, in Entity).g.cs",
    "chars": 1946,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityAndParamRight(in Entity, in IntComponentA, ref int).g.cs",
    "chars": 1956,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityLeft(ref int, in Entity).g.cs",
    "chars": 1632,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithEntityRight(in Entity, ref int).g.cs",
    "chars": 1642,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsLeft(ref int, in IntComponentA).g.cs",
    "chars": 1697,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsMiddle(in IntComponentA, ref int, in IntComponentB).g.cs",
    "chars": 2018,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/DataParamCompilation/ExpectedGeneration/DataParamSystem.CountAWithParamsRight(in IntComponentA, ref int).g.cs",
    "chars": 1707,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.AutoRunA().g.cs",
    "chars": 1295,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.AutoRunB().g.cs",
    "chars": 1295,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/ExpectedGeneration/GeneratedUpdateSystem.g.cs",
    "chars": 403,
    "preview": "using System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing System;\r\n\r\nnamespace Arch.System.S"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/GeneratedUpdateCompilation/GeneratedUpdateSystem.cs",
    "chars": 882,
    "preview": "using Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.SourceGenerator.Tests;\r\n\r\n/// <summary>\r\n/// Tests th"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementA(ref IntComponentA).g.cs",
    "chars": 1571,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementAAndB(ref IntComponentA, ref IntComponentB).g.cs",
    "chars": 1911,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementANotC(ref IntComponentA).g.cs",
    "chars": 1675,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ExpectedGeneration/ParamQuerySystem.IncrementOnlyAWithB(ref IntComponentA, in IntComponentB).g.cs",
    "chars": 1960,
    "preview": "#nullable enable\r\nusing System;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\nusing A"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/ParamQueryCompilation/ParamQuerySystem.cs",
    "chars": 3475,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.Sou"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/Shared/BaseTestSystem.cs",
    "chars": 887,
    "preview": "using Arch.Core;\r\n\r\nnamespace Arch.System.SourceGenerator.Tests;\r\n\r\n/// <summary>\r\n/// Provides a base class for test s"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/Shared/IntComponents.cs",
    "chars": 853,
    "preview": "namespace Arch.System.SourceGenerator.Tests;\r\n\r\n#pragma warning disable CS0649 // Allow fields to be unassigned for tes"
  },
  {
    "path": "Arch.System.SourceGenerator.Tests/SystemsTest.cs",
    "chars": 1829,
    "preview": "using System;\r\nusing Arch.Core;\r\nusing NUnit.Framework;\r\n\r\nnamespace Arch.System.SourceGenerator.Tests;\r\n\r\n/// <summary"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 349,
    "preview": "<Project>\r\n  <Target Name=\"Unity\"\r\n          DependsOnTargets=\"Publish\"\r\n          Condition=\"'$(UnityPublish.Contains(t"
  },
  {
    "path": "LICENSE.MD",
    "chars": 11558,
    "preview": "                                 Apache License\r\n                           Version 2.0, January 2004\r\n                 "
  },
  {
    "path": "README.md",
    "chars": 4834,
    "preview": "# Arch.Extended\r\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg?style=for-the-badge)](https://"
  },
  {
    "path": "scripts/UnityPublish.sh",
    "chars": 496,
    "preview": "#!/bin/bash\r\n\r\n# Publishes Unity release to dist/Assemblies using only netstandard2.0 and netstandard2.1\r\n##############"
  }
]

About this extraction

This page contains the full source code of the genaray/Arch.Extended GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 114 files (566.8 KB), approximately 136.8k tokens, and a symbol index with 922 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!