# File lib/pluginfactory.rb, line 208
        def inherited( subclass )
                keys = [ subclass ]

                # If it's not an anonymous class, make some keys out of variants of its name
                if subclass.name
                        simple_name = subclass.name.sub( /#<Class:0x[[:xdigit:]]+>::/i, '' )
                        keys << simple_name << simple_name.downcase

                        # Handle class names like 'FooBar' for 'Bar' factories.
                        PluginFactory.log.debug "Inherited %p for %p-type plugins" % [ subclass, self.factory_type ]
                        if subclass.name.match( /(?:.*::)?(\w+)(?:#{self.factory_type})/i )
                                keys << Regexp.last_match[1].downcase
                        else
                                keys << subclass.name.sub( /.*::/, '' ).downcase
                        end
                else
                        PluginFactory.log.debug "  no name-based variants for anonymous subclass %p" % [ subclass ]
                end

                keys.compact.uniq.each do |key|
                        PluginFactory.log.info "Registering %s derivative of %s as %p" %
                                [ subclass.name, self.name, key ]
                        self.derivatives[ key ] = subclass
                end

                super
        end