 +
 +  for (var prop in scope) {
 +    if (prop.indexOf(matchProp) === 0) {
-+      var value = scope[prop];
++      var value;
++      try {
++        value = scope[prop];
++      }
++      catch (ex) {
++        break;
++      }
 +      var description;
 +      var incomplete = true;
 +      if (typeof value === 'function') {

+  "</div>" +
+  "");
+
 
 /*
  * require GCLI so it can be exported as declared in EXPORTED_SYMBOLS

+  this._caretChange = null;
+
+  // Ensure that TAB/UP/DOWN isn't handled by the browser
+  this.onKeyDown = this.onKeyDown.bind(this);
+  this.onKeyUp = this.onKeyUp.bind(this);
+  event.addListener(this.element, 'keydown', this.onKeyDown);
+  event.addListener(this.element, 'keyup', this.onKeyUp);
+
+  if (options.completer == null) {
+    options.completer = new Completer(options);
