synchronized (outgoing) {
if (null != outgoing) synchronized (outgoing) {
      public void run()      {         try {            Message m = null;            while (_run) {               m = null;               // read from the wire               try {                  // this blocks on outgoing being non-empty or a message being available.                  m = readIncoming(TIMEOUT, outgoing);                  if (m != null) {                     synchronized (this) { notifyAll(); }                     if (m instanceof DBusSignal)                        handleMessage((DBusSignal) m);                     else if (m instanceof MethodCall)                        handleMessage((MethodCall) m);                     else if (m instanceof MethodReturn)                        handleMessage((MethodReturn) m);                     else if (m instanceof Error)                        handleMessage((Error) m);                     m = null;                  }               } catch (IOException IOe) {                   if (EXCEPTION_DEBUG)                     IOe.printStackTrace();                              try {                     handleMessage(new org.freedesktop.DBus.Local.Disconnected("/"));                  } catch (Exception e) {                     if (EXCEPTION_DEBUG)                        e.printStackTrace();                              }               } catch (Exception e) {                   if (EXCEPTION_DEBUG)                     e.printStackTrace();                           }               // write to the wire               synchronized (outgoing) {                  if (!outgoing.isEmpty())                     m = outgoing.remove(); }               while (null != m) {                  sendMessage(m);                  m = null;                  synchronized (outgoing) {                     if (!outgoing.isEmpty())                        m = outgoing.remove(); }               }            }            synchronized (outgoing) {               if (!outgoing.isEmpty())                  m = outgoing.remove();             }            while (null != m) {               sendMessage(m);               m = null;               synchronized (outgoing) {                  if (!outgoing.isEmpty())                     m = outgoing.remove(); }            }            synchronized (this) { notifyAll(); }         } catch (NotConnected NC) {}      }