public void Read(BinaryInputStream s)
        {
            int size = s.ReadInt32();
            int len = s.ReadInt32();
            if (len != 56)
            {
                throw new Exception("invalid element size in layout");
            }
            chips = s.ReadSerializableArray(size, bs => new ChipElement());

            resources = s.ReadObjectArray<AbstractResourceInfoObject>();
        }
        public override void Read(BinaryInputStream s)
        {
            properties.ReadFromStream(s);

            int size = s.ReadInt32();
            int len = s.ReadInt32();
            switch (len)
            {
                case 24: is_short = true; break;
                case 40: is_short = false; break;
                default:
                    throw new Exception("invalid element size in layout");
            }

            elements = s.ReadSerializableArray(size, bs => new Element());
        }