# File lib/declarative_authorization/authorization.rb, line 76
    def initialize (reader = nil)
      reader = Reader::DSLReader.factory(reader || AUTH_DSL_FILES)

      @privileges = reader.privileges_reader.privileges
      # {priv => [[priv, ctx],...]}
      @privilege_hierarchy = reader.privileges_reader.privilege_hierarchy
      @auth_rules = reader.auth_rules_reader.auth_rules
      @roles = reader.auth_rules_reader.roles
      @omnipotent_roles = reader.auth_rules_reader.omnipotent_roles
      @role_hierarchy = reader.auth_rules_reader.role_hierarchy

      @role_titles = reader.auth_rules_reader.role_titles
      @role_descriptions = reader.auth_rules_reader.role_descriptions
      @reader = reader
      
      # {[priv, ctx] => [priv, ...]}
      @rev_priv_hierarchy = {}
      @privilege_hierarchy.each do |key, value|
        value.each do |val| 
          @rev_priv_hierarchy[val] ||= []
          @rev_priv_hierarchy[val] << key
        end
      end
      @rev_role_hierarchy = {}
      @role_hierarchy.each do |higher_role, lower_roles|
        lower_roles.each do |role|
          (@rev_role_hierarchy[role] ||= []) << higher_role
        end
      end
    end