# File lib/recursive_open_struct.rb, line 47
  def [](name)
    key_name = _get_key_from_table_(name)
    v = @table[key_name]
    if v.is_a?(Hash)
      @sub_elements[key_name] ||= self.class.new(
        v,
        recurse_over_arrays: @recurse_over_arrays,
        preserve_original_keys: @preserve_original_keys,
        mutate_input_hash: true
      )
    elsif v.is_a?(Array) and @recurse_over_arrays
      @sub_elements[key_name] ||= recurse_over_array(v)
      @sub_elements[key_name] = recurse_over_array(@sub_elements[key_name])
    else
      v
    end
  end