public void SetProgramData(Program program, int index)
{
string data = Encoding.UTF8.GetString(program.Data);
var values = Deserialize(data);
if (values.Count != ParameterInfo.Length)
throw new Exception("Illegal program data. Number of parameters does not match");
for (int i = 0; i < ParameterInfo.Length; i++)
ParameterInfo[i].Value = values[i];
}