# File lib/activeldap/schema2.rb, line 155
    def class_attributes(objc)
      if @@class_cache.has_key? objc
        return @@class_cache[objc]
      end

      # Setup the cache
      @@class_cache[objc] = {}

      # First get all the current level attributes
      @@class_cache[objc] = {:must => attr('objectClasses', objc, 'MUST'), 
        :may => attr('objectClasses', objc, 'MAY')}

      # Now add all attributes from the parent object (SUPerclasses)
      # Hopefully an iterative approach will be pretty speedy
      # 1. build complete list of SUPs
      # 2. Add attributes from each
      sups = attr('objectClasses', objc, 'SUP')
      loop do 
        start_size = sups.size
        new_sups = []
        sups.each do |sup|
          new_sups += attr('objectClasses', sup, 'SUP')
        end

        sups += new_sups
        sups.uniq!
        break if sups.size == start_size
      end
      sups.each do |sup|
        @@class_cache[objc][:must] += attr('objectClasses', sup, 'MUST')
        @@class_cache[objc][:may] += attr('objectClasses', sup, 'MAY')
      end

      # Clean out the dupes.
      @@class_cache[objc][:must].uniq!
      @@class_cache[objc][:may].uniq!

      # Return the cached value
      return @@class_cache[objc].dup
    end