# File lib/gibbler.rb, line 322
    def __gibbler(digest_type=nil)
      klass = self.class
      d = []
      gibbler_debug :gibbler_fields, gibbler_fields
      gibbler_fields.each do |n|
        value = instance_variable_get("@#{n}")
        unless value.respond_to? :__gibbler
          gibbler_debug klass, :skipping, n
          next
        end
        d << '%s:%s:%s' % [value.class, n, value.__gibbler(digest_type)]
      end
      d = d.join(':').__gibbler(digest_type)
      a = Gibbler.digest "%s:%d:%s" % [klass, d.size, d], digest_type
      gibbler_debug klass, a, [klass, d.size, d]
      a
    end