Fixed some incorrect behavior with nested types in the CheckAmbiguousOverloads pass by fixing GetFunctionOverloads to be dynamically dispatched instead of using some weird manual type checking.
Made the check for ignored declarations more robust.
Moved ignored declaration and type checking code from ResolveIncompleteDeclsPass to its own pass.
Moved the user passes to run before some built-in classes so that declarations added by the passes can still be verified and processed.
Re-use the generator CSharpTypePrinter instance in CSharpTextTemplate.
Fixed the CheckOperatorsOverloads pass to be more robust when handling declarations.
When creating new fake methods from functions also initialize their mangled names.
Fixed the IgnoreHeadersWithName helper to be more robust by checking for patterns against the file path and include paths.
Check for dependent contexts when parsing functions.
Call HandlePreprocessedEntities to handle preprocessor definitions when walking through records.
Check for explicitly ignored declarations when checking for ignored types.
Use GenerateClassFields to generate internal class fields instead of duplicating the logic. Fixes struct inheritance handling.
Remove one-line method GenerateStructMarshaling and inline its content where it was called.
Simplify GetFunctionNativeIdentifier.
Renamed GeneratedOperator to GenerateOperator.
Removed a lot of complexity when wrapping of fields to use unsafe pointers and actually use the existing marshaling logic instead of replicating it with weird manual pointer arithmetic.
Remove unused method GenerateValueTypeConstructorCall.
Added better wrapping for out parameters.
Changed GetOperatorIdentifier to be a static method.
Fixed marshaling to work with the new unsafe pointers which simplified the code a lot.