/// <summary>
		/// Add a class which is declared public in this external module of
		/// THIS assembly.  This class will be exported from this assembly.
		/// The ilasm syntax for this is .extern class
		/// </summary>
		/// <param name="attrSet">attributes of the class to be exported</param>
		/// <param name="nsName">name space name</param>
		/// <param name="name">external class name</param>
		/// <param name="declFile">the file where the class is declared</param>
		/// <param name="isValueClass">is this class a value type?</param>
		/// <returns>a descriptor for this external class</returns>
		public ExternClassRef AddExternClass(TypeAttr attrSet, string nsName, 
				string name, FileRef declFile, 
				bool isValueClass) {
			ExternClassRef cRef = new ExternClassRef(attrSet,nsName,name,declFile,metaData);
			metaData.AddToTable(MDTable.TypeRef,cRef);
			cRef.SetParent(this);
			if (isValueClass) cRef.MakeValueClass(ValueClass.ValueType);
			return cRef;
		}
		public ClassRef AddNestedClass(TypeAttr attrs, string name) 
		{
			ExternClassRef nestedClass = new ExternClassRef(name,metaData);
			externClass = new ExternClass(attrs,0,nameIx,this.externClass);
			metaData.AddToTable(MDTable.ExportedType,externClass);
			return nestedClass;
		}