bool CLSComplianceChecker::ContainerIsPartOfRootNamespace(BCSYM_Container * Container)
{
    if (!Container->IsNamespace())
    {
        return false;
    }

    SourceFile *ContainingSourceFile = Container->GetSourceFile();

    VSASSERT( ContainingSourceFile,
                "Non source container unexpected!!!");

    // RootNamespace can be NULL for non-existent files specified in project files
    //
    BCSYM_Namespace *RootNamespace =
        ContainingSourceFile->GetRootNamespace() ?
            ContainingSourceFile->GetRootNamespace() :
            ContainingSourceFile->GetUnnamedNamespace();

    VSASSERT( RootNamespace,
                "NULL rootnamespace unexpected!!!");

    for(BCSYM_Container *NextContaineraboveRootNamespace = RootNamespace;
        NextContaineraboveRootNamespace;
        NextContaineraboveRootNamespace = NextContaineraboveRootNamespace->GetContainer())
    {
        if (NextContaineraboveRootNamespace == Container)
        {
            return true;
        }

        VSASSERT( !NextContaineraboveRootNamespace->IsSameContainer(Container),
                    "How can there be multiple instances per file for namespaces above the rootnamespace ?");
    }

    return false;
}