# File lib/hashr.rb, line 30
  def initialize(klass, data = nil, defaults = nil, &block)
    ::Kernel.fail ::ArgumentError.new("Invalid input #{data.inspect}") unless data.nil? || data.is_a?(::Hash)

    data = (data || {}).deep_symbolize_keys
    defaults = (defaults || klass.defaults || {}).deep_symbolize_keys

    @class = klass
    @data = defaults.deep_merge(data).inject({}) do |result, (key, value)|
      result.merge(key => value.is_a?(::Hash) ? ::Hashr.new(value, {}) : value)
    end
  end