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

            if (TypeAggregator.FilterModuleAndName(platform, moduleName, ref name))
            {
                TypeAggregator.RemapModuleAndName(platform, ref moduleName, ref name, TypeType.Struct);
                var module            = ToModuleDeclaration(moduleName);
                var structDeclaration = new StructDeclaration {
                    Name            = name,
                    Access          = ToAccessibility(definition),
                    Module          = module,
                    ParentExtension = null,
                    Kind            = TypeKind.Struct,
                    Members         = new List <Member> (),
                    IsObjC          = true,
                    IsFinal         = true,
                    IsDeprecated    = false,
                    IsUnavailable   = false
                };
                return(structDeclaration.MakeUnrooted());
            }
            return(null);
        }