Program: 5518
Project: 5518
Buggy source:
public CC2520SPI(CC2520 cc){
  cc2520=cc;
  SPICommand[] spiCommands={new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      System.out.println(name + "String_Node_Str" + spiData.getSPIData()[1]);
      cc2520.instructionBuffer=spiData.getSPIData()[1];
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 2) {
        cAdr=adr.getValue();
      }
 else       if (spiData.getSPIlen() > 2) {
        spiData.outputSPI(cc2520.readMemory(cAdr));
        cAdr=(cAdr + 1) & 0x3ff;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=-1;
    public boolean dataReceived(    int data){
      int len=spiData.getSPIlen();
      int sdata[]=spiData.getSPIData();
      if (len == 2) {
        cAdr=adr.getValue();
      }
 else       if (len > 2) {
        cc2520.writeMemory(cAdr,data);
        cAdr=(cAdr + 1) & 0x3ff;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() > 1) {
        cc2520.writeTXFIFO(data);
      }
      return true;
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.stxon();
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.stxoncca();
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.flushRX();
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.flushTX();
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 1) {
        cAdr=adr.getValue();
      }
 else {
        spiData.outputSPI(cc2520.readMemory(cAdr));
        cAdr=(cAdr + 1) & 0x7f;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 1) {
        cAdr=adr.getValue();
      }
 else {
        cc2520.writeMemory(cAdr,data);
        cAdr=(cAdr + 1) & 0x7f;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
};
  for (int i=0; i < spiCommands.length; i++) {
    SPICommand c=spiCommands[i];
    int maxv=1 << (8 - c.bitCount);
    int v=c.value;
    for (int j=0; j < maxv; j++) {
      System.out.printf(c.name + "String_Node_Str",(v + j));
      if (commands[v + j] != null) {
        System.out.println("String_Node_Str" + commands[v + j].name);
      }
      commands[v + j]=c;
    }
  }
}

Fixed version (ground truth):
public CC2520SPI(CC2520 cc){
  cc2520=cc;
  SPICommand[] spiCommands={new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      System.out.println(name + "String_Node_Str" + spiData.getSPIData()[1]);
      cc2520.instructionBuffer=spiData.getSPIData()[1];
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 2) {
        cAdr=adr.getValue();
      }
 else       if (spiData.getSPIlen() > 2) {
        spiData.outputSPI(cc2520.readMemory(cAdr));
        cAdr=(cAdr + 1) & 0x3ff;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=-1;
    public boolean dataReceived(    int data){
      int len=spiData.getSPIlen();
      int sdata[]=spiData.getSPIData();
      if (len == 2) {
        cAdr=adr.getValue();
      }
 else       if (len > 2) {
        cc2520.writeMemory(cAdr,data);
        cAdr=(cAdr + 1) & 0x3ff;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() > 1) {
        System.out.printf("String_Node_Str",data);
        cc2520.writeTXFIFO(data);
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.stxon();
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.stxoncca();
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.flushRX();
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    public void executeSPICommand(){
      cc2520.flushTX();
    }
  }
,new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520),new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 1) {
        cAdr=adr.getValue();
      }
 else {
        spiData.outputSPI(cc2520.readMemory(cAdr));
        cAdr=(cAdr + 1) & 0x7f;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
,new SPICommand("String_Node_Str",cc2520){
    BitField adr=getBitField("String_Node_Str");
    int cAdr=0;
    public boolean dataReceived(    int data){
      if (spiData.getSPIlen() == 1) {
        cAdr=adr.getValue();
      }
 else {
        cc2520.writeMemory(cAdr,data);
        cAdr=(cAdr + 1) & 0x7f;
      }
      return true;
    }
    public void executeSPICommand(){
    }
  }
};
  for (int i=0; i < spiCommands.length; i++) {
    SPICommand c=spiCommands[i];
    int maxv=1 << (8 - c.bitCount);
    int v=c.value;
    for (int j=0; j < maxv; j++) {
      System.out.printf(c.name + "String_Node_Str",(v + j));
      if (commands[v + j] != null) {
        System.out.println("String_Node_Str" + commands[v + j].name);
      }
      commands[v + j]=c;
    }
  }
}