def get(*keys)
keys = key_for(keys)
if keys.size <= 1
if !self.has_key?(keys.first) && block_given?
return yield
else
return self[keys.first]
end
end
keys, key = keys[0..-2], keys[-1]
collection = self
keys.each do |k|
if Map.collection_has?(collection, k)
collection = Map.collection_key(collection, k)
else
collection = nil
end
unless collection.respond_to?('[]')
leaf = collection
return leaf
end
end
if !Map.collection_has?(collection, key) && block_given?
default_value = yield
else
Map.collection_key(collection, key)
end
end