module Sequel::Plugins::Subclasses::ClassMethods

def descendents

All descendent classes of this model.
def descendents
  Sequel.synchronize{subclasses.dup}.map{|x| [x] + x.send(:descendents)}.flatten
end

def freeze_descendents

classes before freezing.
Freeze all descendent classes. This also finalizes the associations for those
def freeze_descendents
  descendents.each(&:finalize_associations).each(&:freeze)
end

def inherited(subclass)

in the subclass.
and initialize a new subclasses instance variable
Add the subclass to this model's current subclasses,
def inherited(subclass)
  super
  Sequel.synchronize{subclasses << subclass}
  on_subclass.call(subclass) if on_subclass
end