@Override
 public void run() {
   try {
     if (fDebug) System.out.println("Creating server socket " + fServerPort); // $NON-NLS-1$
     fServerSocket = new ServerSocket(fServerPort);
     fSocket = fServerSocket.accept();
     try {
       fPushbackReader =
           new PushbackReader(
               new BufferedReader(
                   new InputStreamReader(fSocket.getInputStream(), "UTF-8"))); // $NON-NLS-1$
     } catch (UnsupportedEncodingException e) {
       fPushbackReader =
           new PushbackReader(
               new BufferedReader(new InputStreamReader(fSocket.getInputStream())));
     }
     try {
       fWriter =
           new PrintWriter(
               new OutputStreamWriter(fSocket.getOutputStream(), "UTF-8"), true); // $NON-NLS-1$
     } catch (UnsupportedEncodingException e1) {
       fWriter = new PrintWriter(new OutputStreamWriter(fSocket.getOutputStream()), true);
     }
     String message;
     while (fPushbackReader != null && (message = readMessage(fPushbackReader)) != null)
       receiveMessage(message);
   } catch (SocketException e) {
     notifyTestRunTerminated();
   } catch (IOException e) {
     JUnitCorePlugin.log(e);
     // fall through
   }
   shutDown();
 }
 @Override
 public void handleException(Throwable exception) {
   JUnitCorePlugin.log(exception);
 }