Program: 13554
Project: 13554
Buggy source:
@Override protected void actionPerformed(GuiButton button){
  RenderPart part=partType.renderParts[partInfo.typeid];
  if (button.id >= 2 && button.id <= 4) {
    this.currTintEdit=button.id - 1;
    this.currTintColour=this.partInfo.tints[this.currTintEdit - 1] & 0xFFFFFF;
    this.hexText.setText(Integer.toHexString(this.currTintColour));
    this.refreshTintPane();
    this.tintReset.enabled=false;
  }
 else   if (button.id == 8) {
    this.currTintColour=this.originalPartInfo.tints[this.currTintEdit - 1] & 0xFFFFFF;
    this.hexText.setText(Integer.toHexString(this.currTintColour));
    this.refreshTintPane();
    tintReset.enabled=false;
  }
 else   if (button.id == 12) {
    this.partInfo=this.originalPartInfo.deepCopy();
    this.selectDefaultListEntry();
    this.currTintEdit=0;
    this.refreshTintPane();
    this.updatePartsData();
  }
 else   if (button.id == 13) {
    this.updatePartsData();
    Tails.setLocalPartsData(partsData);
    Tails.proxy.addPartsData(partsData.uuid,partsData);
    Tails.networkWrapper.sendToServer(new PlayerDataMessage(partsData,false));
    this.mc.displayGuiScreen(null);
  }
 else   if (button.id == 14) {
    this.updatePartsData();
    this.mc.displayGuiScreen(new GuiExport(this,this.partInfo));
  }
 else   if (button.id == 18) {
    if (textureID - 1 >= 0) {
      textureID--;
    }
 else {
      textureID=part.getTextureNames(partInfo.subid).length - 1;
    }
    updatePartsData();
  }
 else   if (button.id == 19) {
    if (part.getTextureNames(partInfo.subid).length > textureID + 1) {
      textureID++;
    }
 else {
      textureID=0;
    }
    updatePartsData();
  }
 else   if (button.id == 20) {
    if (partType.ordinal() + 1 >= PartsData.PartType.values().length) {
      partType=PartsData.PartType.values()[0];
    }
 else {
      partType=PartsData.PartType.values()[partType.ordinal() + 1];
    }
    PartInfo newPartInfo=partsData.getPartInfo(partType);
    if (newPartInfo == null) {
      newPartInfo=new PartInfo(partsData.uuid,false,0,0,0,0xFFFF0000,0xFF00FF00,0xFF0000FF,null,partType);
    }
    partInfo=newPartInfo.deepCopy();
    partTypeButton.displayString=partType.name();
    initPartList();
    refreshTintPane();
  }
}

Fixed version (ground truth):
@Override protected void actionPerformed(GuiButton button){
  RenderPart part=partType.renderParts[partInfo.typeid];
  if (button.id >= 2 && button.id <= 4) {
    this.currTintEdit=button.id - 1;
    this.currTintColour=this.partInfo.tints[this.currTintEdit - 1] & 0xFFFFFF;
    this.hexText.setText(Integer.toHexString(this.currTintColour));
    this.refreshTintPane();
    this.tintReset.enabled=false;
  }
 else   if (button.id == 8) {
    this.currTintColour=this.originalPartInfo.tints[this.currTintEdit - 1] & 0xFFFFFF;
    this.hexText.setText(Integer.toHexString(this.currTintColour));
    this.refreshTintPane();
    tintReset.enabled=false;
  }
 else   if (button.id == 12) {
    this.partInfo=this.originalPartInfo.deepCopy();
    this.selectDefaultListEntry();
    this.currTintEdit=0;
    this.refreshTintPane();
    this.updatePartsData();
  }
 else   if (button.id == 13) {
    this.updatePartsData();
    Tails.setLocalPartsData(partsData);
    Tails.proxy.addPartsData(partsData.uuid,partsData);
    Tails.networkWrapper.sendToServer(new PlayerDataMessage(partsData,false));
    this.mc.displayGuiScreen(null);
  }
 else   if (button.id == 14) {
    this.updatePartsData();
    this.mc.displayGuiScreen(new GuiExport(this,this.partInfo));
  }
 else   if (button.id == 18) {
    if (textureID - 1 >= 0) {
      textureID--;
    }
 else {
      textureID=part.getTextureNames(partInfo.subid).length - 1;
    }
    updatePartsData();
  }
 else   if (button.id == 19) {
    if (part.getTextureNames(partInfo.subid).length > textureID + 1) {
      textureID++;
    }
 else {
      textureID=0;
    }
    updatePartsData();
  }
 else   if (button.id == 20) {
    if (partType.ordinal() + 1 >= PartsData.PartType.values().length) {
      partType=PartsData.PartType.values()[0];
    }
 else {
      partType=PartsData.PartType.values()[partType.ordinal() + 1];
    }
    PartInfo newPartInfo=partsData.getPartInfo(partType);
    if (newPartInfo == null) {
      newPartInfo=new PartInfo(partsData.uuid,false,0,0,0,0xFFFF0000,0xFF00FF00,0xFF0000FF,null,partType);
    }
    originalPartInfo=newPartInfo.deepCopy();
    partInfo=originalPartInfo.deepCopy();
    partTypeButton.displayString=partType.name();
    initPartList();
    refreshTintPane();
  }
}