Compiler passes: - loading types from referenced assemblies (external/ directory) - lexical analysis and parsing (parsing/ directory) - build hierarchy of types existing in program (hierarchy/ directory) - bind types in type hierarchy and add all class members to classes (hierarchy/TypeBuilder.n) - perform typing of method's bodies (typing/ directory) - transform translation of typed tree to intermediate representation as compiled tree, which holds references directly to System.Reflection.Emit objects (generation/ directory) - output IL using System.Reflection.Emit.AssemblyBuilder from compiled tree (generation/ILGenerator.n)