private static void ParseLayers(JsonReader reader, LottieComposition composition, List <Layer> layers,
                                        Dictionary <long, Layer> layerMap)
        {
            var imageCount = 0;

            reader.BeginArray();
            while (reader.HasNext())
            {
                var layer = LayerParser.Parse(reader, composition);
                if (layer.GetLayerType() == Layer.LayerType.Image)
                {
                    imageCount++;
                }
                layers.Add(layer);
                layerMap[layer.Id] = layer;

                if (imageCount > 4)
                {
                    LottieLog.Warn(
                        $"You have {imageCount} images. Lottie should primarily be used with shapes. If you are using Adobe Illustrator, convert the Illustrator layers to shape layers.");
                }
            }

            reader.EndArray();
        }
        private static void ParseAssets(JsonReader reader, LottieComposition composition, Dictionary <string, List <Layer> > precomps, Dictionary <string, LottieImageAsset> images)
        {
            reader.BeginArray();
            while (reader.HasNext())
            {
                string id = null;
                // For precomps
                var layers   = new List <Layer>();
                var layerMap = new Dictionary <long, Layer>();
                // For images
                var    width          = 0;
                var    height         = 0;
                string imageFileName  = null;
                string relativeFolder = null;
                reader.BeginObject();
                while (reader.HasNext())
                {
                    switch (reader.NextName())
                    {
                    case "id":
                        id = reader.NextString();
                        break;

                    case "layers":
                        reader.BeginArray();
                        while (reader.HasNext())
                        {
                            var layer = LayerParser.Parse(reader, composition);
                            layerMap.Add(layer.Id, layer);
                            layers.Add(layer);
                        }
                        reader.EndArray();
                        break;

                    case "w":
                        width = reader.NextInt();
                        break;

                    case "h":
                        height = reader.NextInt();
                        break;

                    case "p":
                        imageFileName = reader.NextString();
                        break;

                    case "u":
                        relativeFolder = reader.NextString();
                        break;

                    default:
                        reader.SkipValue();
                        break;
                    }
                }
                reader.EndObject();
                if (imageFileName != null)
                {
                    var image =
                        new LottieImageAsset(width, height, id, imageFileName, relativeFolder);
                    images[image.Id] = image;
                }
                else
                {
                    precomps.Add(id, layers);
                }
            }
            reader.EndArray();
        }