Processing order:

Scan
- Tokens are scanned and created.

Parse
- Tokens are parsed and the parse tree is created.

CreateDefinition
- Every class or member's builder is created. 
- Properties that doesn't depend on any resolution to happen is also set (member visibility for instance).

CreateImplicitInstanceConstructors
- We know for sure if we need implicit instance ctors or not
- We don't know if we need an implicit shared cctor so we postpone that to later

CreateDelegateMembers
CreateWithEventsMembers
CreateRegularEventsMembers

Resolve imports
Resolve command line files
CreateImplicitTypes
ResolveBaseTypes
ResolveTypeReferences
- Type of constants
CreateMyGroupMembers
CreateImplicitMembers
ResolveMembers
- All the types and members are resolved, but not any run-time code (initializers, method bodies).
DefineConstants
- This needs to come after ResolveMembers, otherwise member access expressions can't be constant
CreateImplicitSharedConstructors
  - We need to know if there are date/decimal constants, which we know after ResolveTypeReferences has been executed
  - This can be done very late in the process, since the shared cctor isn't needed anywhere.
DefineSecurityDeclarations
ResolveCode
- All the run-time code is resolved (initializers, method bodies).
- Past this point there should be no errors.

DefineTypeHierarchy
Emit
