Revert "Declare that animation-instance wants artboard-instance"

This reverts commit 03c7cf24f94e9dfcfa20ee34d8580c73f1799769.
diff --git a/include/rive/animation/blend_state_instance.hpp b/include/rive/animation/blend_state_instance.hpp
index 38c5083..9b1a120 100644
--- a/include/rive/animation/blend_state_instance.hpp
+++ b/include/rive/animation/blend_state_instance.hpp
@@ -23,7 +23,7 @@
         const T* blendAnimation() const { return m_BlendAnimation; }
         const LinearAnimationInstance* animationInstance() const { return &m_AnimationInstance; }
 
-        BlendStateAnimationInstance(const T* blendAnimation, ArtboardInstance* instance) :
+        BlendStateAnimationInstance(const T* blendAnimation, Artboard* instance) :
             m_BlendAnimation(blendAnimation),
             m_AnimationInstance(blendAnimation->animation(), instance)
         {}
diff --git a/include/rive/animation/linear_animation_instance.hpp b/include/rive/animation/linear_animation_instance.hpp
index dcbdc67..d03b8db 100644
--- a/include/rive/animation/linear_animation_instance.hpp
+++ b/include/rive/animation/linear_animation_instance.hpp
@@ -8,7 +8,7 @@
     class LinearAnimationInstance {
     private:
         const LinearAnimation* m_Animation = nullptr;
-        ArtboardInstance* m_ArtboardInstance;
+        Artboard* m_ArtboardInstance;
         float m_Time;
         float m_TotalTime;
         float m_LastTotalTime;
@@ -18,7 +18,7 @@
         int m_LoopValue = -1;
 
     public:
-        LinearAnimationInstance(const LinearAnimation*, ArtboardInstance* instance);
+        LinearAnimationInstance(const LinearAnimation*, Artboard* instance);
 
         // Advance the animation by the specified time. Returns true if the
         // animation will continue to animate after this advance.
diff --git a/include/rive/animation/nested_linear_animation.hpp b/include/rive/animation/nested_linear_animation.hpp
index e96df87..7940c51 100644
--- a/include/rive/animation/nested_linear_animation.hpp
+++ b/include/rive/animation/nested_linear_animation.hpp
@@ -6,13 +6,12 @@
     class LinearAnimationInstance;
     class NestedLinearAnimation : public NestedLinearAnimationBase {
     protected:
-        std::unique_ptr<LinearAnimationInstance> m_AnimationInstance;
+        LinearAnimationInstance* m_AnimationInstance = nullptr;
 
     public:
-        NestedLinearAnimation();
-        ~NestedLinearAnimation() override;
+        ~NestedLinearAnimation();
 
-        void initializeAnimation(ArtboardInstance*) override;
+        void initializeAnimation(Artboard* artboard) override;
     };
 } // namespace rive
 
diff --git a/include/rive/animation/nested_remap_animation.hpp b/include/rive/animation/nested_remap_animation.hpp
index f71c229..9303572 100644
--- a/include/rive/animation/nested_remap_animation.hpp
+++ b/include/rive/animation/nested_remap_animation.hpp
@@ -7,7 +7,7 @@
     public:
         void timeChanged() override;
         void advance(float elapsedSeconds) override;
-        void initializeAnimation(ArtboardInstance*) override;
+        void initializeAnimation(Artboard* artboard) override;
     };
 } // namespace rive
 
diff --git a/include/rive/animation/nested_state_machine.hpp b/include/rive/animation/nested_state_machine.hpp
index aa30f02..d96c07b 100644
--- a/include/rive/animation/nested_state_machine.hpp
+++ b/include/rive/animation/nested_state_machine.hpp
@@ -3,12 +3,10 @@
 #include "rive/generated/animation/nested_state_machine_base.hpp"
 #include <stdio.h>
 namespace rive {
-    class ArtboardInstance;
-
     class NestedStateMachine : public NestedStateMachineBase {
     public:
         void advance(float elapsedSeconds) override;
-        void initializeAnimation(ArtboardInstance*) override;
+        void initializeAnimation(Artboard* artboard) override;
     };
 } // namespace rive
 
