public override ITypeResolveContext CreateResolveContext(ITypeResolveContext parentContext)
 {
     return(new CppTypeResolveContext(parentContext.CurrentAssembly, usingScope.Resolve(parentContext.Compilation), parentContext.CurrentTypeDefinition));
 }
        /// <summary>
        /// Resolves the namespace represented by this using scope.
        /// </summary>
        public ResolvedUsingScope Resolve(ICompilation compilation)
        {
            CacheManager       cache    = compilation.CacheManager;
            ResolvedUsingScope resolved = (ResolvedUsingScope)cache.GetShared(this);

            if (resolved == null)
            {
                var csContext = new CppTypeResolveContext(compilation.MainAssembly, parent != null ? parent.Resolve(compilation) : null);
                resolved = (ResolvedUsingScope)cache.GetOrAddShared(this, new ResolvedUsingScope(csContext, this));
            }
            return(resolved);
        }