Represent the unsafety on foreign module
diff --git a/syntax/file.rs b/syntax/file.rs
index f227900..dfe8e0d 100644
--- a/syntax/file.rs
+++ b/syntax/file.rs
@@ -2,7 +2,7 @@
 use quote::quote;
 use syn::parse::{Error, Parse, ParseStream, Result};
 use syn::{
-    braced, token, Attribute, Ident, Item as RustItem, ItemEnum, ItemForeignMod, ItemStruct,
+    braced, token, Abi, Attribute, ForeignItem, Ident, Item as RustItem, ItemEnum, ItemStruct,
     ItemUse, Token, Visibility,
 };
 
@@ -25,6 +25,14 @@
     Other(RustItem),
 }
 
+pub struct ItemForeignMod {
+    pub attrs: Vec<Attribute>,
+    pub unsafety: Option<Token![unsafe]>,
+    pub abi: Abi,
+    pub brace_token: token::Brace,
+    pub items: Vec<ForeignItem>,
+}
+
 impl Parse for Module {
     fn parse(input: ParseStream) -> Result<Self> {
         let namespace = Namespace::none();
@@ -71,7 +79,13 @@
         match item {
             RustItem::Struct(item) => Ok(Item::Struct(item)),
             RustItem::Enum(item) => Ok(Item::Enum(item)),
-            RustItem::ForeignMod(item) => Ok(Item::ForeignMod(item)),
+            RustItem::ForeignMod(item) => Ok(Item::ForeignMod(ItemForeignMod {
+                attrs: item.attrs,
+                unsafety: None,
+                abi: item.abi,
+                brace_token: item.brace_token,
+                items: item.items,
+            })),
             RustItem::Use(item) => Ok(Item::Use(item)),
             other => Ok(Item::Other(other)),
         }
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 117d025..c23ee8f 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -1,5 +1,5 @@
 use crate::syntax::discriminant::DiscriminantSet;
-use crate::syntax::file::Item;
+use crate::syntax::file::{Item, ItemForeignMod};
 use crate::syntax::report::Errors;
 use crate::syntax::Atom::*;
 use crate::syntax::{
@@ -12,8 +12,8 @@
 use syn::punctuated::Punctuated;
 use syn::{
     Abi, Attribute, Error, Fields, FnArg, ForeignItem, ForeignItemFn, ForeignItemType,
-    GenericArgument, Ident, ItemEnum, ItemForeignMod, ItemStruct, LitStr, Pat, PathArguments,
-    Result, ReturnType, Token, Type as RustType, TypeBareFn, TypePath, TypeReference, TypeSlice,
+    GenericArgument, Ident, ItemEnum, ItemStruct, LitStr, Pat, PathArguments, Result, ReturnType,
+    Token, Type as RustType, TypeBareFn, TypePath, TypeReference, TypeSlice,
 };
 
 pub mod kw {