@Override
  public void run() {
    while (!myMainProcessHandler.isProcessTerminated() && !myMainProcessHandler.isProcessTerminating() && !mySocket.isClosed()) {
      try {
        if (ExternalSystemTaskDebugRunner.LOG.isDebugEnabled()) {
          int port = mySocket.getLocalPort();
          String host = mySocket.getInetAddress().getHostAddress();
          String productName = ApplicationNamesInfo.getInstance().getFullProductName();
          ExternalSystemTaskDebugRunner.LOG.debug(String.format("%s wait for debug process signal on '%s:%d'", productName, host, port));
        }
        handleForkedProcessSignal(mySocket.accept());
      }
      catch (EOFException ignored) {
      }
      catch (SocketException e) {
        ExternalSystemTaskDebugRunner.LOG.debug(e);
      }
      catch (IOException e) {
        ExternalSystemTaskDebugRunner.LOG.warn(e);
      }
    }
    try {
      if (!mySocket.isClosed()) {
        mySocket.close();
      }
    }
    catch (IOException e) {
      ExternalSystemTaskDebugRunner.LOG.debug(e);
    }
  }
@Override
  public void run()