def dig(key, *rest)
      value = get(key)
      if rest.empty? || value.nil?
        return value
      elsif value.respond_to?(:dig)
        return value.dig(*rest)
      end
    end
def dig(key, *rest)
      value = get(key)
      if rest.empty? || value.nil?
        return value
      elsif value.respond_to?(:dig)
        return value.dig(*rest)
      end
    end
Return the value of successively indexing into a collection.
 If any of the keys is not present in the collection, return `nil`.
 keys that the Erlang type doesn't understand, raises an argument error

 @example
   m = Erlang::Map[:a => 9, :b => Erlang::Tuple['a', 'b'], :e => nil]
   m.dig(:b, 0)    # => "a"
   m.dig(:b, 5)    # => nil
   m.dig(:b, 0, 0) # => nil
   m.dig(:b, :a)   # ArgumentError
 @param key to fetch from the collection
 @return [Object]