Program: 95039
Project: 95039
Buggy source:
private synchronized void handleCommandMessage(String[] tokens){
  String command=tokens[0];
  while (command.startsWith(COMMAND_PREFIX))   command=command.substring(1);
  String[] args=new String[tokens.length - 1];
  System.arraycopy(tokens,1,args,0,tokens.length - 1);
  if (command.equalsIgnoreCase(JOIN_COMMAND)) {
    if (args.length > 1) {
      connection.doJoin(args[0],args[1]);
    }
 else     if (args.length > 0) {
      connection.doJoin(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(LIST_COMMAND)) {
    if (args.length > 0) {
      connection.doList(args[0]);
    }
 else     connection.doList();
  }
 else   if (command.equalsIgnoreCase(PART_COMMAND)) {
    if (args.length > 1) {
      connection.doPart(args[0],args[1]);
    }
 else     if (args.length > 0) {
      connection.doPart(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(NICK_COMMAND)) {
    if (args.length > 0) {
      connection.doNick(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(MSG_COMMAND)) {
    if (args.length > 1) {
      connection.doPrivmsg(args[0],args[1]);
    }
  }
 else   if (command.equalsIgnoreCase(NOTICE_COMMAND)) {
    if (args.length > 1) {
      connection.doNotice(args[0],args[1]);
    }
  }
 else   if (command.equalsIgnoreCase(WHOIS_COMMAND)) {
    if (args.length > 0) {
      connection.doWhois(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(QUIT_COMMAND)) {
    if (args.length > 0) {
      connection.doQuit(args[0]);
    }
 else {
      connection.doQuit();
    }
  }
 else   if (command.equalsIgnoreCase(AWAY_COMMAND)) {
    if (args.length > 0) {
      connection.doAway(args[0]);
    }
 else {
      connection.doAway();
    }
  }
 else   if (command.equalsIgnoreCase(TOPIC_COMMAND)) {
    if (args.length > 1) {
      StringBuffer sb=new StringBuffer();
      for (int i=1; i < args.length; i++) {
        if (i > 1) {
          sb.append(COMMAND_DELIM);
        }
        sb.append(args[i]);
      }
      connection.doTopic(args[0],sb.toString());
    }
 else     if (args.length > 0) {
      connection.doTopic(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(INVITE_COMMAND)) {
    if (args.length > 1) {
      connection.doInvite(args[0],args[1]);
    }
  }
 else {
    trace("String_Node_Str" + command + "String_Node_Str"+ getID());
  }
}

Fixed version (ground truth):
private synchronized void handleCommandMessage(String[] tokens){
  String command=tokens[0];
  while (command.startsWith(COMMAND_PREFIX))   command=command.substring(1);
  String[] args=new String[tokens.length - 1];
  System.arraycopy(tokens,1,args,0,tokens.length - 1);
  if (command.equalsIgnoreCase(JOIN_COMMAND)) {
    if (args.length > 1) {
      connection.doJoin(args[0],args[1]);
    }
 else     if (args.length > 0) {
      connection.doJoin(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(LIST_COMMAND)) {
    if (args.length > 0) {
      connection.doList(args[0]);
    }
 else     connection.doList();
  }
 else   if (command.equalsIgnoreCase(PART_COMMAND)) {
    if (args.length > 1) {
      connection.doPart(args[0],args[1]);
    }
 else     if (args.length > 0) {
      connection.doPart(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(NICK_COMMAND)) {
    if (args.length > 0) {
      connection.doNick(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(NOTICE_COMMAND)) {
    if (args.length > 1) {
      connection.doNotice(args[0],args[1]);
    }
  }
 else   if (command.equalsIgnoreCase(WHOIS_COMMAND)) {
    if (args.length > 0) {
      connection.doWhois(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(QUIT_COMMAND)) {
    if (args.length > 0) {
      connection.doQuit(args[0]);
    }
 else {
      connection.doQuit();
    }
  }
 else   if (command.equalsIgnoreCase(AWAY_COMMAND)) {
    if (args.length > 0) {
      connection.doAway(args[0]);
    }
 else {
      connection.doAway();
    }
  }
 else   if (command.equalsIgnoreCase(TOPIC_COMMAND)) {
    if (args.length > 1) {
      StringBuffer sb=new StringBuffer();
      for (int i=1; i < args.length; i++) {
        if (i > 1) {
          sb.append(COMMAND_DELIM);
        }
        sb.append(args[i]);
      }
      connection.doTopic(args[0],sb.toString());
    }
 else     if (args.length > 0) {
      connection.doTopic(args[0]);
    }
  }
 else   if (command.equalsIgnoreCase(INVITE_COMMAND)) {
    if (args.length > 1) {
      connection.doInvite(args[0],args[1]);
    }
  }
 else {
    trace("String_Node_Str" + command + "String_Node_Str"+ getID());
  }
}