   end
 
   @doc """
-  Gets the value from `key` and updates it. Raises if there is no `key`.
-
-  This `fun` argument receives the value of `key` and must return a
+  Gets the value under `key` and updates it. Raises if there is no `key`.
+
+  The `fun` argument receives the value under `key` and must return a
   two-element tuple: the current value (the retrieved value, which can be
   operated on before being returned) and the new value to be stored under
   `key`.
 
-  The returned value is a tuple with the current value returned by `fun` and a new
-  keyword list with the updated value under `key`.
+  Returns a tuple that contains the current value returned by
+  `fun` and a new keyword list with the updated value under `key`.
 
   ## Examples
 

  @doc """
  Creates a keyword list from an enumerable.

  Duplicated entries are removed, the latest one prevails.
  Unlike `Enum.into(enumerable, [])`, `Keyword.new(enumerable)`
  guarantees the keys are unique.


  end

  defp get_and_update!([], key, _fun, acc) when is_atom(key) do
    raise KeyError, key: key, term: acc
  end

  @doc """
