code: function(oHashChanger) {
  		this._iHistoryLength = window.history.length;
  		this.aHistory = [];
  		this._bIsInitial = true;
  
  		if (!Device.browser.msie) { // the state information isn't used for IE
  			// because it doesn't clear the state after new hash is set
  			var oState = window.history.state === null ? {} : window.history.state;
  
  			if (typeof oState === "object") {
  				History._aStateHistory.push(window.location.hash);
  				oState.sap = {};
  				oState.sap.history = History._aStateHistory;
  				window.history.replaceState(oState, window.document.title);
  			} else {
  				Log.debug("Unable to determine HistoryDirection as history.state is already set: " + window.history.state, "sap.ui.core.routing.History");
  			}
  		}
  
  		if (!oHashChanger) {
  			Log.error("sap.ui.core.routing.History constructor was called and it did not get a hashChanger as parameter");
  		}
  
  		this._setHashChanger(oHashChanger);
  
  		this._reset();
  	}
docs: Used to determine the {@link sap.ui.core.routing.HistoryDirection} of the current or a future navigation,
  done with a {@link sap.ui.core.routing.Router} or {@link sap.ui.core.routing.HashChanger}.
  
  <strong>ATTENTION:</strong> this class will not be accurate if someone does hash-replacement without the named classes above
  If you are manipulating the hash directly this class is not supported anymore.
  
  @param {sap.ui.core.routing.HashChanger} oHashChanger required, without a HashChanger this class cannot work. The class needs to be aware of the hash-changes.
  @public
  @class
  @alias sap.ui.core.routing.History