anchor.diff:  allowed_in_context(_, _, _) ->
     true.
   
  -assert_valid_args_for_remote({{'.', _, [erlang, '++']}, Meta, [Left, _Right]}, match, E) when not is_list(Left) ->
  +check_erlang_operator_args({{'.', _, [erlang, '++']}, Meta, [ELeft, _]}, [Left, _], match, E)
  +    when not is_list(ELeft) ->
     form_error(Meta, ?key(E, file), ?MODULE, {invalid_arg_for_lists_concatenation, Left});
  -assert_valid_args_for_remote(_, _, _) ->
  -  ok.
  -
  -maybe_warn_struct_comparison({{'.', _, [erlang, Op]}, Meta, [ELeft, ERight]}, [Left, Right], E)
  +check_erlang_operator_args({{'.', _, [erlang, Op]}, Meta, [ELeft, ERight]}, [Left, Right], _, E)
       when Op =:= '>'; Op =:= '<'; Op =:= '=<'; Op =:= '>=' ->
     Result =
       case is_struct_expression(ELeft) of
  
positive.code:     StructExpr ->
        elixir_errors:form_warn(Meta, ?key(E, file), ?MODULE, {struct_comparison, StructExpr})
    end;
  maybe_warn_struct_comparison(_Other, _Args, _E) ->
    ok.
  
  is_struct_expression({'%', _, [Struct, _]}) when is_atom(Struct) ->
  
negative.code:                                  ?key(E, function), ?line(Meta), ?key(E, lexical_tracker)),
    {EArgs, EA} = expand_args(Args, E),
    Rewritten = elixir_rewrite:rewrite(Receiver, DotMeta, Right, Meta, EArgs),
    check_erlang_operator_args(Rewritten, Args, Context, E),
    case allowed_in_context(Rewritten, Arity, Context) of
      true ->
        {Rewritten, elixir_env:mergev(EL, EA)};
  