code: function (e, index) {
  			if (index !== undefined) {
  				if (index !== 0) {
  					return false;
  				}
  			} else {
  				if (e instanceof Array) {
  					if (e.length > 1) {
  						return false;
  					}
  					e = e[0];
  				}
  			}
  			if (e.type !== this.type) {
  				return false;
  			}
  			if (this.keyCode === e.keyCode || this.keyCode === String.fromCharCode(util.isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode))) {
  				var mod1 = util.isMac ? e.metaKey : e.ctrlKey;
  				if (this.mod1 !== mod1) { return false; }
  				if (this.type === "keydown") { //$NON-NLS-0$
  					if (this.mod2 !== e.shiftKey) { return false; }
  				}
  				if (this.mod3 !== e.altKey) { return false; }
  				if (util.isMac && this.mod4 !== e.ctrlKey) { return false; }
  				return true;
  			}
  			return false;
  		}
docs: Determines either this key stroke matches the specifed event.  It can match either a
  a whole sequence of key events or a single key event at a specified index.
  <p>
  <code>KeyStroke</code> only matches single key events. <code>KeySequence</code> handles
  matching a sequence of events.
  </p>
  TODO explain this better
  
  @param {DOMEvent|DOMEvent[]} e the key event or list of events to match.
  @param index the key event to match.
  @returns {Boolean} <code>true</code> whether the key binding matches the key event.
  
  @see orion.KeySequence#match