   end
 
   @doc ~S"""
-  Accesses the element at `index` (zero based) of a list.
+  Returns a function that accesses the element at `index` (zero based) of a list.
+
+  The returned function is typically passed as an accessor to `Kernel.get_in/2`,
+  `Kernel.get_and_update_in/3`, and friends.
 
   ## Examples
 

  @callback get(term :: t, key, default :: value) :: value

  @doc """
  Invoked in order to access the value under `key` and updated it at the same time.

  The implementation of this callback should invoke the passed function on the
  value under key `key` in the passed structure; this function should return
  either `{value_to_return, new_value}` or `:pop`.

  If it returns `{value_to_return, new_value}`, the return value of this
  callback should be `{value_to_return, new_term}` where `new_term` is `term`
  after updating the value of `key` with `new_value`.

  If it returns `:pop`, the return value of this callback should be `{value,
  new_term}` where `value` is the value under `key` and `new_term` is `term`
  after removing the key `key`.

  See the implementations of `Map.get_and_update/3` or `Keyword.get_and_update/3`
  for more examples.


  @doc """
  Fetches the value for the given key in a container (a map, keyword
  list, or struct that implements the `Access` behaviour).
  """
  @spec fetch(t, term) :: {:ok, term} | :error
  def fetch(container, key)
