Fix Bug

Correct the bug that involves undefined behavior caused by the order of global variables.
In C++ across different compilation units, the order of global variables initialization is undefined.
Memory Manager Features Divide

SimpleHeap has the bug that the allocated objects are invalid if SimpleHeap is over a threshold size.
Divide the features of SimpleHeap, and create a new class that can allocate memory very quickly, but its usage is so complex.
Extend Memory Management Feature

For SimpleHeap, add the feature to release designated memory block that is allocated before.
To realize the above feature, extend functions of RapidVector.
Divide Memory Management Functions, Add a Utility Class

About the behavior of HeapProvider, I understood that an using memory management function other than SimpleHeap<T, DefaultHeap> made no sense, as the result of value the ability to the retrieval performance with any keys. So, I added the new class SimpleHeapProvider that was value the ability to the generative performance.
Divide Test Cases, Reorganize Header Files

Divide test cases for each class and reorganize the included header files.
Rename Header Files

Rename the header files that are used as only itself.
Prototyping for IL Generator

Create experimentally the class to generate IL, ILGenerator into BaseTypeMetadataProtoB8DF5A21Test.cpp.

Also about ExternalApiStrategies.h that is defined a framework to exchange the APIs that are dependent on an external environment, I organize it.
Because I think of that I can make it more simple.
Replacing External API Strategies to Newer

Replace external API strategies - ParentApiOrDefault and ChildApiOrDefault, to newer, ExternalApiOrDefault.
Change Metadata Evaluation Strategy from Delayed to Strict

I want to resolve them the information accessed from the generative side API in the very end, to make more clear the assigning responsibility each class has, to improve performance emit IL, and so on.
So, change the metadata evaluation strategy from delayed evaluation to strict evaluation.
Fix Build Failure

Fix the build error caused by removing some typedef members.
Fix Build Failure

Fix the build error caused by a wrong replacement(MetaData -> Metadata).
Add the build option /Zm, because PCH heap is not enough to perform.
Organize Prototyping Result

Divide the file BaseTypeMetadataProtoB8DF5A21Test.cpp to new features as follows:
+ CComObjectSlim.hpp
  This class extends ATL::CComObjectNoLock, and implements a method CreateInstance such as ATL::CComObject.
+ IMetaDataImport2Impl.hpp
  This class implements IMetaDataImport2 for a default behavior.
Organize Prototyping Result, But Correcting Runtime Fault

Divide the file BaseTypeMetadataProtoB8DF5A21Test.cpp to new features as follows:
+ Instruction.h/Instruction.cpp
  This class represents a instruction in CIL.

However, if you run the test cases now, you will receive segmentation fault from the program.
This cause is that the link wasn't performed well because there are same symbol templates in same project(To my surprise, the build succeed!).
So, I'm correcting it, and the test cases can't run now.
Organize Files By Design Fixed

The whole design was fixed, so I organized the following files and renamed them.