code: function(clearState) {
          Crafty.trigger("CraftyStop", clearState);
  
          this.timer.stop();
          if (clearState) {
              // Remove audio
              Crafty.audio.remove();
  
              //Destroy all systems
              for (var s in Crafty._systems) {
                  Crafty._systems[s].destroy();
              }
  
              // Remove the stage element, and re-add a div with the same id
              if (Crafty.stage && Crafty.stage.elem.parentNode) {
                  var newCrStage = document.createElement("div");
                  newCrStage.id = Crafty.stage.elem.id;
                  Crafty.stage.elem.parentNode.replaceChild(
                      newCrStage,
                      Crafty.stage.elem
                  );
              }
  
              // reset callbacks, and indicate that prebound functions need to be bound on init again
              Crafty._unbindAll();
              Crafty._addCallbackMethods(Crafty);
              this._preBindDone = false;
  
              initState();
          }
          return this;
      }
docs: @
  #Crafty.stop
  @category Core
  @kind Method
  
  @trigger CraftyStop - when the game is stopped  - {bool clearState}
  @sign public this Crafty.stop([bool clearState])
  @param clearState - if true the stage and all game state is cleared.
  
  Stops the `UpdateFrame` interval and removes the stage element.
  
  To restart, use `Crafty.init()`.
  @see Crafty.init