internal static LayerAnimation Read(Stream input, Endian endian)
        {
            var layerId = input.ReadValueU32(endian);
            var visible = input.ReadValueB8();

            var frameCount = input.ReadValueU32(endian);

            if (frameCount >= 5000)
            {
                throw new FormatException("too many layer frames");
            }
            var frames = new LayerFrame[frameCount];

            for (uint i = 0; i < frameCount; i++)
            {
                frames[i] = LayerFrame.Read(input, endian);
            }

            LayerAnimation instance;

            instance.LayerId = layerId;
            instance.Visible = visible;
            instance.Frames  = frames;
            return(instance);
        }