public void ParseFromBank(MemoryStream ms, bool workaroundForLegacy) { ProgramName = ms.ReadNullTerminatedString(PRESET_NAME_LENGTH); StuffAfterProgramName = ms.ReadBytes(STUFF_AFTER_PRESET_NAME_LENGTH); var endPos = ms.Position + NumParameters * 4; if (endPos > ms.Length) { if (workaroundForLegacy) { ProgramData = ms.ReadBytes((NumParameters - 1) * 4); ProgramData = ProgramData.Concat(WORKAROUND_FILLER).ToArray(); } else { throw new SpireException("Unexpected end of file."); } } else { ProgramData = ms.ReadBytes(NumParameters * 4); } }