protected override IEnumerable <Animate> Replace(Level level, Animate obj)
        {
            var reflected      = obj.AsDynamic();
            var levelReflected = level.AsDynamic();

            var treasureChest =
                new TreasureChestEvent(level, new Point(obj.Position.X, obj.Position.Y + YOffset), -1, reflected._objectSpec);

            var trigger = new TriggerAfterLootDrop(level, treasureChest, () =>
            {
                bool hasSpindle = level.GameSave.HasRelic(EInventoryRelicType.TimespinnerSpindle);
                if (hasSpindle)
                {
                    level.GameSave.Inventory.RelicInventory.Inventory.Remove((int)EInventoryRelicType.TimespinnerSpindle);
                }

                ((Queue <ScriptAction>)levelReflected._waitingScripts).Clear();

                reflected._onPickedUpAction();

                if (!hasSpindle)
                {
                    level.GameSave.Inventory.RelicInventory.Inventory.Remove((int)EInventoryRelicType.TimespinnerSpindle);
                }

                var scripts       = ((Queue <ScriptAction>)levelReflected._waitingScripts).ToArray().ToList();
                var giveOrbScript = scripts.Single(s => s.AsDynamic().ScriptType == EScriptType.RelicOrbGetToast);

                giveOrbScript.AsDynamic().ScriptType  = EScriptType.Wait;
                giveOrbScript.AsDynamic().ActionTimer = 0f;
            });

            return(new Animate[] { treasureChest, trigger });
        }