# File lib/recursive_open_struct.rb, line 18 def initialize(hash=nil, args={}) hash ||= {} @recurse_over_arrays = args.fetch(:recurse_over_arrays, false) @preserve_original_keys = args.fetch(:preserve_original_keys, false) @deep_dup = DeepDup.new( recurse_over_arrays: @recurse_over_arrays, preserve_original_keys: @preserve_original_keys ) @table = args.fetch(:mutate_input_hash, false) ? hash : @deep_dup.call(hash) @sub_elements = {} end