anchor.diff:  % Variables can be defined inside the interpolation.
   transform({interpolated_atom, Line, String}, F, V, S) ->
     { Flattened, VE } = handle_interpolations(String, Line, F, V, S),
  -  { ?ELIXIR_WRAP_CALL(Line, erlang, binary_to_atom, [Flattened, {atom, Line, utf8}]), VE };
  +  Binary = ?ELIXIR_WRAP_CALL(Line, erlang, list_to_binary, [Flattened]),
  +  { ?ELIXIR_WRAP_CALL(Line, erlang, binary_to_atom, [Binary, {atom, Line, utf8}]), VE };
   
   % Handle regexps by dispatching a list and its options to Regexp.new.
   %
  
positive.code: % Variables can be defined inside the interpolation.
  transform({interpolated_regexp, Line, String, Operators }, F, V, S) ->
    { Flattened, VE } = handle_interpolations(String, Line, F, V, S),
    build_regexp(Line, Flattened, Operators, F, VE, S);
  
  % Handle binary operations.
  %
  
negative.code: % Variables can be defined inside the interpolation.
  transform({interpolated_string, Line, String }, F, V, S) ->
    { Flattened, VE } = handle_interpolations(String, Line, F, V, S),
    Binary = ?ELIXIR_WRAP_CALL(Line, erlang, list_to_binary, [Flattened]),
    { build_object(Line, 'String', [{bin, Binary}]), VE };
  
  % Handle strings by wrapping them in the String object. A string is created
  % by explicitly creating an #elixir_object and not through String.new.
  