# File lib/kwalify/rule.rb, line 46
    def _init(hash, path="", rule_table={})
      unless hash.is_a?(Hash)
        #* key=:schema_notmap  msg="schema definition is not a mapping."
        raise Kwalify.schema_error(:schema_notmap, nil, (!path || path.empty? ? "/" : path), nil)
      end
      rule = self
      rule_table[hash.__id__] = rule
      ## 'type:' entry
      curr_path = "#{path}/type"
      _init_type_value(hash['type'], rule, curr_path)
      ## other entries
      hash.each do |key, val|
        curr_path = "#{path}/#{key}"
        sym = key.intern
        method = get_init_method(sym)
        unless method
          #* key=:key_unknown  msg="unknown key."
          raise schema_error(:key_unknown, rule, curr_path, "#{key}:")
        end
        if sym == :sequence || sym == :mapping
          __send__(method, val, rule, curr_path, rule_table)
        else
          __send__(method, val, rule, curr_path)
        end
      end
      _check_confliction(hash, rule, path)
      return self
    end