/// <summary>
        /// Adds the module reference.
        /// </summary>
        /// <param name="assembly">The assembly.</param>
        /// <returns></returns>
        IModuleTypeSystem ITypeSystem.ResolveModuleReference(string assembly)
        {
            // Search for reference first
            foreach (IModuleTypeSystem module in modules)
                if (module.MetadataModule != null)
                    if (module.MetadataModule.Name == assembly)
                        return module; // already referenced

            IMetadataModule metaModule = assemblyLoader.LoadModule(assembly);

            IModuleTypeSystem moduleTypeSystem = new DefaultModuleTypeSystem(this, metaModule);

            modules.Add(moduleTypeSystem);

            return moduleTypeSystem;
        }
        /// <summary>
        /// Loads the modules.
        /// </summary>
        /// <param name="files">The files.</param>
        void ITypeSystem.LoadModules(IEnumerable<string> files)
        {
            foreach (string file in files)
            {
                IMetadataModule metaModule = this.assemblyLoader.LoadModule(file);

                IModuleTypeSystem moduleTypeSystem = new DefaultModuleTypeSystem(this, metaModule);

                modules.Add(moduleTypeSystem);
                compileModules.Add(moduleTypeSystem);
            }
        }