private static void UpdateIfLogicEndBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            XmlIfLogicEndBrickReference oldIfLogicBeginBrickReference;
            XmlIfLogicEndBrickReference newIfLogicBeginBrickReference;

            var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];

            if (oldBrick is XmlIfLogicBeginBrick)
            {
                oldIfLogicBeginBrickReference = (oldBrick as XmlIfLogicBeginBrick).IfLogicEndBrickReference;
                newIfLogicBeginBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlIfLogicBeginBrick)
                    .IfLogicEndBrickReference;
            }
            else
            {
                oldIfLogicBeginBrickReference = (oldBrick as XmlIfLogicElseBrick).IfLogicEndBrickReference;
                newIfLogicBeginBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlIfLogicElseBrick)
                    .IfLogicEndBrickReference;
            }

            var count = 0;

            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                if (brick == oldIfLogicBeginBrickReference.IfLogicEndBrick)
                {
                    newIfLogicBeginBrickReference.IfLogicEndBrick = newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[count] as XmlIfLogicEndBrick;
                    return;
                }
                count++;
            }
        }
        private static void UpdateLoopEndBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            XmlLoopEndBrickReference oldLoopEndBrickReference;
            XmlLoopEndBrickReference newLoopEndBrickReference;

            var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];

            if (oldBrick is XmlForeverBrick)
            {
                //oldLoopEndBrickReference = (oldBrick as XmlForeverBrick).LoopEndBrickReference;

                /*newLoopEndBrickReference =
                 *  (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlForeverBrick)
                 *      .LoopEndBrickReference;*/
            }
            else
            {
                //oldLoopEndBrickReference = (oldBrick as XmlRepeatBrick).LoopEndBrickReference;

                /* newLoopEndBrickReference =
                 *  (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlRepeatBrick)
                 *      .LoopEndBrickReference;*/
            }

            var count = 0;

            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                count++;
            }
        }
        public static void UpdateReferencesAfterCopy(XmlSprite oldSprite, XmlSprite newSprite)
        {
            var scriptCount = 0;

            foreach (var script in oldSprite.Scripts.Scripts)
            {
                var brickCount = 0;
                foreach (var brick in script.Bricks.Bricks)
                {
                    /* //TODO outdated? if (brick is XmlChangeVariableBrick || brick is XmlSetVariableBrick)
                     *  UpdateVariableReference(oldSprite, newSprite, scriptCount, brickCount);
                     * else */
                    if (brick is XmlSetLookBrick)
                    {
                        UpdateLookReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlForeverBrick || brick is XmlRepeatBrick)
                    {
                        UpdateLoopEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlIfLogicBeginBrick)
                    {
                        UpdateIfLogicElseBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlIfLogicElseBrick)
                    {
                        UpdateIfLogicBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlIfLogicEndBrick)
                    {
                        UpdateIfLogicBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicElseBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlLoopEndBrick)
                    {
                        UpdateLoopBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlPlaySoundBrick)
                    {
                        UpdateSoundReference(oldSprite, newSprite, scriptCount, brickCount);
                    }

                    brickCount++;
                }

                scriptCount++;
            }
        }
        /* //TODO outdated? private static void UpdateVariableReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
         * {
         *  XmlUserVariableReference oldVariableReference;
         *  XmlUserVariableReference newVariableReference;
         *
         *  var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];
         *  /*if (oldBrick is XmlChangeVariableBrick)
         *  {*/
        /*oldVariableReference = (oldBrick as XmlChangeVariableBrick).UserVariableReference;
         * newVariableReference =
         *  (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlChangeVariableBrick)
         *      .UserVariableReference;*/
        /*}
         * else
         * {
         *  oldVariableReference = (oldBrick as XmlSetVariableBrick).UserVariableReference;
         *  newVariableReference =
         *      (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetVariableBrick)
         *          .UserVariableReference;
         * }*/

        /*
         *  var entries = XmlParserTempProjectHelper.Program.VariableList.ObjectVariableList.ObjectVariableEntries;
         *  foreach (var oldEntry in entries)
         *      if (oldEntry.Sprite == oldSprite)
         *      {
         *          var variableCount = 0;
         *          foreach (var variable in oldEntry.VariableList.UserVariables)
         *          {
         *              if (variable == oldVariableReference.UserVariable)
         *                  foreach (var newEntry in entries)
         *                  {
         *                      if (newEntry.Sprite == newSprite)
         *                      {
         *                          newVariableReference.UserVariable =
         *                              newEntry.VariableList.UserVariables[variableCount];
         *
         *                          return;
         *                      }
         *                  }
         *              variableCount++;
         *          }
         *      }
         * }*/

        private static void UpdateLoopBeginBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            //var oldLoopBeginBrickReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlLoopEndBrick).LoopBeginBrickReference;
            //var newLoopBeginBrickReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlLoopEndBrick).LoopBeginBrickReference;

            var count = 0;

            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                /*if (brick == oldLoopBeginBrickReference.LoopBeginBrick)
                 * {
                 *  newLoopBeginBrickReference.LoopBeginBrick = newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[count] as XmlLoopBeginBrick;
                 *  return;
                 * }*/
                count++;
            }
        }
        private static void UpdateSoundReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            var oldSoundReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlPlaySoundBrick).XmlSoundReference;
            var newSoundReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlPlaySoundBrick).XmlSoundReference;

            var soundCount = 0;

            foreach (var sound in oldSprite.Sounds.Sounds)
            {
                if (sound == oldSoundReference.Sound)
                {
                    newSoundReference.Sound = newSprite.Sounds.Sounds[soundCount];
                    return;
                }

                soundCount++;
            }
        }
        private static void UpdateLookReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            var oldLookReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetLookBrick).XmlLookReference;
            var newLookReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetLookBrick).XmlLookReference;

            var lookCount = 0;

            foreach (var look in oldSprite.Looks.Looks)
            {
                if (look == oldLookReference.Look)
                {
                    newLookReference.Look = newSprite.Looks.Looks[lookCount];
                    return;
                }

                lookCount++;
            }
        }