Assert that json can be deserialized
diff --git a/codegen/src/json.rs b/codegen/src/json.rs
index 532260e..d870a64 100644
--- a/codegen/src/json.rs
+++ b/codegen/src/json.rs
@@ -1,7 +1,7 @@
 use crate::types;
 
 use std::collections::BTreeMap;
-use std::fs::File;
+use std::fs::{self, File};
 use std::io::prelude::*;
 use std::path::Path;
 
@@ -14,17 +14,18 @@
 
     let manifest: Manifest = toml::from_str(&s).unwrap();
 
-    let f = ::std::fs::File::create(codegen_root.join("../syn.json")).unwrap();
+    let introspect = Introspect {
+        version: manifest.package.version,
+        types: defs.types.clone(),
+        tokens: defs.tokens.clone(),
+    };
 
-    serde_json::to_writer_pretty(
-        f,
-        &Introspect {
-            version: &manifest.package.version,
-            types: &defs.types,
-            tokens: &defs.tokens,
-        },
-    )
-    .unwrap();
+    let j = serde_json::to_string_pretty(&introspect).unwrap();
+    let check: Introspect = serde_json::from_str(&j).unwrap();
+    assert_eq!(introspect, check);
+
+    let json_path = codegen_root.join("../syn.json");
+    fs::write(json_path, j).unwrap();
 }
 
 #[derive(Debug, Deserialize)]
@@ -37,10 +38,10 @@
     version: String,
 }
 
-#[derive(Debug, Serialize)]
-struct Introspect<'a> {
+#[derive(Debug, PartialEq, Serialize, Deserialize)]
+struct Introspect {
     /// The `syn` version used to generate the introspection file
-    version: &'a str,
-    types: &'a [types::Node],
-    tokens: &'a BTreeMap<String, String>,
+    version: String,
+    types: Vec<types::Node>,
+    tokens: BTreeMap<String, String>,
 }