anchor.diff:      StructExpr ->
         elixir_errors:form_warn(Meta, ?key(E, file), ?MODULE, {struct_comparison, StructExpr})
     end;
  -maybe_warn_struct_comparison(_Other, _Args, _E) ->
  +check_erlang_operator_args(_, _, _, _) ->
     ok.
   
   is_struct_expression({'%', _, [Struct, _]}) when is_atom(Struct) ->
  
positive.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),
    maybe_warn_struct_comparison(Rewritten, Args, E),
    assert_valid_args_for_remote(Rewritten, Context, E),
    case allowed_in_context(Rewritten, Arity, Context) of
      true ->
        {Rewritten, elixir_env:mergev(EL, EA)};
  
negative.code: allowed_in_context(_, _, _) ->
    true.
  
  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});
  check_erlang_operator_args({{'.', _, [erlang, Op]}, Meta, [ELeft, ERight]}, [Left, Right], _, E)
      when Op =:= '>'; Op =:= '<'; Op =:= '=<'; Op =:= '>=' ->
    Result =
      case is_struct_expression(ELeft) of
  