module Hashie::Extensions::IndifferentAccess

def self.included(base)

def self.included(base)
  base.class_eval do
    alias_method :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
      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