public void Deserialize(Stream input, Endian endian, StringTable strings)
        {
            while (true)
            {
                var type = input.ReadValueEnum <PropertyType>(endian);
                if (type == PropertyType.Invalid)
                {
                    break;
                }

                var hash     = input.ReadValueU32(endian);
                var property = Object.CreateProperty(type);
                property.Deserialize(input, endian, strings);
                this.Properties.Add(hash, property);
            }
        }