('name', 'top_alias_of_alias')
('alias_of', gcc.NamespaceDecl('sub'))
('declarations', RuntimeError('gcc.NamespaceDecl.declarations is not valid for an alias',))
('namespaces', RuntimeError('gcc.NamespaceDecl.namespaces is not valid for an alias',))
('unalias', gcc.NamespaceDecl('sub'))
('lookup', gcc.VarDecl('foo'))

('name', 'top')
('alias_of', None)
('declarations', [gcc.NamespaceDecl('sub_alias_alias'), gcc.NamespaceDecl('sub_alias'), gcc.TypeDecl('top_union')])
('namespaces', [gcc.NamespaceDecl('foo'), gcc.NamespaceDecl('sub')])
('unalias', gcc.NamespaceDecl('top'))
('lookup', gcc.NamespaceDecl('foo'))

   ('name', 'sub_alias_alias')
   ('alias_of', gcc.NamespaceDecl('sub'))
   ('declarations', RuntimeError('gcc.NamespaceDecl.declarations is not valid for an alias',))
   ('namespaces', RuntimeError('gcc.NamespaceDecl.namespaces is not valid for an alias',))
   ('unalias', gcc.NamespaceDecl('sub'))
   ('lookup', gcc.VarDecl('foo'))

   ('name', 'sub_alias')
   ('alias_of', gcc.NamespaceDecl('sub'))
   ('declarations', RuntimeError('gcc.NamespaceDecl.declarations is not valid for an alias',))
   ('namespaces', RuntimeError('gcc.NamespaceDecl.namespaces is not valid for an alias',))
   ('unalias', gcc.NamespaceDecl('sub'))
   ('lookup', gcc.VarDecl('foo'))

   ('name', 'foo')
   ('alias_of', None)
   ('declarations', [])
   ('namespaces', [gcc.NamespaceDecl('bar')])
   ('unalias', gcc.NamespaceDecl('foo'))
   ('lookup', None)

      ('name', 'bar')
      ('alias_of', None)
      ('declarations', [])
      ('namespaces', [])
      ('unalias', gcc.NamespaceDecl('bar'))
      ('lookup', None)

   ('name', 'sub')
   ('alias_of', None)
   ('declarations', [gcc.VarDecl('foo'), gcc.FunctionDecl('subs_function'), gcc.VarDecl('subs_int')])
   ('namespaces', [gcc.NamespaceDecl('sub_sub')])
   ('unalias', gcc.NamespaceDecl('sub'))
   ('lookup', gcc.VarDecl('foo'))

      ('name', 'sub_sub')
      ('alias_of', None)
      ('declarations', [gcc.FunctionDecl('foo')])
      ('namespaces', [])
      ('unalias', gcc.NamespaceDecl('sub_sub'))
      ('lookup', gcc.FunctionDecl('foo'))

