code: function(serviceRegistry) {
          EventTarget.attach(this);
  
          /**
           * @type {string}
           * @private
           */
          this._focusedFile = undefined;
          /**
           * @type {number}
           * @private
           */
          this._focusedLine = undefined;
  
          /**
           * @type {Object.<string, Array.<orion.debug.IBreakpoint>>}
           * @private
           */
          this._breakpointsByLocation = {};
  
          /**
           * @type {Array.<orion.debug.IBreakpoint>}
           * @private
           */
          this._globalBreakpoints = [];
  
          /**
           * The set of watches.
           * @type {Object.<string, boolean>}
           * @private
           */
          this._watches = {};
  
          this._loadFromStorage();
  
          serviceRegistry.registerService('orion.debug.service', this);
      }
docs: A debug service provides breakpoints, watches and highlighted lines management.
  Here management means loading and saving data from storage, apis of getters and setters, and correspoding events.
  Note that breakpoints from streaming (remote-only) files won't be presisted.
  
  TODO: The current implementation doesn't use any lock, so if the user adds a breakpoint while updating the preference,
  the processing data will be lost.
  
  @class {orion.debug.DebugService}
  @param {orion.serviceregistry.ServiceRegistry} serviceRegistry