anchor.diff:  args_from_arity(_Meta, A, _E) when is_integer(A), A >= 0, A =< 255 ->
     [{'&', [], [X]} || X <- lists:seq(1, A)];
   args_from_arity(Meta, A, E) ->
  -  Message = "invalid arity for &, expected a number between 0 and 255, got: ~b",
  -  compile_error(Meta, ?key(E, file), Message, [A]).
  +  form_error(Meta, ?key(E, file), ?MODULE, {invalid_arity_for_capture, A}).
   
   is_sequential_and_not_empty([])   -> false;
   is_sequential_and_not_empty(List) -> is_sequential(List, 1).
  
positive.code:   Var = {list_to_atom([$x | integer_to_list(Pos)]), [{counter, Counter}], 'Elixir'},
    {Var, orddict:store(Pos, Var, Dict)};
  escape({'&', Meta, [Pos]}, _Counter, E, _Dict) when is_integer(Pos) ->
    compile_error(Meta, ?key(E, file), "capture &~B is not allowed", [Pos]);
  escape({'&', Meta, _} = Arg, _Counter, E, _Dict) ->
    Message = "nested captures via & are not allowed: ~ts",
    compile_error(Meta, ?key(E, file), Message, ['Elixir.Macro':to_string(Arg)]);
  escape({Left, Meta, Right}, Counter, E, Dict0) ->
    {TLeft, Dict1}  = escape(Left, Counter, E, Dict0),
    {TRight, Dict2} = escape(Right, Counter, E, Dict1),
  
negative.code: -module(elixir_fn).
  -export([capture/3, expand/3, format_error/1]).
  -import(elixir_errors, [form_error/4]).
  -include("elixir.hrl").
  
  %% Anonymous functions
  