public override void Visit(INamespaceTypeReference namespaceTypeReference) { if (!this.typeReferenceNeedsToken && namespaceTypeReference.TypeCode(Context) != PrimitiveTypeCode.NotPrimitive) { return; } RecordTypeReference(namespaceTypeReference); var unit = namespaceTypeReference.GetUnit(Context); var assemblyReference = unit as IAssemblyReference; if (assemblyReference != null) { this.Visit(assemblyReference); } else { var moduleReference = unit as IModuleReference; if (moduleReference != null) { // If this is a module from a referenced multi-module assembly, // the assembly should be used as the resolution scope. assemblyReference = moduleReference.GetContainingAssembly(Context); if (assemblyReference != null && assemblyReference != this.module.AsAssembly) { this.Visit(assemblyReference); } else { this.Visit(moduleReference); } } } }