anchor.diff:      false -> 'Elixir.Module':get_attribute(Module, file)
     end.
   
  -normalize_location(X) ->
  -  elixir_utils:characters_to_list(elixir_utils:relative_to_cwd(X)).
  +normalize_location(File) ->
  +  elixir_utils:characters_to_list(elixir_utils:relative_to_cwd(File)).
   
   %% Compile super
   
  
positive.code: make_struct_available(_, _, _, _) ->
    ok.
  
  %% Retrieve location from meta file or @file, otherwise nil
  
  retrieve_location(Line, File, Module) ->
    case get_location_attribute(Module) of
      nil when not is_binary(File) ->
        nil;
      nil ->
        {normalize_location(File), Line};
      X when is_binary(X) ->
        'Elixir.Module':delete_attribute(Module, file),
        {normalize_location(X), 0};
      {X, L} when is_binary(X) andalso is_integer(L) ->
        'Elixir.Module':delete_attribute(Module, file),
        {normalize_location(X), L}
    end.
  
  get_location_attribute(Module) ->
  
negative.code:   DoCheckClauses = (not lists:keymember(context, 1, Meta)) andalso (CheckClauses),
  
    %% Check if there is a file information in the definition.
    %% If so, we assume this come from another source and
    %% we need to linify taking into account keep line numbers.
    {Location, Key} = case lists:keyfind(file, 1, Meta) of
      {file, KeepFile} when is_binary(KeepFile) ->
        case lists:keyfind(keep, 1, Meta) of
          {keep, KeepLine} when is_integer(KeepLine) -> KeepLine;
          _ -> KeepLine = 0
        end,
        {{KeepFile, KeepLine}, keep};
      _ ->
        {nil, line}
    end,
  
    LinifyArgs   = elixir_quote:linify(Line, Key, Args),
  