# File lib/map.rb, line 675
  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?
      yield #default_value
    else
      Map.collection_key(collection, key)
    end
  end