private DebuggingModelController(
      Place currentPlace,
      AppContext appContext,
      DebuggingModel debuggingModel,
      Editor editor,
      EditorPopupController editorPopupController,
      DocumentManager documentManager) {
    this.appContext = appContext;
    this.editor = editor;
    this.currentPlace = currentPlace;
    this.debuggingModel = debuggingModel;
    this.leftGutterClickListenerRemover =
        editor.getLeftGutter().getClickListenerRegistrar().add(leftGutterClickListener);

    // Every time we enter workspace, we get a new debugging session id.
    String sessionId =
        BootstrapSession.getBootstrapSession().getActiveClientId()
            + ":"
            + System.currentTimeMillis();
    this.debuggerState = DebuggerState.create(sessionId);

    this.debuggingSidebar = DebuggingSidebar.create(appContext.getResources(), debuggerState);
    this.debuggingModelRenderer =
        DebuggingModelRenderer.create(appContext, editor, debuggingSidebar, debuggerState);
    this.cssLiveEditController = new CssLiveEditController(debuggerState, documentManager);
    this.evaluationPopupController =
        EvaluationPopupController.create(
            appContext.getResources(), editor, editorPopupController, debuggerState);

    this.debuggingModel.addModelChangeListener(debuggingModelChangeListener);
    this.debuggerState.getDebuggerStateListenerRegistrar().add(debuggerStateListener);
    this.debuggingSidebar.getDebuggerCommandListenerRegistrar().add(userCommandListener);
  }