public static string[] DecodePropertyList(this ObjectPropertyList list, ClilocLNG lng) { if (lng == ClilocLNG.NULL) { lng = DefaultLanguage; } int length; var data = list.Compile(false, out length); var msgs = new List<string>(); var reader = new PacketReader(data, length, false); reader.Seek(15, SeekOrigin.Begin); for (int i = 15; i < data.Length - 4;) { int index = reader.ReadInt32(); int paramLength = reader.ReadInt16() / 2; string param = String.Empty; if (paramLength > 0) { param = reader.ReadUnicodeStringLE(paramLength); } msgs.Add(GetString(lng, index, param)); i += (6 + paramLength); } return msgs.ToArray(); }