code: function(router, path) {
      var parentState = get(this, 'parentState');
  
      // If we're at the root state, we're done
      if (parentState === router) {
        return;
      }
  
      path = path.replace(/^(?=[^\/])/, "/");
      var absolutePath = this.absoluteRoute(router);
  
      var route = get(this, 'route');
  
      // If the current path is empty, move up one state,
      // because the index ('/') state must be a leaf node.
      if (route !== '/') {
        // If the current path is a prefix of the path we're trying
        // to go to, we're done.
        var index = path.indexOf(absolutePath),
            next = path.charAt(absolutePath.length);
  
        if (index === 0 && (next === "/" || next === "")) {
          return;
        }
      }
  
      // Transition to the parent and call unroute again.
      router.enterState({
        exitStates: [this],
        enterStates: [],
        finalState: parentState
      });
  
      router.send('unroutePath', path);
    }
docs: @private
  
  When you move to a new route by pressing the back
  or forward button, this method is called first.
  
  Its job is to move the state manager into a parent
  state of the state it will eventually move into.