def validate
      @@logger.debug("stub: validate called")
      
      send(:enforce_types)
      
      @data['objectClass'].each do |klass|
        unless klass.class == String
          raise TypeError, "Value in objectClass array is not a String. (#{klass.class}:#{klass.inspect})"
        end
        unless Base.schema.names("objectClasses").member? klass
          raise ObjectClassError, "objectClass '#{klass}' unknown to LDAP server."
        end
      end
      
      required_classes().each do |oc|
        unless @data['objectClass'].member? oc.to_s
          raise ObjectClassError, "'#{oc}' must be a defined objectClass for class '#{self.class}' as set in the ldap_mapping"
        end
      end
      
      @data['objectClass'].each do |objc|
        @must.each do |req_attr|
          
          deref = @attr_methods[req_attr.downcase]
          
          @data[deref] = [] if @data[deref].nil?
          
          if @data[deref].empty?
            raise AttributeEmpty,
              "objectClass '#{objc}' requires attribute '#{Base.schema.attribute_aliases(req_attr).join(', ')}'"
          end
        end
      end
      @@logger.debug("stub: validate finished")
    end