diff --git a/lib/binary_serialization.dart b/lib/binary_serialization.dart
index 672d280..a19689f 100644
--- a/lib/binary_serialization.dart
+++ b/lib/binary_serialization.dart
@@ -206,6 +206,7 @@
   void visitOutput(OutputUnitInfo output) {
     sink.writeCached(output, (OutputUnitInfo info) {
       _visitBasicInfo(info);
+      sink.writeStringOrNull(info.filename);
       sink.writeList(info.imports, sink.writeString);
     });
   }
@@ -445,6 +446,7 @@
   OutputUnitInfo readOutput() => source.readCached<OutputUnitInfo>(() {
         OutputUnitInfo info = new OutputUnitInfo.internal();
         _readBasicInfo(info);
+        info.filename = source.readStringOrNull();
         info.imports = source.readList(source.readString);
         return info;
       });
diff --git a/lib/info.dart b/lib/info.dart
index b41bb5c..d2019ca 100644
--- a/lib/info.dart
+++ b/lib/info.dart
@@ -203,10 +203,12 @@
 /// program unless the application uses deferred imports, in which case there
 /// would be an additional output unit per deferred chunk.
 class OutputUnitInfo extends BasicInfo {
+  String filename;
+
   /// The deferred imports that will load this output unit.
   List<String> imports = <String>[];
 
-  OutputUnitInfo(String name, int size)
+  OutputUnitInfo(this.filename, String name, int size)
       : super(InfoKind.outputUnit, name, null, size, null);
 
   OutputUnitInfo.internal() : super.internal(InfoKind.outputUnit);
diff --git a/lib/json_info_codec.dart b/lib/json_info_codec.dart
index 92b7d63..e7c9364 100644
--- a/lib/json_info_codec.dart
+++ b/lib/json_info_codec.dart
@@ -92,6 +92,7 @@
   OutputUnitInfo parseOutputUnit(Map json) {
     OutputUnitInfo result = parseId(json['id']);
     result
+      ..filename = json['filename']
       ..name = json['name']
       ..size = json['size'];
     result.imports
@@ -252,6 +253,7 @@
           (json['parameters'] as List).map((p) => parseParameter(p)).toList()
       ..code = parseCode(json['code'])
       ..sideEffects = json['sideEffects']
+      ..inlinedCount = json['inlinedCount']
       ..modifiers =
           parseModifiers(new Map<String, bool>.from(json['modifiers']))
       ..closures = (json['children'] as List)
@@ -583,8 +585,9 @@
 
   visitTypedef(TypedefInfo info) => _visitBasicInfo(info)..['type'] = info.type;
 
-  visitOutput(OutputUnitInfo info) =>
-      _visitBasicInfo(info)..['imports'] = info.imports;
+  visitOutput(OutputUnitInfo info) => _visitBasicInfo(info)
+    ..['filename'] = info.filename
+    ..['imports'] = info.imports;
 
   Object _serializeCode(List<CodeSpan> code) {
     if (isBackwardCompatible) {