diff --git a/include/rive/nested_animation.hpp b/include/rive/nested_animation.hpp
index 1f4491b..bbc0a87 100644
--- a/include/rive/nested_animation.hpp
+++ b/include/rive/nested_animation.hpp
@@ -3,8 +3,6 @@
 #include "rive/generated/nested_animation_base.hpp"
 #include <stdio.h>
 namespace rive {
-    class ArtboardInstance;
-
     class NestedAnimation : public NestedAnimationBase {
     public:
         StatusCode onAddedDirty(CoreContext* context) override;
@@ -14,7 +12,7 @@
 
         // Initialize the animation (make instances as necessary) from the
         // source artboard.
-        virtual void initializeAnimation(ArtboardInstance*) = 0;
+        virtual void initializeAnimation(Artboard* artboard) = 0;
     };
 } // namespace rive
 
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp
index 1c8badb..4e6e987 100644
--- a/src/animation/linear_animation_instance.cpp
+++ b/src/animation/linear_animation_instance.cpp
@@ -6,7 +6,7 @@
 using namespace rive;
 
 LinearAnimationInstance::LinearAnimationInstance(const LinearAnimation* animation,
-                                                 ArtboardInstance* instance) :
+                                                 Artboard* instance) :
     m_Animation(animation),
     m_ArtboardInstance(instance),
     m_Time(animation->enableWorkArea() ? (float)animation->workStart() / animation->fps() : 0),
diff --git a/src/animation/nested_linear_animation.cpp b/src/animation/nested_linear_animation.cpp
index e425c4f..2d418d1 100644
--- a/src/animation/nested_linear_animation.cpp
+++ b/src/animation/nested_linear_animation.cpp
@@ -3,10 +3,9 @@
 
 using namespace rive;
 
-NestedLinearAnimation::NestedLinearAnimation() {}
-NestedLinearAnimation::~NestedLinearAnimation() {}
+NestedLinearAnimation::~NestedLinearAnimation() { delete m_AnimationInstance; }
 
-void NestedLinearAnimation::initializeAnimation(ArtboardInstance* artboard) {
-    m_AnimationInstance = std::make_unique<LinearAnimationInstance>(artboard->animation(animationId()),
-                                                                    artboard);
+void NestedLinearAnimation::initializeAnimation(Artboard* artboard) {
+    assert(m_AnimationInstance == nullptr);
+    m_AnimationInstance = new LinearAnimationInstance(artboard->animation(animationId()), artboard);
 }
\ No newline at end of file
diff --git a/src/animation/nested_remap_animation.cpp b/src/animation/nested_remap_animation.cpp
index 2af1522..fd146eb 100644
--- a/src/animation/nested_remap_animation.cpp
+++ b/src/animation/nested_remap_animation.cpp
@@ -10,7 +10,7 @@
     }
 }
 
-void NestedRemapAnimation::initializeAnimation(ArtboardInstance* artboard) {
+void NestedRemapAnimation::initializeAnimation(Artboard* artboard) {
     Super::initializeAnimation(artboard);
     timeChanged();
 }
diff --git a/src/animation/nested_state_machine.cpp b/src/animation/nested_state_machine.cpp
index 139572a..2b3ad7c 100644
--- a/src/animation/nested_state_machine.cpp
+++ b/src/animation/nested_state_machine.cpp
@@ -4,4 +4,4 @@
 
 void NestedStateMachine::advance(float elapsedSeconds) {}
 
-void NestedStateMachine::initializeAnimation(ArtboardInstance*) {}
\ No newline at end of file
+void NestedStateMachine::initializeAnimation(Artboard* artboard) {}
\ No newline at end of file
diff --git a/src/nested_artboard.cpp b/src/nested_artboard.cpp
index 5eec148..156a9fd 100644
--- a/src/nested_artboard.cpp
+++ b/src/nested_artboard.cpp
@@ -82,12 +82,9 @@
     // does require that we always use an artboard instance (not just the source
     // artboard) when working with nested artboards, but in general this is good
     // practice for any loaded Rive file.
-    assert(m_NestedInstance == nullptr || m_NestedInstance->isInstance());
-
-    if (m_NestedInstance != nullptr && m_NestedInstance->isInstance()) {
-        auto abi = static_cast<ArtboardInstance*>(m_NestedInstance);
+    if (m_NestedInstance != nullptr) {
         for (auto animation : m_NestedAnimations) {
-            animation->initializeAnimation(abi);
+            animation->initializeAnimation(m_NestedInstance);
         }
     }
     return Super::onAddedClean(context);