/** Step out. */
  public void stepOut() throws DebuggerException {
    if (currentThread == null) return;

    setLastAction(ACTION_STEP_OUT);
    currentThread.setLastAction(ACTION_STEP_OUT);
    new Protector("AbstractDebugger.stepOut") { // NOI18N
      public Object protect() throws Exception {
        currentThread.getRemoteThread().stepOut();
        ToolsDebugger.super.stepOut();
        return null;
      }
    }.go(synchronizer, killer);
  }
  /** Trace over. */
  public void traceOver() throws DebuggerException {
    if (currentThread == null) return;

    setLastAction(ACTION_TRACE_OVER);
    currentThread.setLastAction(ACTION_TRACE_OVER);
    new Protector("AbstractDebugger.traceOver") { // NOI18N
      public Object protect() throws Exception {
        currentThread.getRemoteThread().next();
        ToolsDebugger.super.traceOver();
        return null;
      }
    }.go(synchronizer, killer);
  }
  /** Go. */
  public void go() throws DebuggerException {
    if (currentThread == null) return;

    setLastAction(ACTION_GO);
    currentThread.setLastAction(ACTION_GO);
    new Protector("AbstractDebugger.go") { // NOI18N
      public Object protect() throws Exception {
        remoteDebugger.cont();
        ToolsDebugger.super.go();
        return null;
      }
    }.go(synchronizer, killer);

    // threadGroup.setSuspended (false);
  }