 
       iex> get_in(%{}, [Access.at(1)])
       ** (RuntimeError) Access.at/1 expected a list, got: %{}
+
   """
   def at(index) when index >= 0 do
     fn(op, data, next) -> at(op, data, index, next) end

  @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)


  ## Implementing the Access behaviour for custom data structures

  In order to be able to use the `Access` behaviour with custom data structures
  (which have to be structs), such structures have to implement the `Access`
  behaviour. For example, for a `User` struct, this would have to be done:

