anchor.diff:    end;
   
   expand_bit_info(_Left, Meta, [Expr | _], _Size, _Types, E) ->
  -  elixir_errors:compile_error(Meta, ?m(E, file),
  -    "unknown bitstring specifier ~ts", ['Elixir.Kernel':inspect(Expr)]);
  -
  +  form_error(Meta, ?m(E, file), ?MODULE, {undefined_bittype, Expr});
   expand_bit_info(_Left, Meta, [], Size, Types, _) ->
     [H | T] = case Size of
       default -> lists:reverse(Types);
  
positive.code:         _ when is_integer(EArg) ->
            ok;
          _ ->
            elixir_errors:compile_error(Meta, ?m(E, file),
              "size in bitstring expects an integer or a variable as argument, got: ~ts",
              ['Elixir.Macro':to_string(EArg)])
        end,
  
        expand_bit_info(Left, Meta, T, {size, [], [EArg]}, Types, EE);
      _ ->
        elixir_errors:compile_error(Meta, ?m(E, file),
          "duplicated size definition in bitstring")
    end;
  
  expand_bit_info(Left, Meta, [{Expr, ExprMeta, Args} | T], Size, Types, E) when is_atom(Expr) ->
    case expand_bit_type(Expr, Args) of
  
negative.code: unpack_bit_info(Other, Acc) ->
    [Other | Acc].
  
  format_error({invalid_literal, Literal}) ->
    io_lib:format("invalid literal ~ts in <<>>", ['Elixir.Macro':to_string(Literal)]);
  format_error(size_for_literal_string) ->
    "size is not supported for literal string in <<>>";
  format_error({bad_bitsize, Expr}) ->
    io_lib:format("size in bitstring expects an integer or a variable as argument, got: ~ts",
                  ['Elixir.Macro':to_string(Expr)]);
  format_error(duplicated_size_definition) ->
    "duplicated size definition in bitstring";
  format_error({bad_unit_argument, Unit}) ->
    io_lib:format("unit in bitstring expects an integer as argument, got: ~ts",
                  ['Elixir.Macro':to_string(Unit)]);
  format_error(invalid_type_for_literal_string) ->
    "invalid types for literal string in <<>>. Accepted types are: "
      "little, big, utf8, utf16, utf32, bits, bytes, binary, bitstring";
  format_error({undefined_bittype, Expr}) ->
    io_lib:format("unknown bitstring specifier ~ts", ['Elixir.Macro':to_string(Expr)]).
  
  %% Translation
  
  has_size({bin, _, Elements}) ->
  