diff --git a/js/debug.js b/js/debug.js
index 4838911..ba51bbe 100644
--- a/js/debug.js
+++ b/js/debug.js
@@ -42,7 +42,7 @@
 
 /**
  * Turns a proto into a human readable object that can i.e. be written to the
- * console: {@code console.log(jspb.debug.dump(myProto))}.
+ * console: `console.log(jspb.debug.dump(myProto))`.
  * This function makes a best effort and may not work in all cases. It will not
  * work in obfuscated and or optimized code.
  * Use this in environments where {@see jspb.Message.prototype.toObject} is
@@ -68,21 +68,28 @@
  * Recursively introspects a message and the values its getters return to
  * make a best effort in creating a human readable representation of the
  * message.
- * @param {*} thing A jspb.Message, Array or primitive type to dump.
+ * @param {?} thing A jspb.Message, Array or primitive type to dump.
  * @return {*}
  * @private
  */
 jspb.debug.dump_ = function(thing) {
   var type = goog.typeOf(thing);
+  var message = thing;  // Copy because we don't want type inference on thing.
   if (type == 'number' || type == 'string' || type == 'boolean' ||
       type == 'null' || type == 'undefined') {
     return thing;
   }
+  if (typeof Uint8Array !== 'undefined') {
+    // Will fail on IE9, where Uint8Array doesn't exist.
+    if (message instanceof Uint8Array) {
+      return thing;
+    }
+  }
+
   if (type == 'array') {
     goog.asserts.assertArray(thing);
     return goog.array.map(thing, jspb.debug.dump_);
   }
-  var message = thing;  // Copy because we don't want type inference on thing.
   goog.asserts.assert(message instanceof jspb.Message,
       'Only messages expected: ' + thing);
   var ctor = message.constructor;
@@ -94,8 +101,9 @@
     var match = /^get([A-Z]\w*)/.exec(name);
     if (match && name != 'getExtension' &&
         name != 'getJsPbMessageId') {
-      var val = thing[name]();
-      if (val != null) {
+      var has = 'has' + match[1];
+      if (!thing[has] || thing[has]()) {
+        var val = thing[name]();
         object[jspb.debug.formatFieldName_(match[1])] = jspb.debug.dump_(val);
       }
     }
