diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9ea9c51..e5c2d3f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## v1.0.2
+
+- Throws an error if the final YAML after edit is not parsable.
+- Fixed bug in adding to empty map values, when it is followed by other content.
+
 ## v1.0.1
 
 - Updated behavior surrounding list and map removal.
diff --git a/lib/src/editor.dart b/lib/src/editor.dart
index 9e16598..730261e 100644
--- a/lib/src/editor.dart
+++ b/lib/src/editor.dart
@@ -576,19 +576,24 @@
     ArgumentError.checkNotNull(path, 'path');
 
     final expectedTree = _deepModify(_contents, path, [], expectedNode);
+    final initialYaml = _yaml;
     _yaml = edit.apply(_yaml);
-    _initialize();
+
+    try {
+      _initialize();
+    } on YamlException {
+      throw createAssertionError(
+          'Failed to produce valid YAML after modification.',
+          initialYaml,
+          _yaml);
+    }
 
     final actualTree = loadYamlNode(_yaml);
     if (!deepEquals(actualTree, expectedTree)) {
-      throw AssertionError('''
-Modification did not result in expected result! 
-
-Obtained: 
-$actualTree
-
-Expected: 
-$expectedTree''');
+      throw createAssertionError(
+          'Modification did not result in expected result.',
+          initialYaml,
+          _yaml);
     }
 
     _contents = actualTree;
diff --git a/lib/src/errors.dart b/lib/src/errors.dart
index 83241cc..871d40a 100644
--- a/lib/src/errors.dart
+++ b/lib/src/errors.dart
@@ -76,3 +76,36 @@
             'by this library.\n\n'
             '${anchor.span.message('The alias was first defined here.')}');
 }
+
+/// Error thrown when an assertion about the YAML fails. Extends
+/// [AssertionError] to override the [toString] method for pretty printing.
+class _YamlAssertionError extends AssertionError {
+  _YamlAssertionError(message) : super(message);
+
+  @override
+  String toString() {
+    if (message != null) {
+      return 'Assertion failed: ${message}';
+    }
+    return 'Assertion failed';
+  }
+}
+
+/// Throws an [AssertionError] with the given [message], and format
+/// [oldYaml] and [newYaml] for information.
+@alwaysThrows
+Error createAssertionError(String message, String oldYaml, String newYaml) {
+  return _YamlAssertionError('''
+(package:yaml_edit) $message
+
+# YAML before edit:
+> ${oldYaml.replaceAll('\n', '\n> ')}
+
+# YAML after edit:
+> ${newYaml.replaceAll('\n', '\n> ')}
+
+Please file an issue at:
+'''
+      'https://github.com/google/dart-neats/issues/new?labels=pkg%3Ayaml_edit'
+      '%2C+pending-triage&template=yaml_edit.md\n');
+}
diff --git a/lib/src/map_mutations.dart b/lib/src/map_mutations.dart
index b3c3cf8..1a3d1f3 100644
--- a/lib/src/map_mutations.dart
+++ b/lib/src/map_mutations.dart
@@ -172,7 +172,7 @@
   /// `package:yaml` parses empty nodes in a way where the start/end of the
   /// empty value node is the end of the key node, so we have to adjust for
   /// this.
-  if (end < start) end = start + 1;
+  if (end < start) end = start;
 
   return SourceEdit(start, end - start, ' ' + valueAsString);
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index f143892..11923e3 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: yaml_edit
-version: 1.0.1
+version: 1.0.2
 description: A library for YAML manipulation with comment and whitespace preservation.
 homepage: https://github.com/google/dart-neats/tree/master/yaml_edit
 repository: https://github.com/google/dart-neats.git
diff --git a/test/testdata/output/pubspec.golden b/test/testdata/output/pubspec.golden
index 7cd5b25..b5e5ea0 100644
--- a/test/testdata/output/pubspec.golden
+++ b/test/testdata/output/pubspec.golden
@@ -113,3 +113,4 @@
 
 dev_dependencies: 
   test: ^1.14.4
+
diff --git a/test/update_test.dart b/test/update_test.dart
index bee48b6..23b0023 100644
--- a/test/update_test.dart
+++ b/test/update_test.dart
@@ -104,7 +104,7 @@
       });
 
       test('empty value', () {
-        final doc = YamlEditor('YAML: ');
+        final doc = YamlEditor('YAML:');
         doc.update(['YAML'], 'test');
 
         expect(doc.toString(), equals('YAML: test'));
@@ -112,7 +112,7 @@
       });
 
       test('empty value (2)', () {
-        final doc = YamlEditor('YAML : ');
+        final doc = YamlEditor('YAML :');
         doc.update(['YAML'], 'test');
 
         expect(doc.toString(), equals('YAML : test'));
@@ -257,6 +257,36 @@
 '''));
       });
 
+      test('nested (8)', () {
+        final doc = YamlEditor('''
+a:
+b: false
+''');
+        doc.update(['a'], {'retry': '3.0.1'});
+
+        expect(doc.toString(), equals('''
+a: 
+  retry: 3.0.1
+b: false
+'''));
+      });
+
+      test('nested (9)', () {
+        final doc = YamlEditor('''
+# comment
+a: # comment
+# comment
+''');
+        doc.update(['a'], {'retry': '3.0.1'});
+
+        expect(doc.toString(), equals('''
+# comment
+a: 
+  retry: 3.0.1 # comment
+# comment
+'''));
+      });
+
       test('nested scalar -> flow list', () {
         final doc = YamlEditor('''
 a: 1
