public static void DoAnimation(ScratchControl ctl, string rawCode, string prefix)
        {
            if (rawCode.Contains(","))
            {
                rawCode = rawCode.Split(',')[1].TrimStart();
            }
            string    codeString = prefix + "," + rawCode;
            Code      code       = RasterLib.RasterApi.CreateCode(codeString);
            TokenList tokens     = RasterLib.RasterApi.CodeToTokens(code);

            int tokenId     = 0;
            int actualCount = 1;

            while (tokenId < tokens.Count)
            {
                Console.WriteLine(tokenId + " / " + tokens.Count);

                //Skip pen changes, they are boring
                string str = tokens.GetToken(tokenId).ToString();

                if (str.StartsWith("Pen") == false)
                {
                    //Get clean triple-# padded numbering for filenames
                    string prependNumber = "";
                    if (actualCount < 100)
                    {
                        prependNumber += "0";
                    }
                    if (actualCount < 10)
                    {
                        prependNumber += "0";
                    }

                    string curCode = prefix + "-" + prependNumber + actualCount + ",";
                    for (int i = 0; i <= tokenId; i++)
                    {
                        curCode += tokens.GetToken(i) + ";";
                    }
                    if (tokenId > 1)
                    {
                        //Console.WriteLine("Token " + curCode);
                        ExecuteCodeToPng(ctl, curCode);
                        actualCount++;
                    }
                }
                tokenId++;
            }
        }