class Grape::Util::Lazy::ValueEnumerable

def [](key)

def [](key)
  return Value.new(nil).reached_by(access_keys, key) if @value_hash[key].nil?
  @value_hash[key].reached_by(access_keys, key)
end

def []=(key, value)

def []=(key, value)
  value_class = case value
                when Hash
                  ValueHash
                when Array
                  ValueArray
                else
                  Value
                end
  @value_hash[key] = value_class.new(value)
end

def fetch(access_keys)

def fetch(access_keys)
  access_keys.reduce(self) { |node, key| node[key] }
end