FBL.ns(function () {
  /**
   *
   * ### Security
   *
   * It is _believed_ that the following usage of `ko.contextFor` via `window.wrappedJSObject` is secure, but I'm not
   * going to stake anything too valuable on it. Potentially useful additional references:
   *
   * 1.  https://developer.mozilla.org/en-US/docs/en/XPCNativeWrapper
   * 2.  https://getfirebug.com/wiki/index.php/Using_win.wrappedJSObject
   *
   * @private
   *
   * @param firebugContext
   * @param object
   * @returns {?Knockout.Context}
   */
  function getKnockoutContext(firebugContext, object) {
    var rep;
    var realObject;
    var window;
    var knockout;
    var knockoutContextForFunction;

    // Much of this was adapted from UseInCommandLine from the base Firebug source.

    if (!object || typeof object === "boolean") {
      return null;
    }

    rep = Firebug.getRep(object, firebugContext);
    if (!rep || !rep.inspectable) {
      return null;
    }

    realObject = rep.getRealObject(object, firebugContext);
    if (!FBL.isElement(realObject)) {
      return null;
    }

    // Checking that `realObject` is an instance of `window.Element` is fairly defensive; not sure whether it has any
    // utility. This is simply an attempt to ensure that we don't pass anything exploitable into the `contextFor`
    // function.
    window = firebugContext.window;
    if (!window || !window.Element || !(realObject instanceof window.Element)) {
      return null;
    }

    knockoutContextForFunction = (knockout = window.wrappedJSObject.ko) && knockout.contextFor;
    if (knockoutContextForFunction && FBL.isFunction(knockoutContextForFunction)) {
      return knockoutContextForFunction(realObject);
    } else {
      return null;
    }
  }

  // Adapted from UseInCommandLine from the base Firebug source.
  var InspectKnockoutContext = FBL.extend(Firebug.Module, {
    dispatchName: "InspectKnockoutContext",

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    // Extends Module

    initialize: function () {
      Firebug.Module.initialize.apply(this, arguments);

      Firebug.registerUIListener(this);
    },

    shutdown: function () {
      Module.shutdown.apply(this, arguments);

      Firebug.unregisterUIListener(this);
    },

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    // UI Listener

    onContextMenu: function (items, object, target, context, panel, popup) {
      var knockoutContext = getKnockoutContext(context, object);
      if (!knockoutContext) {
        return;
      }

      // REVIEW: Should something using `Firebug.getRep` be done on `knockoutContext`?

      FBL.createMenuSeparator(popup);

      FBL.createMenuItem(popup, {
        label: "Inspect Knockout context",
        tooltiptext: "Open the Knockout context for the current element in the DOM panel",
        command: this.inspectKnockoutContext.bind(this, knockoutContext)
      });
    },

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    // Context Menu Actions

    inspectKnockoutContext: function (knockoutContext) {
      Firebug.chrome.select(knockoutContext, "dom");
    }
  });

  Firebug.registerModule(InspectKnockoutContext);
});

@@ -2465,17 +2465,24 @@
 target, 
-c
+firebugC
 ontext, 
@@ -2499,32 +2499,123 @@
 up) %7B%0A      var 
+knockoutContext;%0A      var knockoutContextRep;%0A      var knockoutContextRealObject;%0A%0A      
 knockoutContext 
@@ -2635,17 +2635,24 @@
 Context(
-c
+firebugC
 ontext, 
@@ -2736,77 +2736,429 @@
 EW: 
-Should something using %60Firebug.getRep%60 be done on %60knockoutContext%60?
+Not sure if going through %60getRep%60 and %60getRealObject%60 serve any purpose what so ever.%0A%0A      knockoutContextRep = Firebug.getRep(knockoutContext, firebugContext);%0A      if (!knockoutContextRep %7C%7C !knockoutContextRep.inspectable) %7B%0A        return;%0A      %7D%0A%0A      knockoutContextRealObject = knockoutContextRep.getRealObject(knockoutContext, firebugContext);%0A      if (!knockoutContextRealObject) %7B%0A        return;%0A      %7D
 %0A%0A  
@@ -3433,16 +3433,26 @@
 tContext
+RealObject
 )%0A      

Use `getRep` and `getRealObject` on the `knockoutContext`.