public void run() {
    try {
      // process data until we hit EOF; this will happily block
      // (effectively sleeping the thread) until new data comes in.
      // when the program is finally done, null will come through.
      //
      String currentLine;
      while ((currentLine = streamReader.readLine()) != null) {
        // \n is added again because readLine() strips it out
        //EditorConsole.systemOut.println("messaging in");
        consumer.message(currentLine + "\n");
        //EditorConsole.systemOut.println("messaging out");
      }
      //EditorConsole.systemOut.println("messaging thread done");
      thread = null;

    } catch (NullPointerException npe) {
      // Fairly common exception during shutdown
      thread = null;

    } catch (Exception e) {
      // On Linux and sometimes on Mac OS X, a "bad file descriptor"
      // message comes up when closing an applet that's run externally.
      // That message just gets supressed here..
      String mess = e.getMessage();
      if ((mess != null) &&
          (mess.indexOf("Bad file descriptor") != -1)) {
        //if (e.getMessage().indexOf("Bad file descriptor") == -1) {
        //System.err.println("MessageSiphon err " + e);
        //e.printStackTrace();
      } else {
        e.printStackTrace();
      }
      thread = null;
    }
  }