module Hashie::Extensions::IndifferentAccess

def self.included(base)

def self.included(base)
  Hashie::Extensions::Dash::IndifferentAccess.maybe_extend(base)
  base.class_eval do
    alias_method :regular_writer, :[]= unless method_defined?(:regular_writer)
    alias_method :[]=, :indifferent_writer
    alias_method :store, :indifferent_writer
    %w[default update replace fetch delete key? values_at].each do |m|
      alias_method "regular_#{m}", m unless method_defined?("regular_#{m}")
      alias_method m, "indifferent_#{m}"
    end
    %w[include? member? has_key?].each do |key_alias|
      alias_method key_alias, :indifferent_key?
    end
    class << self
      def [](*)
        super.convert!
      end
      def try_convert(*)
        (hash = super) && self[hash]
      end
    end
  end
end