It's kind of a crazy case. We have a pretty complex structure due to some legacy promises. I'll see if I can write some tests for it, but let me semi explain it here.

```
class Parent < ActiveRecord::Base
  acts_as_paranoid
  has_many :sections, :dependent => destroy

class Section < ActiveRecord::Base
  acts_as_paranoid
  belongs_to :meta_thing, :polymorphic => true, :dependent => destroy

class SomeThing < ActiveRecord::Base
  acts_as_paranoid
  has_one :section, :as => :meta_thing

class AnotherThing < ActiveRecord::Base
  acts_as_paranoid
  has_one :section, :as => :meta_thing
```

So in this situation, we want to delete, then recover the Parent objects. But when you delete/recover, we also want it to propagate down. The problem happens when you you try and call `reflection.klass` when looking at the reflection for Section belongs_to :meta thing, reflection.klass tries to constantize Section::MetaThing, but that class doesn't actually exist.

Instead, we can look at the foreign_type, which should be the column "meta_thing_type", and would hold a value of either "SomeThing" or "AnotherThing". So in reflection_class() we are calling `section.meta_thing_type.constantize`, giving us one of the two child classes, SomeThing or AnotherThing