# File lib/dm-core/types/discriminator.rb, line 11
      def self.bind(property)
        repository_name = property.repository_name
        model           = property.model
        property_name   = property.name

        model.default_scope(repository_name).update(property_name => model.descendants.dup << model)

        model.class_eval "extend Chainable\n\nextendable do\ndef inherited(model)\nsuper  # setup self.descendants\nset_discriminator_scope_for(model)\nend\n\ndef new(*args, &block)\nif args.size == 1 && args.first.kind_of?(Hash)\ndiscriminator = properties(repository_name).discriminator\nmodel         = discriminator.typecast(args.first[discriminator.name])\n\nif model.kind_of?(Model) && !model.equal?(self)\nreturn model.new(*args, &block)\nend\nend\n\nsuper\nend\n\nprivate\n\ndef set_discriminator_scope_for(model)\nmodel.default_scope(\#{repository_name.inspect}).update(\#{property_name.inspect} => model.descendants.dup << model)\nend\nend\n", __FILE__, __LINE__ + 1
      end