anchor.diff:    end,
     test_helper:run_and_remove(F, ['Bar']).
   
  +% Method invocation with implicit self
  +
  +implicit_self_test() ->
  +  F = fun() ->
  +    elixir:eval("module Bar\nmixin self\ndef foo;1;end\ndef bar; foo; end\nend"),
  +    {1,[]} = elixir:eval("Bar.bar")
  +  end,
  +  test_helper:run_and_remove(F, ['Bar']).
  +
  +implicit_self_with_args_test() ->
  +  F = fun() ->
  +    elixir:eval("module Bar\nmixin self\ndef foo(x);x + 1;end\ndef bar; foo 2; end\nend"),
  +    {3,[]} = elixir:eval("Bar.bar")
  +  end,
  +  test_helper:run_and_remove(F, ['Bar']).
  +
  +implicit_self_with_method_call_arg_test() ->
  +  F = fun() ->
  +    elixir:eval("module Bar\nmixin self\ndef foo(x);x + 1;end\ndef bar; foo baz; end\ndef baz; 2; end\nend"),
  +    {3,[]} = elixir:eval("Bar.bar")
  +  end,
  +  test_helper:run_and_remove(F, ['Bar']).
  +
  +implicit_self_with_method_call_args_test() ->
  +  F = fun() ->
  +    elixir:eval("module Bar\nmixin self\ndef foo(x,y);x + y;end\ndef bar; foo baz, baz; end\ndef baz; 2; end\nend"),
  +    {4,[]} = elixir:eval("Bar.bar")
  +  end,
  +  test_helper:run_and_remove(F, ['Bar']).
  +
  +implicit_self_gives_higher_preference_to_variables_test() ->
  +  F = fun() ->
  +    elixir:eval("module Bar\nmixin self\ndef foo;1;end\ndef bar; foo = 3; foo; end\nend"),
  +    {3,[]} = elixir:eval("Bar.bar")
  +  end,
  +  test_helper:run_and_remove(F, ['Bar']).
  +
   % Module lookup
   % cannot_store_already_defined_constants_test() ->
   %   F = fun() ->
  
positive.code:     {3,[]} = elixir:eval("Bar.\nfoo")
    end,
    test_helper:run_and_remove(F, ['Bar']).
  
  
  method_invocation_in_module_with_self_test() ->
    F = fun() ->
  
negative.code:   end,
    test_helper:run_and_remove(F, ['Bar::Baz']).
  
  % Method invocation
  
  method_invocation_in_module_test() ->
    F = fun() ->
      elixir:eval("module Bar; self.mixin self; def foo(); 1 + 2; end; end"),
  