int newPatchSize = p.sysex.length - PeaveyPC1600SingleDriver.NON_DATA_SIZE;
int newPatchSize = ((Patch)p).sysex.length - PeaveyPC1600SingleDriver.NON_DATA_SIZE;
  public void putPatch(Patch bank, Patch p, int patchNum) {    generateIndex(bank);    // Set the <name>    setPatchName(bank, patchNum, p.getDriver().getPatchName(p));    // Update the <data>    int oldPatchSize = patchIndex[patchNum + 1] - patchIndex[patchNum];    int newPatchSize = p.sysex.length - PeaveyPC1600SingleDriver.NON_DATA_SIZE;    bank.sysex = Utility.byteArrayReplace(      bank.sysex, FIRST_PRESET_START + patchIndex[patchNum], oldPatchSize,      p.sysex, PeaveyPC1600SingleDriver.PATCH_DATA_START, newPatchSize);    // Update the <memory pointers>    int sizeDiff = newPatchSize - oldPatchSize;    for (int i = patchNum + 1; i < getNumPatches(); i++) {      patchIndex[i] += sizeDiff;    }    NibbleSysex nibbleSysex = new NibbleSysex(bank.sysex, FIRST_PRESET_POINTER_START);    for (int i = 0; i < getNumPatches(); i++) {      nibbleSysex.putNibbleInt(patchIndex[i]/PRESET_POINTER_FACTOR, PRESET_POINTER_BYTES, NIBBLE_MULTIPLIER);    }  }