class Hashie::Mash

def method_missing(method_name, *args, &blk)

def method_missing(method_name, *args, &blk)
  return self.[](method_name, &blk) if key?(method_name)
  suffixes_regex = ALLOWED_SUFFIXES.join
  match = method_name.to_s.match(/(.*?)([#{suffixes_regex}]?)$/)
  case match[2]
  when '='
    self[match[1]] = args.first
  when '?'
    !!self[match[1]]
  when '!'
    initializing_reader(match[1])
  when '_'
    underbang_reader(match[1])
  else
    default(method_name)
  end
end