   * `put/3`
   * `reduce/3`
   * `size/1`
-  * `update/4`
 
   All functions, except `reduce/3`, are required by the Dict behaviour.
   `reduce/3` must be implemtented as per the Enumerable protocol.

        end) |> elem(1)
      end

      defoverridable merge: 2, merge: 3, equal?: 2, to_list: 1, keys: 1,
                     values: 1, take: 2, drop: 2, get: 2, get: 3, fetch!: 2,
                     has_key?: 2, put_new: 3
    end
  end
end

  * `keys/1`
  * `merge/2`
  * `merge/3`
  * `pop/2`
  * `pop/3`
  * `put_new/3`
  * `take/2`
  * `to_list/1`
  * `values/1`
  * `update/4`
  * `update!/3`

  All of these functions are defined as overridable, so you can provide your own
  implementation if needed.
