TypeDeclaration ToClassDeclaration(TypeDefinition definition)
        {
            var name       = TypeAggregator.RegisterAttributeName(definition) ?? definition.Name;
            var moduleName = definition.Namespace;

            TypeAggregator.RemapModuleAndName(platform, ref moduleName, ref name, TypeType.Class);
            var classDecl = new ClassDeclaration {
                Name              = name,
                Access            = ToAccessibility(definition),
                Module            = ToModuleDeclaration(moduleName),
                ParentExtension   = null,
                Kind              = TypeKind.Class,
                Members           = new List <Member> (),
                InnerClasses      = new List <ClassDeclaration> (),
                InnerStructs      = new List <StructDeclaration> (),
                InnerEnums        = new List <EnumDeclaration> (),
                IsObjC            = true,
                IsFinal           = definition.IsSealed,
                IsDeprecated      = false,
                IsUnavailable     = false,
                IsImportedBinding = true
            };

            classDecl.Inheritance.AddRange(ToInheritance(definition));
            return(classDecl.MakeUnrooted());
        }