diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala index 2e85ea45b1..f74c423754 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorDSLSpec.scala @@ -26,7 +26,7 @@ class ActorDSLSpec extends AkkaSpec { val echo = system.actorOf(Props(new Actor { def receive = { - case x ⇒ sender ! x + case x ⇒ sender() ! x } })) @@ -119,7 +119,7 @@ class ActorDSLSpec extends AkkaSpec { //#simple-actor val a = actor(new Act { become { - case "hello" ⇒ sender ! "hi" + case "hello" ⇒ sender() ! "hi" } }) //#simple-actor @@ -133,10 +133,10 @@ class ActorDSLSpec extends AkkaSpec { //#becomeStacked val a = actor(new Act { become { // this will replace the initial (empty) behavior - case "info" ⇒ sender ! "A" + case "info" ⇒ sender() ! "A" case "switch" ⇒ becomeStacked { // this will stack upon the "A" behavior - case "info" ⇒ sender ! "B" + case "info" ⇒ sender() ! "B" case "switch" ⇒ unbecome() // return to the "A" behavior } case "lobotomize" ⇒ unbecome() // OH NOES: Actor.emptyBehavior @@ -144,7 +144,7 @@ class ActorDSLSpec extends AkkaSpec { }) //#becomeStacked - implicit def sender = testActor + implicit val sender = testActor a ! "info" expectMsg("A") a ! "switch" diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorFireForgetRequestReplySpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorFireForgetRequestReplySpec.scala index e64e9c01ae..44e3ef02f9 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorFireForgetRequestReplySpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorFireForgetRequestReplySpec.scala @@ -15,9 +15,9 @@ object ActorFireForgetRequestReplySpec { class ReplyActor extends Actor { def receive = { case "Send" ⇒ - sender ! "Reply" + sender() ! "Reply" case "SendImplicit" ⇒ - sender ! "ReplyImplicit" + sender() ! "ReplyImplicit" } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala index 8a1a1857ac..94d0cffe0e 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorLifeCycleSpec.scala @@ -25,7 +25,7 @@ object ActorLifeCycleSpec { val currentGen = generationProvider.getAndIncrement() override def preStart() { report("preStart") } override def postStop() { report("postStop") } - def receive = { case "status" ⇒ sender ! message("OK") } + def receive = { case "status" ⇒ sender() ! message("OK") } } } @@ -131,15 +131,15 @@ class ActorLifeCycleSpec extends AkkaSpec("akka.actor.serialize-messages=off") w case class Become(recv: ActorContext ⇒ Receive) val a = system.actorOf(Props(new Actor { def receive = { - case Become(beh) ⇒ { context.become(beh(context), discardOld = false); sender ! "ok" } - case x ⇒ sender ! 42 + case Become(beh) ⇒ { context.become(beh(context), discardOld = false); sender() ! "ok" } + case x ⇒ sender() ! 42 } })) a ! "hello" expectMsg(42) a ! Become(ctx ⇒ { case "fail" ⇒ throw new RuntimeException("buh") - case x ⇒ ctx.sender ! 43 + case x ⇒ ctx.sender() ! 43 }) expectMsg("ok") a ! "hello" diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorLookupSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorLookupSpec.scala index 9c16cf9dec..5668f39ce6 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorLookupSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorLookupSpec.scala @@ -24,11 +24,11 @@ object ActorLookupSpec { class Node extends Actor { def receive = { - case Create(name) ⇒ sender ! context.actorOf(p, name) - case LookupElems(path) ⇒ sender ! context.actorFor(path) - case LookupString(path) ⇒ sender ! context.actorFor(path) - case LookupPath(path) ⇒ sender ! context.actorFor(path) - case GetSender(ref) ⇒ ref ! sender + case Create(name) ⇒ sender() ! context.actorOf(p, name) + case LookupElems(path) ⇒ sender() ! context.actorFor(path) + case LookupString(path) ⇒ sender() ! context.actorFor(path) + case LookupPath(path) ⇒ sender() ! context.actorFor(path) + case GetSender(ref) ⇒ ref ! sender() } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorMailboxSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorMailboxSpec.scala index d31628824b..9174bfa5f1 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorMailboxSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorMailboxSpec.scala @@ -149,7 +149,7 @@ object ActorMailboxSpec { class QueueReportingActor extends Actor { def receive = { - case _ ⇒ sender ! context.asInstanceOf[ActorCell].mailbox.messageQueue + case _ ⇒ sender() ! context.asInstanceOf[ActorCell].mailbox.messageQueue } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorPerfSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorPerfSpec.scala index deac9a5365..19170a41c7 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorPerfSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorPerfSpec.scala @@ -22,13 +22,13 @@ object ActorPerfSpec { class EmptyActor extends Actor { def receive = { - case IsAlive ⇒ sender ! Alive + case IsAlive ⇒ sender() ! Alive } } class EmptyArgsActor(val foo: Int, val bar: Int) extends Actor { def receive = { - case IsAlive ⇒ sender ! Alive + case IsAlive ⇒ sender() ! Alive } } @@ -36,15 +36,15 @@ object ActorPerfSpec { def receive = { case IsAlive ⇒ - sender ! Alive + sender() ! Alive case Create(number, propsCreator) ⇒ for (i ← 1 to number) { context.actorOf(propsCreator.apply()) } - sender ! Created + sender() ! Created case WaitForChildren(number) ⇒ context.children.foreach(_ ! IsAlive) - context.become(waiting(number, sender), false) + context.become(waiting(number, sender()), false) } def waiting(number: Int, replyTo: ActorRef): Receive = { diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala index 028b84f9cb..184a1d88f7 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala @@ -25,15 +25,15 @@ object ActorRefSpec { def receive = { case "complexRequest" ⇒ { - replyTo = sender + replyTo = sender() val worker = context.actorOf(Props[WorkerActor]) worker ! "work" } case "complexRequest2" ⇒ val worker = context.actorOf(Props[WorkerActor]) - worker ! ReplyTo(sender) + worker ! ReplyTo(sender()) case "workDone" ⇒ replyTo ! "complexReply" - case "simpleRequest" ⇒ sender ! "simpleReply" + case "simpleRequest" ⇒ sender() ! "simpleReply" } } @@ -42,7 +42,7 @@ object ActorRefSpec { def receive = { case "work" ⇒ { work() - sender ! "workDone" + sender() ! "workDone" context.stop(self) } case ReplyTo(replyTo) ⇒ { @@ -71,7 +71,7 @@ object ActorRefSpec { class OuterActor(val inner: ActorRef) extends Actor { def receive = { - case "self" ⇒ sender ! self + case "self" ⇒ sender() ! self case x ⇒ inner forward x } } @@ -80,7 +80,7 @@ object ActorRefSpec { val fail = new InnerActor def receive = { - case "self" ⇒ sender ! self + case "self" ⇒ sender() ! self case x ⇒ inner forward x } } @@ -91,8 +91,8 @@ object ActorRefSpec { class InnerActor extends Actor { def receive = { - case "innerself" ⇒ sender ! self - case other ⇒ sender ! other + case "innerself" ⇒ sender() ! self + case other ⇒ sender() ! other } } @@ -100,8 +100,8 @@ object ActorRefSpec { val fail = new InnerActor def receive = { - case "innerself" ⇒ sender ! self - case other ⇒ sender ! other + case "innerself" ⇒ sender() ! self + case other ⇒ sender() ! other } } @@ -335,7 +335,7 @@ class ActorRefSpec extends AkkaSpec with DefaultTimeout { "support nested actorOfs" in { val a = system.actorOf(Props(new Actor { val nested = system.actorOf(Props(new Actor { def receive = { case _ ⇒ } })) - def receive = { case _ ⇒ sender ! nested } + def receive = { case _ ⇒ sender() ! nested } })) val nested = Await.result((a ? "any").mapTo[ActorRef], timeout.duration) @@ -391,8 +391,8 @@ class ActorRefSpec extends AkkaSpec with DefaultTimeout { val timeout = Timeout(20000) val ref = system.actorOf(Props(new Actor { def receive = { - case 5 ⇒ sender ! "five" - case 0 ⇒ sender ! "null" + case 5 ⇒ sender() ! "five" + case 0 ⇒ sender() ! "null" } })) @@ -438,7 +438,7 @@ class ActorRefSpec extends AkkaSpec with DefaultTimeout { def receive = { case _ ⇒ } }), "child") - def receive = { case name: String ⇒ sender ! context.child(name).isDefined } + def receive = { case name: String ⇒ sender() ! context.child(name).isDefined } }), "parent") assert(Await.result((parent ? "child"), remaining) === true) diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala index 5f64622d51..25446a005c 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala @@ -24,12 +24,12 @@ object ActorSelectionSpec { class Node extends Actor { def receive = { - case Create(name) ⇒ sender ! context.actorOf(p, name) - case SelectString(path) ⇒ sender ! context.actorSelection(path) - case SelectPath(path) ⇒ sender ! context.actorSelection(path) - case GetSender(ref) ⇒ ref ! sender + case Create(name) ⇒ sender() ! context.actorOf(p, name) + case SelectString(path) ⇒ sender() ! context.actorSelection(path) + case SelectPath(path) ⇒ sender() ! context.actorSelection(path) + case GetSender(ref) ⇒ ref ! sender() case Forward(path, msg) ⇒ context.actorSelection(path).forward(msg) - case msg ⇒ sender ! msg + case msg ⇒ sender() ! msg } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorSystemSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorSystemSpec.scala index 80b763e25d..ee10ea3539 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorSystemSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorSystemSpec.scala @@ -37,7 +37,7 @@ object ActorSystemSpec { def receive = { case n: Int ⇒ - master = sender + master = sender() terminaters = Set() ++ (for (i ← 1 to n) yield { val man = context.watch(context.system.actorOf(Props[Terminater])) man ! "run" diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorWithBoundedStashSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorWithBoundedStashSpec.scala index 1658eed81d..be427d1966 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorWithBoundedStashSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorWithBoundedStashSpec.scala @@ -23,7 +23,7 @@ object ActorWithBoundedStashSpec { def receive = { case msg: String if msg.startsWith("hello") ⇒ stash() - sender ! "ok" + sender() ! "ok" case "world" ⇒ context.become(afterWorldBehaviour) @@ -42,13 +42,13 @@ object ActorWithBoundedStashSpec { def receive = { case msg: String if msg.startsWith("hello") ⇒ numStashed += 1 - try { stash(); sender ! "ok" } catch { + try { stash(); sender() ! "ok" } catch { case _: StashOverflowException ⇒ if (numStashed == 21) { - sender ! "STASHOVERFLOW" + sender() ! "STASHOVERFLOW" context stop self } else { - sender ! "Unexpected StashOverflowException: " + numStashed + sender() ! "Unexpected StashOverflowException: " + numStashed } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/Bench.scala b/akka-actor-tests/src/test/scala/akka/actor/Bench.scala index 5a9b6a8e98..92b019492d 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/Bench.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/Bench.scala @@ -42,7 +42,7 @@ object Chameneos { case Exit ⇒ colour = FADED - sender ! MeetingCount(meetings) + sender() ! MeetingCount(meetings) } def complement(otherColour: Colour): Colour = colour match { @@ -95,11 +95,11 @@ object Chameneos { n -= 1 chameneo ! msg waitingChameneo = None - case None ⇒ waitingChameneo = Some(sender) + case None ⇒ waitingChameneo = Some(sender()) } } else { waitingChameneo.foreach(_ ! Exit) - sender ! Exit + sender() ! Exit } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala index da8bd52f95..15591df762 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala @@ -32,18 +32,18 @@ object ConsistencySpec { case step: Long ⇒ if (lastStep != (step - 1)) - sender ! "Test failed: Last step %s, this step %s".format(lastStep, step) + sender() ! "Test failed: Last step %s, this step %s".format(lastStep, step) var shouldBeFortyTwo = left.value + right.value if (shouldBeFortyTwo != 42) - sender ! "Test failed: 42 failed" + sender() ! "Test failed: 42 failed" else { left.value += 1 right.value -= 1 } lastStep = step - case "done" ⇒ sender ! "done"; context.stop(self) + case "done" ⇒ sender() ! "done"; context.stop(self) } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/DeathWatchSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/DeathWatchSpec.scala index be8bdaec83..b13171438f 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/DeathWatchSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/DeathWatchSpec.scala @@ -90,7 +90,7 @@ trait DeathWatchSpec { this: AkkaSpec with ImplicitSender with DefaultTimeout context.watch(terminal) context.unwatch(terminal) def receive = { - case "ping" ⇒ sender ! "pong" + case "ping" ⇒ sender() ! "pong" case t: Terminated ⇒ testActor ! WrappedTerminated(t) } }).withDeploy(Deploy.local)) @@ -113,7 +113,7 @@ trait DeathWatchSpec { this: AkkaSpec with ImplicitSender with DefaultTimeout filterException[ActorKilledException] { val supervisor = system.actorOf(Props(new Supervisor( OneForOneStrategy(maxNrOfRetries = 2)(List(classOf[Exception]))))) - val terminalProps = Props(new Actor { def receive = { case x ⇒ sender ! x } }) + val terminalProps = Props(new Actor { def receive = { case x ⇒ sender() ! x } }) val terminal = Await.result((supervisor ? terminalProps).mapTo[ActorRef], timeout.duration) val monitor = startWatching(terminal) diff --git a/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala index 7d473869e8..d4b492cf37 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala @@ -216,7 +216,7 @@ object FSMTimingSpec { setTimer("hallo", Tock, 1.milli.dilated) TestKit.awaitCond(context.asInstanceOf[ActorCell].mailbox.hasMessages, 1.second.dilated) cancelTimer("hallo") - sender ! Tick + sender() ! Tick setTimer("hallo", Tock, 500.millis.dilated) stay case Event(Tock, _) ⇒ diff --git a/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala index 15b33c378f..b5fdb235ae 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala @@ -97,7 +97,7 @@ class FSMTransitionSpec extends AkkaSpec with ImplicitSender { val fsmref = system.actorOf(Props(new Actor with FSM[Int, ActorRef] { startWith(0, null) when(0) { - case Event("switch", _) ⇒ goto(1) using sender + case Event("switch", _) ⇒ goto(1) using sender() } onTransition { case x -> y ⇒ nextStateData ! (x -> y) @@ -105,9 +105,9 @@ class FSMTransitionSpec extends AkkaSpec with ImplicitSender { when(1) { case Event("test", _) ⇒ try { - sender ! s"failed: ${nextStateData}" + sender() ! s"failed: ${nextStateData}" } catch { - case _: IllegalStateException ⇒ sender ! "ok" + case _: IllegalStateException ⇒ sender() ! "ok" } stay } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ForwardActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ForwardActorSpec.scala index 965e55f897..01840c6f94 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ForwardActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ForwardActorSpec.scala @@ -17,7 +17,7 @@ object ForwardActorSpec { def createForwardingChain(system: ActorSystem): ActorRef = { val replier = system.actorOf(Props(new Actor { - def receive = { case x ⇒ sender ! x } + def receive = { case x ⇒ sender() ! x } })) def mkforwarder(forwardTo: ActorRef) = system.actorOf(Props( diff --git a/akka-actor-tests/src/test/scala/akka/actor/HotSwapSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/HotSwapSpec.scala index 354f23c76f..bbeb10ed12 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/HotSwapSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/HotSwapSpec.scala @@ -19,8 +19,8 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "An Actor" must { "be able to become in its constructor" in { val a = system.actorOf(Props(new Becomer { - context.become { case always ⇒ sender ! always } - def receive = { case always ⇒ sender ! "FAILURE" } + context.become { case always ⇒ sender() ! always } + def receive = { case always ⇒ sender() ! "FAILURE" } })) a ! "pigdog" expectMsg("pigdog") @@ -28,8 +28,8 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "be able to become multiple times in its constructor" in { val a = system.actorOf(Props(new Becomer { - for (i ← 1 to 4) context.become({ case always ⇒ sender ! i + ":" + always }) - def receive = { case always ⇒ sender ! "FAILURE" } + for (i ← 1 to 4) context.become({ case always ⇒ sender() ! i + ":" + always }) + def receive = { case always ⇒ sender() ! "FAILURE" } })) a ! "pigdog" expectMsg("4:pigdog") @@ -37,8 +37,8 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "be able to become with stacking in its constructor" in { val a = system.actorOf(Props(new Becomer { - context.become({ case always ⇒ sender ! "pigdog:" + always; context.unbecome() }, false) - def receive = { case always ⇒ sender ! "badass:" + always } + context.become({ case always ⇒ sender() ! "pigdog:" + always; context.unbecome() }, false) + def receive = { case always ⇒ sender() ! "badass:" + always } })) a ! "pigdog" expectMsg("pigdog:pigdog") @@ -48,8 +48,8 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "be able to become, with stacking, multiple times in its constructor" in { val a = system.actorOf(Props(new Becomer { - for (i ← 1 to 4) context.become({ case always ⇒ sender ! i + ":" + always; context.unbecome() }, false) - def receive = { case always ⇒ sender ! "FAILURE" } + for (i ← 1 to 4) context.become({ case always ⇒ sender() ! i + ":" + always; context.unbecome() }, false) + def receive = { case always ⇒ sender() ! "FAILURE" } })) a ! "pigdog" a ! "pigdog" @@ -64,8 +64,8 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "be able to hotswap its behavior with become(..)" in { val a = system.actorOf(Props(new Actor { def receive = { - case "init" ⇒ sender ! "init" - case "swap" ⇒ context.become({ case x: String ⇒ context.sender ! x }) + case "init" ⇒ sender() ! "init" + case "swap" ⇒ context.become({ case x: String ⇒ context.sender() ! x }) } })) @@ -79,9 +79,9 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { "be able to revert hotswap its behavior with unbecome" in { val a = system.actorOf(Props(new Actor { def receive = { - case "init" ⇒ sender ! "init" + case "init" ⇒ sender() ! "init" case "swap" ⇒ context.become({ - case "swapped" ⇒ sender ! "swapped" + case "swapped" ⇒ sender() ! "swapped" case "revert" ⇒ context.unbecome() }) } @@ -103,14 +103,14 @@ class HotSwapSpec extends AkkaSpec with ImplicitSender { val a = system.actorOf(Props(new Actor { def receive = { - case "state" ⇒ sender ! "0" + case "state" ⇒ sender() ! "0" case "swap" ⇒ context.become({ - case "state" ⇒ sender ! "1" - case "swapped" ⇒ sender ! "swapped" + case "state" ⇒ sender() ! "1" + case "swapped" ⇒ sender() ! "swapped" case "crash" ⇒ throw new Exception("Crash (expected)!") }) - sender ! "swapped" + sender() ! "swapped" } })) a ! "state" diff --git a/akka-actor-tests/src/test/scala/akka/actor/LocalActorRefProviderSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/LocalActorRefProviderSpec.scala index f0348e1d78..7798534c21 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/LocalActorRefProviderSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/LocalActorRefProviderSpec.scala @@ -45,8 +45,8 @@ class LocalActorRefProviderSpec extends AkkaSpec(LocalActorRefProviderSpec.confi val child = context.actorOf(Props.empty, name = childName) def receive = { case "lookup" ⇒ - if (childName == child.path.name) sender ! context.actorFor(childName) - else sender ! s"$childName is not ${child.path.name}!" + if (childName == child.path.name) sender() ! context.actorFor(childName) + else sender() ! s"$childName is not ${child.path.name}!" } })) a.tell("lookup", testActor) @@ -62,7 +62,7 @@ class LocalActorRefProviderSpec extends AkkaSpec(LocalActorRefProviderSpec.confi val GetChild = "GetChild" val a = watch(system.actorOf(Props(new Actor { val child = context.actorOf(Props.empty) - def receive = { case `GetChild` ⇒ sender ! child } + def receive = { case `GetChild` ⇒ sender() ! child } }))) a.tell(GetChild, testActor) val child = expectMsgType[ActorRef] diff --git a/akka-actor-tests/src/test/scala/akka/actor/RestartStrategySpec.scala b/akka-actor-tests/src/test/scala/akka/actor/RestartStrategySpec.scala index a33a4a594a..54b03c03a7 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/RestartStrategySpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/RestartStrategySpec.scala @@ -215,7 +215,7 @@ class RestartStrategySpec extends AkkaSpec("akka.actor.serialize-messages = off" val boss = system.actorOf(Props(new Actor { override val supervisorStrategy = OneForOneStrategy(withinTimeRange = 1 second)(List(classOf[Throwable])) def receive = { - case p: Props ⇒ sender ! context.watch(context.actorOf(p)) + case p: Props ⇒ sender() ! context.watch(context.actorOf(p)) case t: Terminated ⇒ maxNoOfRestartsLatch.open() } })) diff --git a/akka-actor-tests/src/test/scala/akka/actor/SchedulerSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/SchedulerSpec.scala index b62889a636..3c1e62732c 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/SchedulerSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/SchedulerSpec.scala @@ -42,7 +42,7 @@ trait SchedulerSpec extends BeforeAndAfterEach with DefaultTimeout with Implicit def receive = { case Tick ⇒ if (ticks < 3) { - sender ! Tock + sender() ! Tock ticks += 1 } } @@ -66,7 +66,7 @@ trait SchedulerSpec extends BeforeAndAfterEach with DefaultTimeout with Implicit } "stop continuous scheduling if the receiving actor has been terminated" taggedAs TimingTest in { - val actor = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender ! x } })) + val actor = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender() ! x } })) // run immediately and then every 100 milliseconds collectCancellable(system.scheduler.schedule(0 milliseconds, 100 milliseconds, actor, "msg")) diff --git a/akka-actor-tests/src/test/scala/akka/actor/Supervisor.scala b/akka-actor-tests/src/test/scala/akka/actor/Supervisor.scala index 6b16cdfbb6..a44f1cf6f7 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/Supervisor.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/Supervisor.scala @@ -10,7 +10,7 @@ package akka.actor class Supervisor(override val supervisorStrategy: SupervisorStrategy) extends Actor { def receive = { - case x: Props ⇒ sender ! context.actorOf(x) + case x: Props ⇒ sender() ! context.actorOf(x) } // need to override the default of stopping all children upon restart, tests rely on keeping them around override def preRestart(cause: Throwable, msg: Option[Any]) {} diff --git a/akka-actor-tests/src/test/scala/akka/actor/SupervisorHierarchySpec.scala b/akka-actor-tests/src/test/scala/akka/actor/SupervisorHierarchySpec.scala index 6c483969b0..d5f62a1f10 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/SupervisorHierarchySpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/SupervisorHierarchySpec.scala @@ -36,7 +36,7 @@ object SupervisorHierarchySpec { class CountDownActor(countDown: CountDownLatch, override val supervisorStrategy: SupervisorStrategy) extends Actor { def receive = { - case p: Props ⇒ sender ! context.actorOf(p) + case p: Props ⇒ sender() ! context.actorOf(p) } // test relies on keeping children around during restart override def preRestart(cause: Throwable, msg: Option[Any]) {} @@ -48,9 +48,9 @@ object SupervisorHierarchySpec { class Resumer extends Actor { override def supervisorStrategy = OneForOneStrategy() { case _ ⇒ SupervisorStrategy.Resume } def receive = { - case "spawn" ⇒ sender ! context.actorOf(Props[Resumer]) + case "spawn" ⇒ sender() ! context.actorOf(Props[Resumer]) case "fail" ⇒ throw new Exception("expected") - case "ping" ⇒ sender ! "pong" + case "ping" ⇒ sender() ! "pong" } } @@ -197,23 +197,23 @@ object SupervisorHierarchySpec { } override val supervisorStrategy = OneForOneStrategy()(unwrap andThen { case (_: Failure, _) if pongsToGo > 0 ⇒ - log :+= Event("pongOfDeath resuming " + sender, identityHashCode(this)) + log :+= Event("pongOfDeath resuming " + sender(), identityHashCode(this)) Resume case (f: Failure, orig) ⇒ if (f.depth > 0) { setFlags(f.directive) - log :+= Event("escalating " + f + " from " + sender, identityHashCode(this)) + log :+= Event("escalating " + f + " from " + sender(), identityHashCode(this)) throw f.copy(depth = f.depth - 1) } val prefix = orig match { case f: Failure ⇒ "applying " case _ ⇒ "re-applying " } - log :+= Event(prefix + f + " to " + sender, identityHashCode(this)) + log :+= Event(prefix + f + " to " + sender(), identityHashCode(this)) if (myLevel > 3 && f.failPost == 0 && f.stop) Stop else f.directive case (_, x) ⇒ - log :+= Event("unhandled exception from " + sender + Logging.stackTraceFor(x), identityHashCode(this)) - sender ! Dump(0) + log :+= Event("unhandled exception from " + sender() + Logging.stackTraceFor(x), identityHashCode(this)) + sender() ! Dump(0) context.system.scheduler.scheduleOnce(1 second, self, Dump(0))(context.dispatcher) Resume }) @@ -276,7 +276,7 @@ object SupervisorHierarchySpec { setFlags(f.directive) stateCache.put(self.path, stateCache.get(self.path).copy(failConstr = f.copy())) throw f - case "ping" ⇒ { Thread.sleep((random.nextFloat * 1.03).toLong); sender ! "pong" } + case "ping" ⇒ { Thread.sleep((random.nextFloat * 1.03).toLong); sender() ! "pong" } case Dump(0) ⇒ abort("dump") case Dump(level) ⇒ context.children foreach (_ ! Dump(level - 1)) case Terminated(ref) ⇒ @@ -296,7 +296,7 @@ object SupervisorHierarchySpec { } else { // WARNING: The Terminated that is logged by this is logged by check() above, too. It is not // an indication of duplicate Terminate messages - log :+= Event(sender + " terminated while pongOfDeath", identityHashCode(Hierarchy.this)) + log :+= Event(sender() + " terminated while pongOfDeath", identityHashCode(Hierarchy.this)) } case Abort ⇒ abort("terminating") case PingOfDeath ⇒ @@ -518,8 +518,8 @@ object SupervisorHierarchySpec { bury(path) stay case Event("pong", _) ⇒ - pingChildren -= sender - idleChildren :+= sender + pingChildren -= sender() + idleChildren :+= sender() stay case Event(StateTimeout, todo) ⇒ log.info("dumping state due to StateTimeout") @@ -538,8 +538,8 @@ object SupervisorHierarchySpec { when(Finishing) { case Event("pong", _) ⇒ - pingChildren -= sender - idleChildren :+= sender + pingChildren -= sender() + idleChildren :+= sender() if (pingChildren.isEmpty) goto(LastPing) else stay case Event(Died(ref), _) ⇒ bury(ref) @@ -555,8 +555,8 @@ object SupervisorHierarchySpec { when(LastPing) { case Event("pong", _) ⇒ - pingChildren -= sender - idleChildren :+= sender + pingChildren -= sender() + idleChildren :+= sender() if (pingChildren.isEmpty) goto(Stopping) else stay case Event(Died(ref), _) ⇒ bury(ref) @@ -605,7 +605,7 @@ object SupervisorHierarchySpec { testActor ! "timeout in Stopping" stop case Event(e: ErrorLog, _) ⇒ - errors :+= sender -> e + errors :+= sender() -> e goto(Failed) } @@ -631,7 +631,7 @@ object SupervisorHierarchySpec { when(Failed, stateTimeout = 5.seconds.dilated) { case Event(e: ErrorLog, _) ⇒ if (!e.msg.startsWith("not resumed") || !ignoreNotResumedLogs) - errors :+= sender -> e + errors :+= sender() -> e stay case Event(Terminated(r), _) if r == hierarchy ⇒ printErrors() @@ -694,7 +694,7 @@ object SupervisorHierarchySpec { case Event(e: ErrorLog, _) ⇒ if (e.msg.startsWith("not resumed")) stay else { - errors :+= sender -> e + errors :+= sender() -> e // don’t stop the hierarchy, that is going to happen all by itself and in the right order goto(Failed) } @@ -794,7 +794,7 @@ class SupervisorHierarchySpec extends AkkaSpec(SupervisorHierarchySpec.config) w val slowResumer = system.actorOf(Props(new Actor { override def supervisorStrategy = OneForOneStrategy() { case _ ⇒ Await.ready(latch, 4.seconds.dilated); SupervisorStrategy.Resume } def receive = { - case "spawn" ⇒ sender ! context.actorOf(Props[Resumer]) + case "spawn" ⇒ sender() ! context.actorOf(Props[Resumer]) } }), "slowResumer") slowResumer ! "spawn" @@ -848,7 +848,7 @@ class SupervisorHierarchySpec extends AkkaSpec(SupervisorHierarchySpec.config) w postRestartCalled.incrementAndGet() } override def receive = { - case m ⇒ sender ! m + case m ⇒ sender() ! m } }), "failChild") diff --git a/akka-actor-tests/src/test/scala/akka/actor/SupervisorMiscSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/SupervisorMiscSpec.scala index 2d5af75d98..1296731d35 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/SupervisorMiscSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/SupervisorMiscSpec.scala @@ -42,7 +42,7 @@ class SupervisorMiscSpec extends AkkaSpec(SupervisorMiscSpec.config) with Defaul val workerProps = Props(new Actor { override def postRestart(cause: Throwable) { countDownLatch.countDown() } def receive = { - case "status" ⇒ this.sender ! "OK" + case "status" ⇒ this.sender() ! "OK" case _ ⇒ this.context.stop(self) } }) @@ -146,7 +146,7 @@ class SupervisorMiscSpec extends AkkaSpec(SupervisorMiscSpec.config) with Defaul "have access to the failing child’s reference in supervisorStrategy" in { val parent = system.actorOf(Props(new Actor { override val supervisorStrategy = OneForOneStrategy() { - case _: Exception ⇒ testActor ! sender; SupervisorStrategy.Stop + case _: Exception ⇒ testActor ! sender(); SupervisorStrategy.Stop } def receive = { case "doit" ⇒ context.actorOf(Props.empty, "child") ! Kill diff --git a/akka-actor-tests/src/test/scala/akka/actor/SupervisorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/SupervisorSpec.scala index d1bdeaa2e4..0bb516d264 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/SupervisorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/SupervisorSpec.scala @@ -36,13 +36,13 @@ object SupervisorSpec { def receive = { case Ping ⇒ sendTo ! PingMessage - if (sender != sendTo) - sender ! PongMessage + if (sender() != sendTo) + sender() ! PongMessage case Die ⇒ throw new RuntimeException(ExceptionMessage) case DieReply ⇒ val e = new RuntimeException(ExceptionMessage) - sender ! Status.Failure(e) + sender() ! Status.Failure(e) throw e } @@ -172,7 +172,7 @@ class SupervisorSpec extends AkkaSpec("akka.actor.serialize-messages = off") wit override def postStop() { postStops += 1; testActor ! ("postStop" + postStops) } def receive = { case "crash" ⇒ { testActor ! "crashed"; throw new RuntimeException("Expected") } - case "ping" ⇒ sender ! "pong" + case "ping" ⇒ sender() ! "pong" } } val master = system.actorOf(Props(new Actor { @@ -349,10 +349,10 @@ class SupervisorSpec extends AkkaSpec("akka.actor.serialize-messages = off") wit } def receive = { - case Ping ⇒ sender ! PongMessage + case Ping ⇒ sender() ! PongMessage case DieReply ⇒ val e = new RuntimeException("Expected") - sender ! Status.Failure(e) + sender() ! Status.Failure(e) throw e } }) @@ -386,7 +386,7 @@ class SupervisorSpec extends AkkaSpec("akka.actor.serialize-messages = off") wit override def postRestart(reason: Throwable): Unit = testActor ! "child restarted" def receive = { case l: TestLatch ⇒ { Await.ready(l, 5 seconds); throw new IllegalStateException("OHNOES") } - case "test" ⇒ sender ! "child green" + case "test" ⇒ sender() ! "child green" } }), "child")) @@ -401,9 +401,9 @@ class SupervisorSpec extends AkkaSpec("akka.actor.serialize-messages = off") wit def receive = { case Terminated(a) if a.path == child.path ⇒ testActor ! "child terminated" case l: TestLatch ⇒ child ! l - case "test" ⇒ sender ! "green" + case "test" ⇒ sender() ! "green" case "testchild" ⇒ child forward "test" - case "testchildAndAck" ⇒ child forward "test"; sender ! "ack" + case "testchildAndAck" ⇒ child forward "test"; sender() ! "ack" } })) diff --git a/akka-actor-tests/src/test/scala/akka/actor/SupervisorTreeSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/SupervisorTreeSpec.scala index d00d173bca..416bad0604 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/SupervisorTreeSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/SupervisorTreeSpec.scala @@ -25,7 +25,7 @@ class SupervisorTreeSpec extends AkkaSpec("akka.actor.serialize-messages = off") val p = Props(new Actor { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 3, withinTimeRange = 1 second)(List(classOf[Exception])) def receive = { - case p: Props ⇒ sender ! context.actorOf(p) + case p: Props ⇒ sender() ! context.actorOf(p) } override def preRestart(cause: Throwable, msg: Option[Any]) { testActor ! self.path } }) diff --git a/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala b/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala index f04b01d0ae..a89ecd64da 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala @@ -59,11 +59,11 @@ object Ticket669Spec { } override def preRestart(reason: scala.Throwable, msg: Option[Any]) { - sender ! "failure1" + sender() ! "failure1" } override def postStop() { - sender ! "failure2" + sender() ! "failure2" } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/TypedActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/TypedActorSpec.scala index f371d42a91..852717d143 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/TypedActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/TypedActorSpec.scala @@ -353,7 +353,7 @@ class TypedActorSpec extends AkkaSpec(TypedActorSpec.config) case e: IllegalStateException if e.getMessage == "expected" ⇒ SupervisorStrategy.Resume } def receive = { - case p: TypedProps[_] ⇒ context.sender ! TypedActor(context).typedActorOf(p) + case p: TypedProps[_] ⇒ context.sender() ! TypedActor(context).typedActorOf(p) } })) val t = Await.result((boss ? TypedProps[Bar](classOf[Foo], classOf[Bar]).withTimeout(2 seconds)).mapTo[Foo], timeout.duration) diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala index 0b87912247..1d4116ab97 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala @@ -86,15 +86,15 @@ object ActorModelSpec { case Meet(sign, wait) ⇒ { ack(); sign.countDown(); wait.await(); busy.switchOff(()) } case Wait(time) ⇒ { ack(); Thread.sleep(time); busy.switchOff(()) } case WaitAck(time, l) ⇒ { ack(); Thread.sleep(time); l.countDown(); busy.switchOff(()) } - case Reply(msg) ⇒ { ack(); sender ! msg; busy.switchOff(()) } - case TryReply(msg) ⇒ { ack(); sender.tell(msg, null); busy.switchOff(()) } + case Reply(msg) ⇒ { ack(); sender() ! msg; busy.switchOff(()) } + case TryReply(msg) ⇒ { ack(); sender().tell(msg, null); busy.switchOff(()) } case Forward(to, msg) ⇒ { ack(); to.forward(msg); busy.switchOff(()) } case CountDown(latch) ⇒ { ack(); latch.countDown(); busy.switchOff(()) } case Increment(count) ⇒ { ack(); count.incrementAndGet(); busy.switchOff(()) } case CountDownNStop(l) ⇒ { ack(); l.countDown(); context.stop(self); busy.switchOff(()) } case Restart ⇒ { ack(); busy.switchOff(()); throw new Exception("Restart requested") } - case Interrupt ⇒ { ack(); sender ! Status.Failure(new ActorInterruptedException(new InterruptedException("Ping!"))); busy.switchOff(()); throw new InterruptedException("Ping!") } - case InterruptNicely(msg) ⇒ { ack(); sender ! msg; busy.switchOff(()); Thread.currentThread().interrupt() } + case Interrupt ⇒ { ack(); sender() ! Status.Failure(new ActorInterruptedException(new InterruptedException("Ping!"))); busy.switchOff(()); throw new InterruptedException("Ping!") } + case InterruptNicely(msg) ⇒ { ack(); sender() ! msg; busy.switchOff(()); Thread.currentThread().interrupt() } case ThrowException(e: Throwable) ⇒ { ack(); busy.switchOff(()); throw e } case DoubleStop ⇒ { ack(); context.stop(self); context.stop(self); busy.switchOff } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatcherActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatcherActorSpec.scala index 2a10adf26e..e80eb281f4 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatcherActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatcherActorSpec.scala @@ -37,7 +37,7 @@ object DispatcherActorSpec { """ class TestActor extends Actor { def receive = { - case "Hello" ⇒ sender ! "World" + case "Hello" ⇒ sender() ! "World" case "Failure" ⇒ throw new RuntimeException("Expected exception; to test fault-tolerance") } } @@ -86,7 +86,7 @@ class DispatcherActorSpec extends AkkaSpec(DispatcherActorSpec.config) with Defa val slowOne = system.actorOf( Props(new Actor { def receive = { - case "hogexecutor" ⇒ { sender ! "OK"; start.await } + case "hogexecutor" ⇒ { sender() ! "OK"; start.await } case "ping" ⇒ if (works.get) latch.countDown() } }).withDispatcher(throughputDispatcher)) diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala index bc6eb41fdc..ecd6c46814 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala @@ -51,7 +51,7 @@ object DispatchersSpec { class ThreadNameEcho extends Actor { def receive = { - case _ ⇒ sender ! Thread.currentThread.getName + case _ ⇒ sender() ! Thread.currentThread.getName } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/PinnedActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/PinnedActorSpec.scala index c1e8f8a3f6..0eff5ae7b6 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/PinnedActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/PinnedActorSpec.scala @@ -20,7 +20,7 @@ object PinnedActorSpec { class TestActor extends Actor { def receive = { - case "Hello" ⇒ sender ! "World" + case "Hello" ⇒ sender() ! "World" case "Failure" ⇒ throw new RuntimeException("Expected exception; to test fault-tolerance") } } diff --git a/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala b/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala index 4251ebbc68..1c92c17a7e 100644 --- a/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala +++ b/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala @@ -39,8 +39,8 @@ class Future2ActorSpec extends AkkaSpec with DefaultTimeout { "support reply via sender" in { val actor = system.actorOf(Props(new Actor { def receive = { - case "do" ⇒ Future(31) pipeTo context.sender - case "ex" ⇒ Future(throw new AssertionError) pipeTo context.sender + case "do" ⇒ Future(31) pipeTo context.sender() + case "ex" ⇒ Future(throw new AssertionError) pipeTo context.sender() } })) Await.result(actor ? "do", timeout.duration) should be(31) diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/FutureSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/FutureSpec.scala index 07a2c4ae41..9cbf6839f3 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/FutureSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/FutureSpec.scala @@ -31,9 +31,9 @@ object FutureSpec { class TestActor extends Actor { def receive = { - case "Hello" ⇒ sender ! "World" + case "Hello" ⇒ sender() ! "World" case "Failure" ⇒ - sender ! Status.Failure(new RuntimeException("Expected exception; to test fault-tolerance")) + sender() ! Status.Failure(new RuntimeException("Expected exception; to test fault-tolerance")) case "NoReply" ⇒ } } @@ -41,11 +41,11 @@ object FutureSpec { class TestDelayActor(await: TestLatch) extends Actor { def receive = { case "Hello" ⇒ - FutureSpec.ready(await, TestLatch.DefaultTimeout); sender ! "World" + FutureSpec.ready(await, TestLatch.DefaultTimeout); sender() ! "World" case "NoReply" ⇒ FutureSpec.ready(await, TestLatch.DefaultTimeout) case "Failure" ⇒ FutureSpec.ready(await, TestLatch.DefaultTimeout) - sender ! Status.Failure(new RuntimeException("Expected exception; to test fault-tolerance")) + sender() ! Status.Failure(new RuntimeException("Expected exception; to test fault-tolerance")) } } @@ -200,7 +200,7 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa "will return a result" must { behave like futureWithResult { test ⇒ val actor1 = system.actorOf(Props[TestActor]) - val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender ! s.toUpperCase } })) + val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender() ! s.toUpperCase } })) val future = actor1 ? "Hello" flatMap { case s: String ⇒ actor2 ? s } FutureSpec.ready(future, timeout.duration) test(future, "WORLD") @@ -212,7 +212,7 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa behave like futureWithException[ArithmeticException] { test ⇒ filterException[ArithmeticException] { val actor1 = system.actorOf(Props[TestActor]) - val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender ! Status.Failure(new ArithmeticException("/ by zero")) } })) + val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender() ! Status.Failure(new ArithmeticException("/ by zero")) } })) val future = actor1 ? "Hello" flatMap { case s: String ⇒ actor2 ? s } FutureSpec.ready(future, timeout.duration) test(future, "/ by zero") @@ -225,7 +225,7 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa behave like futureWithException[NoSuchElementException] { test ⇒ filterException[NoSuchElementException] { val actor1 = system.actorOf(Props[TestActor]) - val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender ! s.toUpperCase } })) + val actor2 = system.actorOf(Props(new Actor { def receive = { case s: String ⇒ sender() ! s.toUpperCase } })) val future = actor1 ? "Hello" flatMap { case i: Int ⇒ actor2 ? i } FutureSpec.ready(future, timeout.duration) test(future, "World (of class java.lang.String)") @@ -242,8 +242,8 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa filterException[ClassCastException] { val actor = system.actorOf(Props(new Actor { def receive = { - case s: String ⇒ sender ! s.length - case i: Int ⇒ sender ! (i * 2).toString + case s: String ⇒ sender() ! s.length + case i: Int ⇒ sender() ! (i * 2).toString } })) @@ -272,8 +272,8 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa filterException[NoSuchElementException] { val actor = system.actorOf(Props(new Actor { def receive = { - case Req(s: String) ⇒ sender ! Res(s.length) - case Req(i: Int) ⇒ sender ! Res((i * 2).toString) + case Req(s: String) ⇒ sender() ! Res(s.length) + case Req(i: Int) ⇒ sender() ! Res((i * 2).toString) } })) @@ -474,7 +474,7 @@ class FutureSpec extends AkkaSpec with Checkers with BeforeAndAfterAll with Defa var counter = 1 def receive = { case 'GetNext ⇒ - sender ! counter + sender() ! counter counter += 2 } })) diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/MailboxConfigSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/MailboxConfigSpec.scala index b3ce7142b4..1bb919e01a 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/MailboxConfigSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/MailboxConfigSpec.scala @@ -260,7 +260,7 @@ class SingleConsumerOnlyMailboxVerificationSpec extends AkkaSpec(SingleConsumerO def receive = { case Ping ⇒ n -= 1 - sender ! Ping + sender() ! Ping if (n == 0) context stop self } diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala index 298f0719d4..9a5f8d2af5 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala @@ -66,7 +66,7 @@ class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) wit def receive = { case i: Int ⇒ acc += i - case 'Result ⇒ sender ! acc.toList + case 'Result ⇒ sender() ! acc.toList } }).withDispatcher(dispatcherKey)) diff --git a/akka-actor-tests/src/test/scala/akka/event/EventStreamSpec.scala b/akka-actor-tests/src/test/scala/akka/event/EventStreamSpec.scala index 37027239fb..d459167356 100644 --- a/akka-actor-tests/src/test/scala/akka/event/EventStreamSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/event/EventStreamSpec.scala @@ -43,7 +43,7 @@ object EventStreamSpec { case Logging.InitializeLogger(bus) ⇒ bus.subscribe(context.self, classOf[SetTarget]) bus.subscribe(context.self, classOf[UnhandledMessage]) - sender ! Logging.LoggerInitialized + sender() ! Logging.LoggerInitialized case SetTarget(ref) ⇒ { dst = ref; dst ! "OK" } case e: Logging.LogEvent ⇒ dst ! e case u: UnhandledMessage ⇒ dst ! u diff --git a/akka-actor-tests/src/test/scala/akka/event/LoggerSpec.scala b/akka-actor-tests/src/test/scala/akka/event/LoggerSpec.scala index 1b6229535b..5685893b5d 100644 --- a/akka-actor-tests/src/test/scala/akka/event/LoggerSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/event/LoggerSpec.scala @@ -78,7 +78,7 @@ object LoggerSpec { override def receive: Receive = { case InitializeLogger(bus) ⇒ bus.subscribe(context.self, classOf[SetTarget]) - sender ! LoggerInitialized + sender() ! LoggerInitialized case SetTarget(ref, `qualifier`) ⇒ target = Some(ref) ref ! ("OK") diff --git a/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala b/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala index ee295e6ab0..02596d3b4e 100644 --- a/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala @@ -82,7 +82,7 @@ class LoggingReceiveSpec extends WordSpec with BeforeAndAfterEach with BeforeAnd val actor = TestActorRef(new Actor { def switch: Actor.Receive = { case "becomenull" ⇒ context.become(r, false) } def receive = switch orElse LoggingReceive { - case x ⇒ sender ! "x" + case x ⇒ sender() ! "x" } }) @@ -110,7 +110,7 @@ class LoggingReceiveSpec extends WordSpec with BeforeAndAfterEach with BeforeAnd system.eventStream.subscribe(testActor, classOf[Logging.Debug]) val actor = TestActorRef(new Actor { def receive = LoggingReceive(LoggingReceive { - case _ ⇒ sender ! "x" + case _ ⇒ sender() ! "x" }) }) actor ! "buh" diff --git a/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala b/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala index 7adbbd0d14..6b0d135d77 100644 --- a/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala +++ b/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala @@ -31,13 +31,13 @@ trait TcpIntegrationSpecSupport { _: AkkaSpec ⇒ connectCommander.send(IO(Tcp), Connect(endpoint, options = connectOptions)) val Connected(`endpoint`, localAddress) = connectCommander.expectMsgType[Connected] val clientHandler = TestProbe() - connectCommander.sender ! Register(clientHandler.ref) + connectCommander.sender() ! Register(clientHandler.ref) val Connected(`localAddress`, `endpoint`) = bindHandler.expectMsgType[Connected] val serverHandler = TestProbe() - bindHandler.sender ! Register(serverHandler.ref) + bindHandler.sender() ! Register(serverHandler.ref) - (clientHandler, connectCommander.sender, serverHandler, bindHandler.sender) + (clientHandler, connectCommander.sender(), serverHandler, bindHandler.sender()) } @tailrec final def expectReceivedData(handler: TestProbe, remaining: Int): Unit = diff --git a/akka-actor-tests/src/test/scala/akka/io/UdpConnectedIntegrationSpec.scala b/akka-actor-tests/src/test/scala/akka/io/UdpConnectedIntegrationSpec.scala index a1006b5dde..a39767b30f 100644 --- a/akka-actor-tests/src/test/scala/akka/io/UdpConnectedIntegrationSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/io/UdpConnectedIntegrationSpec.scala @@ -20,14 +20,14 @@ class UdpConnectedIntegrationSpec extends AkkaSpec(""" val commander = TestProbe() commander.send(IO(Udp), Udp.Bind(handler, address)) commander.expectMsg(Udp.Bound(address)) - commander.sender + commander.sender() } def connectUdp(localAddress: Option[InetSocketAddress], remoteAddress: InetSocketAddress, handler: ActorRef): ActorRef = { val commander = TestProbe() commander.send(IO(UdpConnected), UdpConnected.Connect(handler, remoteAddress, localAddress, Nil)) commander.expectMsg(UdpConnected.Connected) - commander.sender + commander.sender() } "The UDP connection oriented implementation" must { diff --git a/akka-actor-tests/src/test/scala/akka/io/UdpIntegrationSpec.scala b/akka-actor-tests/src/test/scala/akka/io/UdpIntegrationSpec.scala index 1a843eeafd..c8c25b6eaa 100644 --- a/akka-actor-tests/src/test/scala/akka/io/UdpIntegrationSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/io/UdpIntegrationSpec.scala @@ -20,14 +20,14 @@ class UdpIntegrationSpec extends AkkaSpec(""" val commander = TestProbe() commander.send(IO(Udp), Bind(handler, address)) commander.expectMsg(Bound(address)) - commander.sender + commander.sender() } val simpleSender: ActorRef = { val commander = TestProbe() commander.send(IO(Udp), SimpleSender) commander.expectMsg(SimpleSenderReady) - commander.sender + commander.sender() } "The UDP Fire-and-Forget implementation" must { diff --git a/akka-actor-tests/src/test/scala/akka/oldrouting/ConfiguredLocalRoutingSpec.scala b/akka-actor-tests/src/test/scala/akka/oldrouting/ConfiguredLocalRoutingSpec.scala index eb71fda037..74b485f27b 100644 --- a/akka-actor-tests/src/test/scala/akka/oldrouting/ConfiguredLocalRoutingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/oldrouting/ConfiguredLocalRoutingSpec.scala @@ -62,7 +62,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con "be picked up from Props" in { val actor = system.actorOf(Props(new Actor { def receive = { - case "get" ⇒ sender ! context.props + case "get" ⇒ sender() ! context.props } }).withRouter(RoundRobinRouter(12)), "someOther") routerConfig(actor) should equal(RoundRobinRouter(12)) @@ -72,7 +72,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con "be overridable in config" in { val actor = system.actorOf(Props(new Actor { def receive = { - case "get" ⇒ sender ! context.props + case "get" ⇒ sender() ! context.props } }).withRouter(RoundRobinRouter(12)), "config") routerConfig(actor) should equal(RandomPool(4)) @@ -82,7 +82,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con "be overridable in explicit deployment" in { val actor = system.actorOf(Props(new Actor { def receive = { - case "get" ⇒ sender ! context.props + case "get" ⇒ sender() ! context.props } }).withRouter(FromConfig).withDeploy(Deploy(routerConfig = RoundRobinRouter(12))), "someOther") routerConfig(actor) should equal(RoundRobinRouter(12)) @@ -92,7 +92,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con "be overridable in config even with explicit deployment" in { val actor = system.actorOf(Props(new Actor { def receive = { - case "get" ⇒ sender ! context.props + case "get" ⇒ sender() ! context.props } }).withRouter(FromConfig).withDeploy(Deploy(routerConfig = RoundRobinRouter(12))), "config") routerConfig(actor) should equal(RandomPool(4)) @@ -159,7 +159,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con val actor = system.actorOf(Props(new Actor { lazy val id = counter.getAndIncrement() def receive = { - case "hit" ⇒ sender ! id + case "hit" ⇒ sender() ! id case "end" ⇒ doneLatch.countDown() } }).withRouter(RoundRobinRouter(connectionCount)), "round-robin") @@ -208,7 +208,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con val actor = system.actorOf(Props(new Actor { def receive = { - case "hello" ⇒ sender ! "world" + case "hello" ⇒ sender() ! "world" } override def postStop() { @@ -244,7 +244,7 @@ class ConfiguredLocalRoutingSpec extends AkkaSpec(ConfiguredLocalRoutingSpec.con val actor = system.actorOf(Props(new Actor { lazy val id = counter.getAndIncrement() def receive = { - case "hit" ⇒ sender ! id + case "hit" ⇒ sender() ! id case "end" ⇒ doneLatch.countDown() } }).withRouter(RandomRouter(connectionCount)), "random") diff --git a/akka-actor-tests/src/test/scala/akka/oldrouting/ConsistentHashingRouterSpec.scala b/akka-actor-tests/src/test/scala/akka/oldrouting/ConsistentHashingRouterSpec.scala index d1271d7ed9..b15aaeb944 100644 --- a/akka-actor-tests/src/test/scala/akka/oldrouting/ConsistentHashingRouterSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/oldrouting/ConsistentHashingRouterSpec.scala @@ -35,7 +35,7 @@ object ConsistentHashingRouterSpec { class Echo extends Actor { def receive = { - case _ ⇒ sender ! self + case _ ⇒ sender() ! self } } diff --git a/akka-actor-tests/src/test/scala/akka/oldrouting/ResizerSpec.scala b/akka-actor-tests/src/test/scala/akka/oldrouting/ResizerSpec.scala index 6938345968..35a57be356 100644 --- a/akka-actor-tests/src/test/scala/akka/oldrouting/ResizerSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/oldrouting/ResizerSpec.scala @@ -144,8 +144,8 @@ class ResizerSpec extends AkkaSpec(ResizerSpec.config) with DefaultTimeout with val router = system.actorOf(Props(new Actor { def receive = { case d: FiniteDuration ⇒ - Thread.sleep(d.dilated.toMillis); sender ! "done" - case "echo" ⇒ sender ! "reply" + Thread.sleep(d.dilated.toMillis); sender() ! "done" + case "echo" ⇒ sender() ! "reply" } }).withRouter(RoundRobinRouter(resizer = Some(resizer)))) diff --git a/akka-actor-tests/src/test/scala/akka/oldrouting/RoutingSpec.scala b/akka-actor-tests/src/test/scala/akka/oldrouting/RoutingSpec.scala index 3bd5ebe8d4..746b9ff109 100644 --- a/akka-actor-tests/src/test/scala/akka/oldrouting/RoutingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/oldrouting/RoutingSpec.scala @@ -47,7 +47,7 @@ object RoutingSpec { class Echo extends Actor { def receive = { - case _ ⇒ sender ! self + case _ ⇒ sender() ! self } } @@ -224,8 +224,8 @@ class RoutingSpec extends AkkaSpec(RoutingSpec.config) with DefaultTimeout with def receive = { case "start" ⇒ context.actorOf(Props(new Actor { - def receive = { case x ⇒ sender ! x } - }).withRouter(RoundRobinRouter(2))) ? "hello" pipeTo sender + def receive = { case x ⇒ sender() ! x } + }).withRouter(RoundRobinRouter(2))) ? "hello" pipeTo sender() } })) ! "start" expectMsg("hello") @@ -470,7 +470,7 @@ class RoutingSpec extends AkkaSpec(RoutingSpec.config) with DefaultTimeout with case "end" ⇒ doneLatch.countDown() case msg: Int ⇒ counter1.addAndGet(msg) - sender ! "ack" + sender() ! "ack" } })) @@ -552,7 +552,7 @@ class RoutingSpec extends AkkaSpec(RoutingSpec.config) with DefaultTimeout with case _id: Int if (_id == id) ⇒ case x ⇒ { Thread sleep 100 * id - sender ! id + sender() ! id } } diff --git a/akka-actor-tests/src/test/scala/akka/pattern/AskSpec.scala b/akka-actor-tests/src/test/scala/akka/pattern/AskSpec.scala index ad73024623..abdcc5d270 100644 --- a/akka-actor-tests/src/test/scala/akka/pattern/AskSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/pattern/AskSpec.scala @@ -49,7 +49,7 @@ class AskSpec extends AkkaSpec { "return broken promises on 0 timeout" in { implicit val timeout = Timeout(0 seconds) - val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender ! x } })) + val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender() ! x } })) val f = echo ? "foo" val expectedMsg = "Timeout length must not be negative, question not sent to [%s]" format echo intercept[IllegalArgumentException] { @@ -59,7 +59,7 @@ class AskSpec extends AkkaSpec { "return broken promises on < 0 timeout" in { implicit val timeout = Timeout(-1000 seconds) - val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender ! x } })) + val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender() ! x } })) val f = echo ? "foo" val expectedMsg = "Timeout length must not be negative, question not sent to [%s]" format echo intercept[IllegalArgumentException] { @@ -87,7 +87,7 @@ class AskSpec extends AkkaSpec { "work for ActorSelection" in { implicit val timeout = Timeout(5 seconds) import system.dispatcher - val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender ! x } }), "select-echo") + val echo = system.actorOf(Props(new Actor { def receive = { case x ⇒ sender() ! x } }), "select-echo") val identityFuture = (system.actorSelection("/user/select-echo") ? Identify(None)) .mapTo[ActorIdentity].map(_.ref.get) diff --git a/akka-actor-tests/src/test/scala/akka/pattern/PipeToSpec.scala b/akka-actor-tests/src/test/scala/akka/pattern/PipeToSpec.scala index f3ddff4703..ece49b3b76 100644 --- a/akka-actor-tests/src/test/scala/akka/pattern/PipeToSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/pattern/PipeToSpec.scala @@ -27,7 +27,7 @@ class PipeToSpec extends AkkaSpec { p.expectMsgType[Status.Failure].cause.getMessage should be("failed") } - "pick up an implicit sender" in { + "pick up an implicit sender()" in { val p = TestProbe() implicit val s = testActor Future(42) pipeTo p.ref @@ -41,7 +41,7 @@ class PipeToSpec extends AkkaSpec { p.expectMsg(42) } - "work in Java form with sender" in { + "work in Java form with sender()" in { val p = TestProbe() pipe(Future(42)) to (p.ref, testActor) p.expectMsg(42) @@ -66,7 +66,7 @@ class PipeToSpec extends AkkaSpec { p.expectMsgType[Status.Failure].cause.getMessage should be("failed") } - "pick up an implicit sender" in { + "pick up an implicit sender()" in { val p = TestProbe() val sel = system.actorSelection(p.ref.path) implicit val s = testActor @@ -82,7 +82,7 @@ class PipeToSpec extends AkkaSpec { p.expectMsg(42) } - "work in Java form with sender" in { + "work in Java form with sender()" in { val p = TestProbe() val sel = system.actorSelection(p.ref.path) pipe(Future(42)) to (sel, testActor) diff --git a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellLatencyPerformanceSpec.scala b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellLatencyPerformanceSpec.scala index 1ead750130..0f3a86af61 100644 --- a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellLatencyPerformanceSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellLatencyPerformanceSpec.scala @@ -93,7 +93,7 @@ object TellLatencyPerformanceSpec { class Destination extends Actor { def receive = { - case msg: Msg ⇒ sender ! msg + case msg: Msg ⇒ sender() ! msg } } diff --git a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputComputationPerformanceSpec.scala b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputComputationPerformanceSpec.scala index fc64362942..200c4ad186 100644 --- a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputComputationPerformanceSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputComputationPerformanceSpec.scala @@ -154,7 +154,7 @@ object TellThroughputComputationPerformanceSpec { def receive = { case Msg ⇒ calculatePi() - sender ! Msg + sender() ! Msg } } diff --git a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputPerformanceSpec.scala b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputPerformanceSpec.scala index 05f7b8d477..23c0e244ff 100644 --- a/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputPerformanceSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/performance/microbench/TellThroughputPerformanceSpec.scala @@ -141,13 +141,13 @@ object TellThroughputPerformanceSpec { class Destination1 extends Actor { def receive = { - case Msg ⇒ sender ! Msg + case Msg ⇒ sender() ! Msg } } class Destination2 extends Actor { def receive = { - case Msg ⇒ sender ! Msg + case Msg ⇒ sender() ! Msg } } diff --git a/akka-actor-tests/src/test/scala/akka/performance/trading/system/MatchingEngine.scala b/akka-actor-tests/src/test/scala/akka/performance/trading/system/MatchingEngine.scala index cf5142f0ba..fc9df43edf 100644 --- a/akka-actor-tests/src/test/scala/akka/performance/trading/system/MatchingEngine.scala +++ b/akka-actor-tests/src/test/scala/akka/performance/trading/system/MatchingEngine.scala @@ -43,7 +43,7 @@ class AkkaMatchingEngine(val meId: String, val orderbooks: List[Orderbook]) def done(status: Boolean, order: Order) { if (standby.isEmpty) { - sender ! Rsp(order, status) + sender() ! Rsp(order, status) } } diff --git a/akka-actor-tests/src/test/scala/akka/performance/trading/system/OrderReceiver.scala b/akka-actor-tests/src/test/scala/akka/performance/trading/system/OrderReceiver.scala index e20966405f..bfa8fdb54b 100644 --- a/akka-actor-tests/src/test/scala/akka/performance/trading/system/OrderReceiver.scala +++ b/akka-actor-tests/src/test/scala/akka/performance/trading/system/OrderReceiver.scala @@ -41,7 +41,7 @@ class AkkaOrderReceiver extends Actor with OrderReceiver with ActorLogging { m forward order case None ⇒ log.warning("Unknown orderbook: " + order.orderbookSymbol) - sender ! Rsp(order, false) + sender() ! Rsp(order, false) } } } diff --git a/akka-actor-tests/src/test/scala/akka/routing/BroadcastSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/BroadcastSpec.scala index a65649a6d4..a6b9001acc 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/BroadcastSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/BroadcastSpec.scala @@ -61,7 +61,7 @@ class BroadcastSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { case "end" ⇒ doneLatch.countDown() case msg: Int ⇒ counter1.addAndGet(msg) - sender ! "ack" + sender() ! "ack" } })) diff --git a/akka-actor-tests/src/test/scala/akka/routing/ConfiguredLocalRoutingSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/ConfiguredLocalRoutingSpec.scala index 6cb4be1f2b..66ba4083f4 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/ConfiguredLocalRoutingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/ConfiguredLocalRoutingSpec.scala @@ -71,7 +71,7 @@ object ConfiguredLocalRoutingSpec { class EchoProps extends Actor { def receive = { - case "get" ⇒ sender ! context.props + case "get" ⇒ sender() ! context.props } } diff --git a/akka-actor-tests/src/test/scala/akka/routing/ConsistentHashingRouterSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/ConsistentHashingRouterSpec.scala index 332d3a14d1..b62ef364e8 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/ConsistentHashingRouterSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/ConsistentHashingRouterSpec.scala @@ -32,8 +32,8 @@ object ConsistentHashingRouterSpec { class Echo extends Actor { def receive = { - case x: ConsistentHashableEnvelope ⇒ sender ! s"Unexpected envelope: $x" - case _ ⇒ sender ! self + case x: ConsistentHashableEnvelope ⇒ sender() ! s"Unexpected envelope: $x" + case _ ⇒ sender() ! self } } diff --git a/akka-actor-tests/src/test/scala/akka/routing/RandomSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/RandomSpec.scala index eceb33f77c..3c647430ab 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/RandomSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/RandomSpec.scala @@ -21,7 +21,7 @@ class RandomSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { val actor = system.actorOf(RandomPool(7).props(Props(new Actor { def receive = { - case "hello" ⇒ sender ! "world" + case "hello" ⇒ sender() ! "world" } override def postStop() { @@ -58,7 +58,7 @@ class RandomSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { Props(new Actor { lazy val id = counter.getAndIncrement() def receive = { - case "hit" ⇒ sender ! id + case "hit" ⇒ sender() ! id case "end" ⇒ doneLatch.countDown() } })), name = "random") diff --git a/akka-actor-tests/src/test/scala/akka/routing/ResizerSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/ResizerSpec.scala index b62106511d..ab2413ac07 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/ResizerSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/ResizerSpec.scala @@ -144,8 +144,8 @@ class ResizerSpec extends AkkaSpec(ResizerSpec.config) with DefaultTimeout with Props(new Actor { def receive = { case d: FiniteDuration ⇒ - Thread.sleep(d.dilated.toMillis); sender ! "done" - case "echo" ⇒ sender ! "reply" + Thread.sleep(d.dilated.toMillis); sender() ! "done" + case "echo" ⇒ sender() ! "reply" } }))) diff --git a/akka-actor-tests/src/test/scala/akka/routing/RoundRobinSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/RoundRobinSpec.scala index cde3edd41c..7c7f6ce422 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/RoundRobinSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/RoundRobinSpec.scala @@ -58,7 +58,7 @@ class RoundRobinSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { val actor = system.actorOf(RoundRobinPool(connectionCount).props(routeeProps = Props(new Actor { lazy val id = counter.getAndIncrement() def receive = { - case "hit" ⇒ sender ! id + case "hit" ⇒ sender() ! id case "end" ⇒ doneLatch.countDown() } })), "round-robin") @@ -128,7 +128,7 @@ class RoundRobinSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { val paths = (1 to connectionCount) map { n ⇒ val ref = system.actorOf(Props(new Actor { def receive = { - case "hit" ⇒ sender ! self.path.name + case "hit" ⇒ sender() ! self.path.name case "end" ⇒ doneLatch.countDown() } }), name = "target-" + n) @@ -170,13 +170,13 @@ class RoundRobinSpec extends AkkaSpec with DefaultTimeout with ImplicitSender { router = router.removeRoutee(c) if (router.routees.isEmpty) context.stop(self) - case other ⇒ router.route(other, sender) + case other ⇒ router.route(other, sender()) } })) val childProps = Props(new Actor { def receive = { - case "hit" ⇒ sender ! self.path.name + case "hit" ⇒ sender() ! self.path.name case "end" ⇒ context.stop(self) } }) diff --git a/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala index 78b6c0c2ce..b971cd6848 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala @@ -47,7 +47,7 @@ object RoutingSpec { class Echo extends Actor { def receive = { - case _ ⇒ sender ! self + case _ ⇒ sender() ! self } } @@ -202,8 +202,8 @@ class RoutingSpec extends AkkaSpec(RoutingSpec.config) with DefaultTimeout with def receive = { case "start" ⇒ context.actorOf(RoundRobinPool(2).props(routeeProps = Props(new Actor { - def receive = { case x ⇒ sender ! x } - }))) ? "hello" pipeTo sender + def receive = { case x ⇒ sender() ! x } + }))) ? "hello" pipeTo sender() } })) ! "start" expectMsg("hello") diff --git a/akka-actor-tests/src/test/scala/akka/routing/ScatterGatherFirstCompletedSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/ScatterGatherFirstCompletedSpec.scala index 60275726f0..055f46cfc2 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/ScatterGatherFirstCompletedSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/ScatterGatherFirstCompletedSpec.scala @@ -26,7 +26,7 @@ object ScatterGatherFirstCompletedSpec { case _id: Int if (_id == id) ⇒ case x ⇒ { Thread sleep 100 * id - sender ! id + sender() ! id } } diff --git a/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala b/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala index 2e01b5702c..923958fdcb 100644 --- a/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/serialization/SerializeSpec.scala @@ -83,7 +83,7 @@ object SerializationTests { class FooActor extends Actor { def receive = { - case s: String ⇒ sender ! s + case s: String ⇒ sender() ! s } } @@ -93,7 +93,7 @@ object SerializationTests { class NonSerializableActor(system: ActorSystem) extends Actor { def receive = { - case s: String ⇒ sender ! s + case s: String ⇒ sender() ! s } } diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index 43103e8079..5634c49e3c 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -356,7 +356,7 @@ object Actor { * - ''SHUTDOWN'' (when 'stop' is invoked) - can't do anything * * The Actor's own [[akka.actor.ActorRef]] is available as `self`, the current - * message’s sender as `sender` and the [[akka.actor.ActorContext]] as + * message’s sender as `sender()` and the [[akka.actor.ActorContext]] as * `context`. The only abstract method is `receive` which shall return the * initial behavior of the actor as a partial function (behavior can be changed * using `context.become` and `context.unbecome`). @@ -375,23 +375,23 @@ object Actor { * * def receive = { * // directly calculated reply - * case Request(r) => sender ! calculate(r) + * case Request(r) => sender() ! calculate(r) * * // just to demonstrate how to stop yourself * case Shutdown => context.stop(self) * - * // error kernel with child replying directly to 'sender' - * case Dangerous(r) => context.actorOf(Props[ReplyToOriginWorker]).tell(PerformWork(r), sender) + * // error kernel with child replying directly to 'sender()' + * case Dangerous(r) => context.actorOf(Props[ReplyToOriginWorker]).tell(PerformWork(r), sender()) * * // error kernel with reply going through us - * case OtherJob(r) => context.actorOf(Props[ReplyToMeWorker]) ! JobRequest(r, sender) + * case OtherJob(r) => context.actorOf(Props[ReplyToMeWorker]) ! JobRequest(r, sender()) * case JobReply(result, orig_s) => orig_s ! result * } * } * }}} * * The last line demonstrates the essence of the error kernel design: spawn - * one-off actors which terminate after doing their job, pass on `sender` to + * one-off actors which terminate after doing their job, pass on `sender()` to * allow direct reply if that is what makes sense, or round-trip the sender * as shown with the fictitious JobRequest/JobReply message pair. * @@ -446,7 +446,7 @@ trait Actor { * WARNING: Only valid within the Actor itself, so do not close over it and * publish it to other threads! */ - final def sender: ActorRef = context.sender + final def sender(): ActorRef = context.sender() /** * This defines the initial actor behavior, it must return a partial function @@ -561,7 +561,7 @@ trait Actor { def unhandled(message: Any): Unit = { message match { case Terminated(dead) ⇒ throw new DeathPactException(dead) - case _ ⇒ context.system.eventStream.publish(UnhandledMessage(message, sender, self)) + case _ ⇒ context.system.eventStream.publish(UnhandledMessage(message, sender(), self)) } } } diff --git a/akka-actor/src/main/scala/akka/actor/ActorCell.scala b/akka-actor/src/main/scala/akka/actor/ActorCell.scala index 7c1a96c1d3..5e1c3eb4d2 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorCell.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorCell.scala @@ -91,7 +91,7 @@ trait ActorContext extends ActorRefFactory { /** * Returns the sender 'ActorRef' of the current message. */ - def sender: ActorRef + def sender(): ActorRef /** * Returns all supervised children; this method returns a view (i.e. a lazy @@ -478,15 +478,15 @@ private[akka] class ActorCell( case Kill ⇒ throw new ActorKilledException("Kill") case PoisonPill ⇒ self.stop() case sel: ActorSelectionMessage ⇒ receiveSelection(sel) - case Identify(messageId) ⇒ sender ! ActorIdentity(messageId, Some(self)) + case Identify(messageId) ⇒ sender() ! ActorIdentity(messageId, Some(self)) } } private def receiveSelection(sel: ActorSelectionMessage): Unit = if (sel.elements.isEmpty) - invoke(Envelope(sel.msg, sender, system)) + invoke(Envelope(sel.msg, sender(), system)) else - ActorSelection.deliverSelection(self, sender, sel) + ActorSelection.deliverSelection(self, sender(), sel) final def receiveMessage(msg: Any): Unit = actor.aroundReceive(behaviorStack.head, msg) @@ -494,7 +494,7 @@ private[akka] class ActorCell( * ACTOR CONTEXT IMPLEMENTATION */ - final def sender: ActorRef = currentMessage match { + final def sender(): ActorRef = currentMessage match { case null ⇒ system.deadLetters case msg if msg.sender ne null ⇒ msg.sender case _ ⇒ system.deadLetters diff --git a/akka-actor/src/main/scala/akka/actor/ActorDSL.scala b/akka-actor/src/main/scala/akka/actor/ActorDSL.scala index 56946f7e1b..e55aa96909 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorDSL.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorDSL.scala @@ -90,7 +90,7 @@ object ActorDSL extends dsl.Inbox with dsl.Creators { val boss = system.asInstanceOf[ActorSystemImpl].systemActorOf(Props( new Actor { - def receive = { case any ⇒ sender ! any } + def receive = { case any ⇒ sender() ! any } }), "dsl").asInstanceOf[RepointableActorRef] { diff --git a/akka-actor/src/main/scala/akka/actor/ActorRef.scala b/akka-actor/src/main/scala/akka/actor/ActorRef.scala index d8ae428c10..cc51b239e7 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRef.scala @@ -45,10 +45,10 @@ object ActorRef { * * def receive { * case Request1(msg) => other ! refine(msg) // uses this actor as sender reference, reply goes to us - * case Request2(msg) => other.tell(msg, sender) // forward sender reference, enabling direct reply + * case Request2(msg) => other.tell(msg, sender()) // forward sender reference, enabling direct reply * case Request3(msg) => * implicit val timeout = Timeout(5.seconds) - * sender ! (other ? msg) // will reply with a Future for holding other's reply + * sender() ! (other ? msg) // will reply with a Future for holding other's reply * } * } * }}} @@ -127,7 +127,7 @@ abstract class ActorRef extends java.lang.Comparable[ActorRef] with Serializable * * Works, no matter whether originally sent with tell/'!' or ask/'?'. */ - def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender) + def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender()) /** * Is the actor shut down? @@ -168,7 +168,7 @@ trait ScalaActorRef { ref: ActorRef ⇒ * If invoked from within an actor then the actor reference is implicitly passed on as the implicit 'sender' argument. *

* - * This actor 'sender' reference is then available in the receiving actor in the 'sender' member variable, + * This actor 'sender' reference is then available in the receiving actor in the 'sender()' member variable, * if invoked from within an Actor. If not then no sender is available. *

    *   actor ! message
diff --git a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
index 07bc227b44..d5f6ec0bca 100644
--- a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
+++ b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
@@ -370,7 +370,7 @@ private[akka] object LocalActorRefProvider {
     def receive = {
       case Terminated(_)    ⇒ context.stop(self)
       case StopChild(child) ⇒ context.stop(child)
-      case m                ⇒ context.system.deadLetters forward DeadLetter(m, sender, self)
+      case m                ⇒ context.system.deadLetters forward DeadLetter(m, sender(), self)
     }
 
     // guardian MUST NOT lose its children during restart
@@ -399,16 +399,16 @@ private[akka] object LocalActorRefProvider {
         // termination process of guardian has started
         terminationHooks -= a
       case StopChild(child) ⇒ context.stop(child)
-      case RegisterTerminationHook if sender != context.system.deadLetters ⇒
-        terminationHooks += sender
-        context watch sender
-      case m ⇒ context.system.deadLetters forward DeadLetter(m, sender, self)
+      case RegisterTerminationHook if sender() != context.system.deadLetters ⇒
+        terminationHooks += sender()
+        context watch sender()
+      case m ⇒ context.system.deadLetters forward DeadLetter(m, sender(), self)
     }
 
     def terminating: Receive = {
       case Terminated(a)       ⇒ stopWhenAllTerminationHooksDone(a)
-      case TerminationHookDone ⇒ stopWhenAllTerminationHooksDone(sender)
-      case m                   ⇒ context.system.deadLetters forward DeadLetter(m, sender, self)
+      case TerminationHookDone ⇒ stopWhenAllTerminationHooksDone(sender())
+      case m                   ⇒ context.system.deadLetters forward DeadLetter(m, sender(), self)
     }
 
     def stopWhenAllTerminationHooksDone(remove: ActorRef): Unit = {
diff --git a/akka-actor/src/main/scala/akka/actor/ActorSelection.scala b/akka-actor/src/main/scala/akka/actor/ActorSelection.scala
index 967a426eb8..9e67483077 100644
--- a/akka-actor/src/main/scala/akka/actor/ActorSelection.scala
+++ b/akka-actor/src/main/scala/akka/actor/ActorSelection.scala
@@ -45,7 +45,7 @@ abstract class ActorSelection extends Serializable {
    *
    * Works, no matter whether originally sent with tell/'!' or ask/'?'.
    */
-  def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender)
+  def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender())
 
   /**
    * Resolve the [[ActorRef]] matching this selection.
diff --git a/akka-actor/src/main/scala/akka/actor/FSM.scala b/akka-actor/src/main/scala/akka/actor/FSM.scala
index db8c150d53..0586e571bd 100644
--- a/akka-actor/src/main/scala/akka/actor/FSM.scala
+++ b/akka-actor/src/main/scala/akka/actor/FSM.scala
@@ -573,7 +573,7 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging {
         timeoutFuture = None
       }
       generation += 1
-      processMsg(value, sender)
+      processMsg(value, sender())
     }
   }
 
@@ -597,7 +597,7 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging {
     nextState.stopReason match {
       case None ⇒ makeTransition(nextState)
       case _ ⇒
-        nextState.replies.reverse foreach { r ⇒ sender ! r }
+        nextState.replies.reverse foreach { r ⇒ sender() ! r }
         terminate(nextState)
         context.stop(self)
     }
@@ -607,7 +607,7 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging {
     if (!stateFunctions.contains(nextState.stateName)) {
       terminate(stay withStopReason Failure("Next state %s does not exist".format(nextState.stateName)))
     } else {
-      nextState.replies.reverse foreach { r ⇒ sender ! r }
+      nextState.replies.reverse foreach { r ⇒ sender() ! r }
       if (currentState.stateName != nextState.stateName) {
         this.nextState = nextState
         handleTransition(currentState.stateName, nextState.stateName)
diff --git a/akka-actor/src/main/scala/akka/actor/TypedActor.scala b/akka-actor/src/main/scala/akka/actor/TypedActor.scala
index 1f36a4dfce..d21f234d98 100644
--- a/akka-actor/src/main/scala/akka/actor/TypedActor.scala
+++ b/akka-actor/src/main/scala/akka/actor/TypedActor.scala
@@ -307,7 +307,7 @@ object TypedActor extends ExtensionId[TypedActorExtension] with ExtensionIdProvi
         if (m.isOneWay) m(me)
         else {
           try {
-            val s = sender
+            val s = sender()
             m(me) match {
               case f: Future[_] if m.returnsFuture ⇒
                 implicit val dispatcher = context.dispatcher
@@ -321,14 +321,14 @@ object TypedActor extends ExtensionId[TypedActorExtension] with ExtensionIdProvi
             }
           } catch {
             case NonFatal(e) ⇒
-              sender ! Status.Failure(e)
+              sender() ! Status.Failure(e)
               throw e
           }
         }
       }
 
       case msg if me.isInstanceOf[Receiver] ⇒ withContext {
-        me.asInstanceOf[Receiver].onReceive(msg, sender)
+        me.asInstanceOf[Receiver].onReceive(msg, sender())
       }
     }
   }
diff --git a/akka-actor/src/main/scala/akka/actor/UntypedActor.scala b/akka-actor/src/main/scala/akka/actor/UntypedActor.scala
index 46e3dd0f68..4670e6fcff 100644
--- a/akka-actor/src/main/scala/akka/actor/UntypedActor.scala
+++ b/akka-actor/src/main/scala/akka/actor/UntypedActor.scala
@@ -120,7 +120,7 @@ abstract class UntypedActor extends Actor {
    * always a legal destination to send to, even if there is no logical recipient
    * for the reply, in which case it will be sent to the dead letter mailbox.
    */
-  def getSender(): ActorRef = sender
+  def getSender(): ActorRef = sender()
 
   /**
    * User overridable definition the strategy to use for supervising
diff --git a/akka-actor/src/main/scala/akka/actor/dsl/Inbox.scala b/akka-actor/src/main/scala/akka/actor/dsl/Inbox.scala
index 6cbeb13d2b..da76eff4af 100644
--- a/akka-actor/src/main/scala/akka/actor/dsl/Inbox.scala
+++ b/akka-actor/src/main/scala/akka/actor/dsl/Inbox.scala
@@ -66,7 +66,7 @@ trait Inbox { this: ActorDSL.type ⇒
     var printedWarning = false
 
     def enqueueQuery(q: Query) {
-      val query = q withClient sender
+      val query = q withClient sender()
       clients enqueue query
       clientsByTimeout += query
     }
@@ -96,13 +96,13 @@ trait Inbox { this: ActorDSL.type ⇒
     def receive = ({
       case g: Get ⇒
         if (messages.isEmpty) enqueueQuery(g)
-        else sender ! messages.dequeue()
+        else sender() ! messages.dequeue()
       case s @ Select(_, predicate, _) ⇒
         if (messages.isEmpty) enqueueQuery(s)
         else {
           currentSelect = s
           messages.dequeueFirst(messagePredicate) match {
-            case Some(msg) ⇒ sender ! msg
+            case Some(msg) ⇒ sender() ! msg
             case None      ⇒ enqueueQuery(s)
           }
           currentSelect = null
diff --git a/akka-actor/src/main/scala/akka/event/Logging.scala b/akka-actor/src/main/scala/akka/event/Logging.scala
index 59950a74ec..a991323edd 100644
--- a/akka-actor/src/main/scala/akka/event/Logging.scala
+++ b/akka-actor/src/main/scala/akka/event/Logging.scala
@@ -793,7 +793,7 @@ object Logging {
    */
   class DefaultLogger extends Actor with StdOutLogger {
     override def receive: Receive = {
-      case InitializeLogger(_) ⇒ sender ! LoggerInitialized
+      case InitializeLogger(_) ⇒ sender() ! LoggerInitialized
       case event: LogEvent     ⇒ print(event)
     }
   }
diff --git a/akka-actor/src/main/scala/akka/io/SelectionHandler.scala b/akka-actor/src/main/scala/akka/io/SelectionHandler.scala
index 33ea95344c..3c634c6670 100644
--- a/akka-actor/src/main/scala/akka/io/SelectionHandler.scala
+++ b/akka-actor/src/main/scala/akka/io/SelectionHandler.scala
@@ -84,7 +84,7 @@ private[io] object SelectionHandler {
       name = "selectors")
 
     final def workerForCommandHandler(pf: PartialFunction[HasFailureMessage, ChannelRegistry ⇒ Props]): Receive = {
-      case cmd: HasFailureMessage if pf.isDefinedAt(cmd) ⇒ selectorPool ! WorkerForCommand(cmd, sender, pf(cmd))
+      case cmd: HasFailureMessage if pf.isDefinedAt(cmd) ⇒ selectorPool ! WorkerForCommand(cmd, sender(), pf(cmd))
     }
   }
 
diff --git a/akka-actor/src/main/scala/akka/io/TcpConnection.scala b/akka-actor/src/main/scala/akka/io/TcpConnection.scala
index 7c5e0d8f80..351af29e55 100644
--- a/akka-actor/src/main/scala/akka/io/TcpConnection.scala
+++ b/akka-actor/src/main/scala/akka/io/TcpConnection.scala
@@ -61,7 +61,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
 
     case cmd: CloseCommand ⇒
       val info = ConnectionInfo(registration, commander, keepOpenOnPeerClosed = false, useResumeWriting = false)
-      handleClose(info, Some(sender), cmd.event)
+      handleClose(info, Some(sender()), cmd.event)
 
     case ReceiveTimeout ⇒
       // after sending `Register` user should watch this actor to make sure
@@ -76,13 +76,13 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
       case SuspendReading    ⇒ suspendReading(info)
       case ResumeReading     ⇒ resumeReading(info)
       case ChannelReadable   ⇒ doRead(info, None)
-      case cmd: CloseCommand ⇒ handleClose(info, Some(sender), cmd.event)
+      case cmd: CloseCommand ⇒ handleClose(info, Some(sender()), cmd.event)
     }
 
   /** the peer sent EOF first, but we may still want to send */
   def peerSentEOF(info: ConnectionInfo): Receive =
     handleWriteMessages(info) orElse {
-      case cmd: CloseCommand ⇒ handleClose(info, Some(sender), cmd.event)
+      case cmd: CloseCommand ⇒ handleClose(info, Some(sender()), cmd.event)
     }
 
   /** connection is closing but a write has to be finished first */
@@ -104,7 +104,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
 
     case WriteFileFailed(e) ⇒ handleError(info.handler, e) // rethrow exception from dispatcher task
 
-    case Abort              ⇒ handleClose(info, Some(sender), Aborted)
+    case Abort              ⇒ handleClose(info, Some(sender()), Aborted)
   }
 
   /** connection is closed on our side and we're waiting from confirmation from the other side */
@@ -112,7 +112,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
     case SuspendReading  ⇒ suspendReading(info)
     case ResumeReading   ⇒ resumeReading(info)
     case ChannelReadable ⇒ doRead(info, closeCommander)
-    case Abort           ⇒ handleClose(info, Some(sender), Aborted)
+    case Abort           ⇒ handleClose(info, Some(sender()), Aborted)
   }
 
   def handleWriteMessages(info: ConnectionInfo): Receive = {
@@ -128,15 +128,15 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
     case write: WriteCommand ⇒
       if (writingSuspended) {
         if (TraceLogging) log.debug("Dropping write because writing is suspended")
-        sender ! write.failureMessage
+        sender() ! write.failureMessage
 
       } else if (writePending) {
         if (TraceLogging) log.debug("Dropping write because queue is full")
-        sender ! write.failureMessage
+        sender() ! write.failureMessage
         if (info.useResumeWriting) writingSuspended = true
 
       } else {
-        pendingWrite = PendingWrite(sender, write)
+        pendingWrite = PendingWrite(sender(), write)
         if (writePending) doWrite(info)
       }
 
@@ -153,9 +153,9 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
        */
       writingSuspended = false
       if (writePending) {
-        if (interestedInResume.isEmpty) interestedInResume = Some(sender)
-        else sender ! CommandFailed(ResumeWriting)
-      } else sender ! WritingResumed
+        if (interestedInResume.isEmpty) interestedInResume = Some(sender())
+        else sender() ! CommandFailed(ResumeWriting)
+      } else sender() ! WritingResumed
 
     case UpdatePendingWrite(remaining) ⇒
       pendingWrite = remaining
diff --git a/akka-actor/src/main/scala/akka/io/TcpListener.scala b/akka-actor/src/main/scala/akka/io/TcpListener.scala
index c18bd8a310..afd698e56e 100644
--- a/akka-actor/src/main/scala/akka/io/TcpListener.scala
+++ b/akka-actor/src/main/scala/akka/io/TcpListener.scala
@@ -85,7 +85,7 @@ private[io] class TcpListener(selectorRouter: ActorRef,
     case Unbind ⇒
       log.debug("Unbinding endpoint {}", localAddress)
       channel.close()
-      sender ! Unbound
+      sender() ! Unbound
       log.debug("Unbound endpoint {}, stopping listener", localAddress)
       context.stop(self)
   }
diff --git a/akka-actor/src/main/scala/akka/io/TcpManager.scala b/akka-actor/src/main/scala/akka/io/TcpManager.scala
index 50963081a6..0984dd38d5 100644
--- a/akka-actor/src/main/scala/akka/io/TcpManager.scala
+++ b/akka-actor/src/main/scala/akka/io/TcpManager.scala
@@ -18,7 +18,7 @@ import akka.actor.{ ActorLogging, Props }
  *
  * To bind and listen to a local address, a [[akka.io.Tcp.Bind]] command must be sent to this actor. If the binding
  * was successful, the sender of the [[akka.io.Tcp.Bind]] will be notified with a [[akka.io.Tcp.Bound]]
- * message. The sender of the [[akka.io.Tcp.Bound]] message is the Listener actor (an internal actor responsible for
+ * message. The sender() of the [[akka.io.Tcp.Bound]] message is the Listener actor (an internal actor responsible for
  * listening to server events). To unbind the port an [[akka.io.Tcp.Unbind]] message must be sent to the Listener actor.
  *
  * If the bind request is rejected because the Tcp system is not able to register more channels (see the nr-of-selectors
@@ -32,7 +32,7 @@ import akka.actor.{ ActorLogging, Props }
  * == Connect ==
  *
  * To initiate a connection to a remote server, a [[akka.io.Tcp.Connect]] message must be sent to this actor. If the
- * connection succeeds, the sender will be notified with a [[akka.io.Tcp.Connected]] message. The sender of the
+ * connection succeeds, the sender() will be notified with a [[akka.io.Tcp.Connected]] message. The sender of the
  * [[akka.io.Tcp.Connected]] message is the Connection actor (an internal actor representing the TCP connection). Before
  * starting to use the connection, a handler must be registered to the Connection actor by sending a [[akka.io.Tcp.Register]]
  * command message. After a handler has been registered, all incoming data will be sent to the handler in the form of
@@ -49,11 +49,11 @@ private[io] class TcpManager(tcp: TcpExt)
 
   def receive = workerForCommandHandler {
     case c: Connect ⇒
-      val commander = sender // cache because we create a function that will run asyncly
+      val commander = sender() // cache because we create a function that will run asyncly
       (registry ⇒ Props(classOf[TcpOutgoingConnection], tcp, registry, commander, c))
 
     case b: Bind ⇒
-      val commander = sender // cache because we create a function that will run asyncly
+      val commander = sender() // cache because we create a function that will run asyncly
       (registry ⇒ Props(classOf[TcpListener], selectorPool, tcp, registry, commander, b))
   }
 
diff --git a/akka-actor/src/main/scala/akka/io/UdpConnectedManager.scala b/akka-actor/src/main/scala/akka/io/UdpConnectedManager.scala
index 4bacc4db44..0b9116bd48 100644
--- a/akka-actor/src/main/scala/akka/io/UdpConnectedManager.scala
+++ b/akka-actor/src/main/scala/akka/io/UdpConnectedManager.scala
@@ -14,7 +14,7 @@ private[io] class UdpConnectedManager(udpConn: UdpConnectedExt)
 
   def receive = workerForCommandHandler {
     case c: Connect ⇒
-      val commander = sender // cache because we create a function that will run asyncly
+      val commander = sender() // cache because we create a function that will run asyncly
       registry ⇒ Props(classOf[UdpConnection], udpConn, registry, commander, c)
   }
 
diff --git a/akka-actor/src/main/scala/akka/io/UdpConnection.scala b/akka-actor/src/main/scala/akka/io/UdpConnection.scala
index 4e9b1cdf5e..d65e4e1cc1 100644
--- a/akka-actor/src/main/scala/akka/io/UdpConnection.scala
+++ b/akka-actor/src/main/scala/akka/io/UdpConnection.scala
@@ -65,20 +65,20 @@ private[io] class UdpConnection(udpConn: UdpConnectedExt,
     case Disconnect ⇒
       log.debug("Closing UDP connection to [{}]", remoteAddress)
       channel.close()
-      sender ! Disconnected
+      sender() ! Disconnected
       log.debug("Connection closed to [{}], stopping listener", remoteAddress)
       context.stop(self)
 
     case send: Send if writePending ⇒
       if (TraceLogging) log.debug("Dropping write because queue is full")
-      sender ! CommandFailed(send)
+      sender() ! CommandFailed(send)
 
     case send: Send if send.payload.isEmpty ⇒
       if (send.wantsAck)
-        sender ! send.ack
+        sender() ! send.ack
 
     case send: Send ⇒
-      pendingSend = (send, sender)
+      pendingSend = (send, sender())
       registration.enableInterest(OP_WRITE)
 
     case ChannelWritable ⇒ doWrite()
diff --git a/akka-actor/src/main/scala/akka/io/UdpListener.scala b/akka-actor/src/main/scala/akka/io/UdpListener.scala
index 088a48023a..812c08b47a 100644
--- a/akka-actor/src/main/scala/akka/io/UdpListener.scala
+++ b/akka-actor/src/main/scala/akka/io/UdpListener.scala
@@ -68,7 +68,7 @@ private[io] class UdpListener(val udp: UdpExt,
       log.debug("Unbinding endpoint [{}]", bind.localAddress)
       try {
         channel.close()
-        sender ! Unbound
+        sender() ! Unbound
         log.debug("Unbound endpoint [{}], stopping listener", bind.localAddress)
       } finally context.stop(self)
   }
diff --git a/akka-actor/src/main/scala/akka/io/UdpManager.scala b/akka-actor/src/main/scala/akka/io/UdpManager.scala
index 140e0dac4c..e56f732f95 100644
--- a/akka-actor/src/main/scala/akka/io/UdpManager.scala
+++ b/akka-actor/src/main/scala/akka/io/UdpManager.scala
@@ -47,11 +47,11 @@ private[io] class UdpManager(udp: UdpExt) extends SelectionHandler.SelectorBased
 
   def receive = workerForCommandHandler {
     case b: Bind ⇒
-      val commander = sender // cache because we create a function that will run asyncly
+      val commander = sender() // cache because we create a function that will run asyncly
       (registry ⇒ Props(classOf[UdpListener], udp, registry, commander, b))
 
     case SimpleSender(options) ⇒
-      val commander = sender // cache because we create a function that will run asyncly
+      val commander = sender() // cache because we create a function that will run asyncly
       (registry ⇒ Props(classOf[UdpSender], udp, registry, commander, options))
   }
 
diff --git a/akka-actor/src/main/scala/akka/io/WithUdpSend.scala b/akka-actor/src/main/scala/akka/io/WithUdpSend.scala
index 37be5c7a68..4691384213 100644
--- a/akka-actor/src/main/scala/akka/io/WithUdpSend.scala
+++ b/akka-actor/src/main/scala/akka/io/WithUdpSend.scala
@@ -30,15 +30,15 @@ private[io] trait WithUdpSend {
   def sendHandlers(registration: ChannelRegistration): Receive = {
     case send: Send if hasWritePending ⇒
       if (TraceLogging) log.debug("Dropping write because queue is full")
-      sender ! CommandFailed(send)
+      sender() ! CommandFailed(send)
 
     case send: Send if send.payload.isEmpty ⇒
       if (send.wantsAck)
-        sender ! send.ack
+        sender() ! send.ack
 
     case send: Send ⇒
       pendingSend = send
-      pendingCommander = sender
+      pendingCommander = sender()
       doSend(registration)
 
     case ChannelWritable ⇒ if (hasWritePending) doSend(registration)
diff --git a/akka-actor/src/main/scala/akka/routing/Listeners.scala b/akka-actor/src/main/scala/akka/routing/Listeners.scala
index dede8940fe..a293f51b55 100644
--- a/akka-actor/src/main/scala/akka/routing/Listeners.scala
+++ b/akka-actor/src/main/scala/akka/routing/Listeners.scala
@@ -40,7 +40,7 @@ trait Listeners { self: Actor ⇒
   }
 
   /**
-   * Sends the supplied message to all current listeners using the provided sender as sender.
+   * Sends the supplied message to all current listeners using the provided sender() as sender.
    *
    * @param msg
    * @param sender
diff --git a/akka-actor/src/main/scala/akka/routing/RoutedActorCell.scala b/akka-actor/src/main/scala/akka/routing/RoutedActorCell.scala
index c90a01eed6..218f62004e 100644
--- a/akka-actor/src/main/scala/akka/routing/RoutedActorCell.scala
+++ b/akka-actor/src/main/scala/akka/routing/RoutedActorCell.scala
@@ -166,9 +166,9 @@ private[akka] class RouterActor extends Actor {
 
   def receive = {
     case GetRoutees ⇒
-      sender ! Routees(cell.router.routees)
+      sender() ! Routees(cell.router.routees)
     case CurrentRoutees ⇒
-      context.actorOf(Props(classOf[CollectRouteeRefs], cell.router.routees, sender))
+      context.actorOf(Props(classOf[CollectRouteeRefs], cell.router.routees, sender()))
     case AddRoutee(routee) ⇒
       cell.addRoutee(routee)
     case RemoveRoutee(routee) ⇒
diff --git a/akka-camel/src/main/scala/akka/camel/Producer.scala b/akka-camel/src/main/scala/akka/camel/Producer.scala
index 7e96e4aa93..89f60cfd94 100644
--- a/akka-camel/src/main/scala/akka/camel/Producer.scala
+++ b/akka-camel/src/main/scala/akka/camel/Producer.scala
@@ -77,7 +77,7 @@ trait ProducerSupport extends Actor with CamelSupport {
     case msg ⇒
       producerChild match {
         case Some(child) ⇒ child forward transformOutgoingMessage(msg)
-        case None        ⇒ messages :+= ((sender, msg))
+        case None        ⇒ messages :+= ((sender(), msg))
       }
   }
 
@@ -103,7 +103,7 @@ trait ProducerSupport extends Actor with CamelSupport {
    * actor).
    */
 
-  protected def routeResponse(msg: Any): Unit = if (!oneway) sender ! transformResponse(msg)
+  protected def routeResponse(msg: Any): Unit = if (!oneway) sender() ! transformResponse(msg)
 
   private class ProducerChild(endpoint: Endpoint, processor: SendProcessor) extends Actor {
     def receive = {
@@ -129,7 +129,7 @@ trait ProducerSupport extends Actor with CamelSupport {
       // Need copies of sender reference here since the callback could be done
       // later by another thread.
       val producer = self
-      val originalSender = sender
+      val originalSender = sender()
       val xchg = new CamelExchangeAdapter(endpoint.createExchange(pattern))
       val cmsg = CamelMessage.canonicalize(msg)
       xchg.setRequest(cmsg)
diff --git a/akka-camel/src/main/scala/akka/camel/internal/ActivationTracker.scala b/akka-camel/src/main/scala/akka/camel/internal/ActivationTracker.scala
index a85cb665d2..2322b3e422 100644
--- a/akka-camel/src/main/scala/akka/camel/internal/ActivationTracker.scala
+++ b/akka-camel/src/main/scala/akka/camel/internal/ActivationTracker.scala
@@ -31,8 +31,8 @@ private[camel] class ActivationTracker extends Actor with ActorLogging {
       var awaitingDeActivation = List[ActorRef]()
 
       {
-        case AwaitActivation(ref)   ⇒ awaitingActivation ::= sender
-        case AwaitDeActivation(ref) ⇒ awaitingDeActivation ::= sender
+        case AwaitActivation(ref)   ⇒ awaitingActivation ::= sender()
+        case AwaitDeActivation(ref) ⇒ awaitingDeActivation ::= sender()
         case msg @ EndpointActivated(ref) ⇒
           awaitingActivation.foreach(_ ! msg)
           receive = activated(awaitingDeActivation)
@@ -51,8 +51,8 @@ private[camel] class ActivationTracker extends Actor with ActorLogging {
       var awaitingDeActivation = currentAwaitingDeActivation
 
       {
-        case AwaitActivation(ref)   ⇒ sender ! EndpointActivated(ref)
-        case AwaitDeActivation(ref) ⇒ awaitingDeActivation ::= sender
+        case AwaitActivation(ref)   ⇒ sender() ! EndpointActivated(ref)
+        case AwaitDeActivation(ref) ⇒ awaitingDeActivation ::= sender()
         case msg @ EndpointDeActivated(ref) ⇒
           awaitingDeActivation foreach (_ ! msg)
           receive = deactivated
@@ -67,9 +67,9 @@ private[camel] class ActivationTracker extends Actor with ActorLogging {
      * @return a partial function that handles messages in the 'de-activated' state
      */
     def deactivated: State = {
-      // deactivated means it was activated at some point, so tell sender it was activated
-      case AwaitActivation(ref)   ⇒ sender ! EndpointActivated(ref)
-      case AwaitDeActivation(ref) ⇒ sender ! EndpointDeActivated(ref)
+      // deactivated means it was activated at some point, so tell sender() it was activated
+      case AwaitActivation(ref)   ⇒ sender() ! EndpointActivated(ref)
+      case AwaitDeActivation(ref) ⇒ sender() ! EndpointDeActivated(ref)
       //resurrected at restart.
       case msg @ EndpointActivated(ref) ⇒
         receive = activated(Nil)
@@ -81,8 +81,8 @@ private[camel] class ActivationTracker extends Actor with ActorLogging {
      * @return a partial function that handles messages in 'failed to activate' state
      */
     def failedToActivate(cause: Throwable): State = {
-      case AwaitActivation(ref)   ⇒ sender ! EndpointFailedToActivate(ref, cause)
-      case AwaitDeActivation(ref) ⇒ sender ! EndpointFailedToActivate(ref, cause)
+      case AwaitActivation(ref)   ⇒ sender() ! EndpointFailedToActivate(ref, cause)
+      case AwaitDeActivation(ref) ⇒ sender() ! EndpointFailedToActivate(ref, cause)
       case EndpointDeActivated(_) ⇒ // the de-register at termination always sends a de-activated when the cleanup is done. ignoring.
     }
 
@@ -92,8 +92,8 @@ private[camel] class ActivationTracker extends Actor with ActorLogging {
      * @return a partial function that handles messages in 'failed to de-activate' state
      */
     def failedToDeActivate(cause: Throwable): State = {
-      case AwaitActivation(ref)   ⇒ sender ! EndpointActivated(ref)
-      case AwaitDeActivation(ref) ⇒ sender ! EndpointFailedToDeActivate(ref, cause)
+      case AwaitActivation(ref)   ⇒ sender() ! EndpointActivated(ref)
+      case AwaitDeActivation(ref) ⇒ sender() ! EndpointFailedToDeActivate(ref, cause)
       case EndpointDeActivated(_) ⇒ // the de-register at termination always sends a de-activated when the cleanup is done. ignoring.
     }
 
diff --git a/akka-camel/src/test/scala/akka/camel/ActivationIntegrationTest.scala b/akka-camel/src/test/scala/akka/camel/ActivationIntegrationTest.scala
index 7639a6754e..3223f68ffb 100644
--- a/akka-camel/src/test/scala/akka/camel/ActivationIntegrationTest.scala
+++ b/akka-camel/src/test/scala/akka/camel/ActivationIntegrationTest.scala
@@ -75,7 +75,7 @@ class ActivationIntegrationTest extends WordSpec with Matchers with SharedCamelS
     }
 
     override def receive = {
-      case msg: CamelMessage ⇒ sender ! "received " + msg.body
+      case msg: CamelMessage ⇒ sender() ! "received " + msg.body
     }
   }
 
diff --git a/akka-camel/src/test/scala/akka/camel/ConcurrentActivationTest.scala b/akka-camel/src/test/scala/akka/camel/ConcurrentActivationTest.scala
index e9a21874b9..3681abed66 100644
--- a/akka-camel/src/test/scala/akka/camel/ConcurrentActivationTest.scala
+++ b/akka-camel/src/test/scala/akka/camel/ConcurrentActivationTest.scala
@@ -159,7 +159,7 @@ class EchoConsumer(endpoint: String) extends Actor with Consumer {
   def endpointUri = endpoint
 
   def receive = {
-    case msg: CamelMessage ⇒ sender ! msg
+    case msg: CamelMessage ⇒ sender() ! msg
   }
 
   /**
diff --git a/akka-camel/src/test/scala/akka/camel/ConsumerIntegrationTest.scala b/akka-camel/src/test/scala/akka/camel/ConsumerIntegrationTest.scala
index aa9d252a55..a6e87a99c6 100644
--- a/akka-camel/src/test/scala/akka/camel/ConsumerIntegrationTest.scala
+++ b/akka-camel/src/test/scala/akka/camel/ConsumerIntegrationTest.scala
@@ -41,7 +41,7 @@ class ConsumerIntegrationTest extends WordSpec with Matchers with NonSharedCamel
       start(new Consumer {
         def endpointUri = "direct:a1"
         def receive = {
-          case m: CamelMessage ⇒ sender ! "received " + m.bodyAs[String]
+          case m: CamelMessage ⇒ sender() ! "received " + m.bodyAs[String]
         }
       }, name = "direct-a1")
       camel.sendTo("direct:a1", msg = "some message") should be("received some message")
@@ -54,7 +54,7 @@ class ConsumerIntegrationTest extends WordSpec with Matchers with NonSharedCamel
       val ref = start(new Consumer {
         override def replyTimeout = SHORT_TIMEOUT
         def endpointUri = "direct:a3"
-        def receive = { case _ ⇒ { Thread.sleep(LONG_WAIT.toMillis); sender ! "done" } }
+        def receive = { case _ ⇒ { Thread.sleep(LONG_WAIT.toMillis); sender() ! "done" } }
       }, name = "ignore-this-deadletter-timeout-consumer-reply")
 
       intercept[CamelExecutionException] {
@@ -71,7 +71,7 @@ class ConsumerIntegrationTest extends WordSpec with Matchers with NonSharedCamel
 
         def receive = {
           case "throw"         ⇒ throw new TestException("")
-          case m: CamelMessage ⇒ sender ! "received " + m.bodyAs[String]
+          case m: CamelMessage ⇒ sender() ! "received " + m.bodyAs[String]
         }
 
         override def postRestart(reason: Throwable) {
@@ -138,7 +138,7 @@ class ConsumerIntegrationTest extends WordSpec with Matchers with NonSharedCamel
     "Consumer supports manual Ack" in {
       val ref = start(new ManualAckConsumer() {
         def endpointUri = "direct:manual-ack"
-        def receive = { case _ ⇒ sender ! Ack }
+        def receive = { case _ ⇒ sender() ! Ack }
       }, name = "direct-manual-ack-1")
       camel.template.asyncSendBody("direct:manual-ack", "some message").get(defaultTimeoutDuration.toSeconds, TimeUnit.SECONDS) should be(null) //should not timeout
       stop(ref)
@@ -148,7 +148,7 @@ class ConsumerIntegrationTest extends WordSpec with Matchers with NonSharedCamel
       val someException = new Exception("e1")
       val ref = start(new ManualAckConsumer() {
         def endpointUri = "direct:manual-ack"
-        def receive = { case _ ⇒ sender ! Failure(someException) }
+        def receive = { case _ ⇒ sender() ! Failure(someException) }
       }, name = "direct-manual-ack-2")
 
       intercept[ExecutionException] {
@@ -186,7 +186,7 @@ class ErrorThrowingConsumer(override val endpointUri: String) extends Consumer {
   }
   override def preRestart(reason: Throwable, message: Option[Any]) {
     super.preRestart(reason, message)
-    sender ! Failure(reason)
+    sender() ! Failure(reason)
   }
 }
 
@@ -201,7 +201,7 @@ class ErrorRespondingConsumer(override val endpointUri: String) extends Consumer
 
   final override def preRestart(reason: Throwable, message: Option[Any]) {
     super.preRestart(reason, message)
-    sender ! Failure(reason)
+    sender() ! Failure(reason)
   }
 }
 
@@ -210,14 +210,14 @@ class FailingOnceConsumer(override val endpointUri: String) extends Consumer {
   def receive = {
     case msg: CamelMessage ⇒
       if (msg.headerAs[Boolean]("CamelRedelivered").getOrElse(false))
-        sender ! ("accepted: %s" format msg.body)
+        sender() ! ("accepted: %s" format msg.body)
       else
         throw new TestException("rejected: %s" format msg.body)
   }
 
   final override def preRestart(reason: Throwable, message: Option[Any]) {
     super.preRestart(reason, message)
-    sender ! Failure(reason)
+    sender() ! Failure(reason)
   }
 }
 
diff --git a/akka-camel/src/test/scala/akka/camel/ProducerFeatureTest.scala b/akka-camel/src/test/scala/akka/camel/ProducerFeatureTest.scala
index 57177404d8..81363efb31 100644
--- a/akka-camel/src/test/scala/akka/camel/ProducerFeatureTest.scala
+++ b/akka-camel/src/test/scala/akka/camel/ProducerFeatureTest.scala
@@ -60,7 +60,7 @@ class ProducerFeatureTest extends TestKit(ActorSystem("test", AkkaSpec.testConf)
           case p: Props ⇒ {
             val producer = context.actorOf(p)
             context.watch(producer)
-            sender ! producer
+            sender() ! producer
           }
           case Terminated(actorRef) ⇒ {
             deadActor = Some(actorRef)
@@ -275,7 +275,7 @@ object ProducerFeatureTest {
         body: String ⇒
           if (body == "err") throw new Exception("Crash!")
           val upperMsg = body.toUpperCase
-          lastSender = Some(sender)
+          lastSender = Some(sender())
           lastMessage = Some(upperMsg)
       }
       else msg
@@ -314,9 +314,9 @@ object ProducerFeatureTest {
   class TestResponder extends Actor {
     def receive = {
       case msg: CamelMessage ⇒ msg.body match {
-        case "fail" ⇒ context.sender ! akka.actor.Status.Failure(new AkkaCamelException(new Exception("failure"), msg.headers))
+        case "fail" ⇒ context.sender() ! akka.actor.Status.Failure(new AkkaCamelException(new Exception("failure"), msg.headers))
         case _ ⇒
-          context.sender ! (msg.mapBody {
+          context.sender() ! (msg.mapBody {
             body: String ⇒ "received %s" format body
           })
       }
@@ -326,10 +326,10 @@ object ProducerFeatureTest {
   class ReplyingForwardTarget extends Actor {
     def receive = {
       case msg: CamelMessage ⇒
-        context.sender ! (msg.copy(headers = msg.headers + ("test" -> "result")))
+        context.sender() ! (msg.copy(headers = msg.headers + ("test" -> "result")))
       case msg: akka.actor.Status.Failure ⇒
         msg.cause match {
-          case e: AkkaCamelException ⇒ context.sender ! Status.Failure(new AkkaCamelException(e, e.headers + ("test" -> "failure")))
+          case e: AkkaCamelException ⇒ context.sender() ! Status.Failure(new AkkaCamelException(e, e.headers + ("test" -> "failure")))
         }
     }
   }
@@ -368,8 +368,8 @@ object ProducerFeatureTest {
 
   class IntermittentErrorConsumer(override val endpointUri: String) extends Consumer {
     def receive = {
-      case msg: CamelMessage if msg.bodyAs[String] == "fail" ⇒ sender ! Failure(new Exception("fail"))
-      case msg: CamelMessage                                 ⇒ sender ! msg
+      case msg: CamelMessage if msg.bodyAs[String] == "fail" ⇒ sender() ! Failure(new Exception("fail"))
+      case msg: CamelMessage                                 ⇒ sender() ! msg
     }
   }
 
diff --git a/akka-camel/src/test/scala/akka/camel/internal/component/ActorProducerTest.scala b/akka-camel/src/test/scala/akka/camel/internal/component/ActorProducerTest.scala
index b4b4bd9f49..8bad493fdf 100644
--- a/akka-camel/src/test/scala/akka/camel/internal/component/ActorProducerTest.scala
+++ b/akka-camel/src/test/scala/akka/camel/internal/component/ActorProducerTest.scala
@@ -69,7 +69,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
             within(1 second) {
               probe.expectMsgType[CamelMessage]
               info("message sent to consumer")
-              probe.sender ! Ack
+              probe.sender() ! Ack
             }
             verify(exchange, never()).setResponse(any[CamelMessage])
             info("no response forwarded to exchange")
@@ -173,7 +173,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
 
             within(1 second) {
               probe.expectMsgType[CamelMessage]
-              probe.sender ! "some message"
+              probe.sender() ! "some message"
             }
             doneSync should be(false)
             info("done async")
@@ -196,7 +196,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
 
             within(1 second) {
               probe.expectMsgType[CamelMessage]
-              probe.sender ! failure
+              probe.sender() ! failure
               asyncCallback.awaitCalled(remaining)
             }
 
@@ -259,7 +259,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
               within(1 second) {
                 probe.expectMsgType[CamelMessage]
                 info("message sent to consumer")
-                probe.sender ! Ack
+                probe.sender() ! Ack
                 asyncCallback.expectDoneAsyncWithin(remaining)
                 info("async callback called")
               }
@@ -277,7 +277,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
               within(1 second) {
                 probe.expectMsgType[CamelMessage]
                 info("message sent to consumer")
-                probe.sender ! "some neither Ack nor Failure response"
+                probe.sender() ! "some neither Ack nor Failure response"
                 asyncCallback.expectDoneAsyncWithin(remaining)
                 info("async callback called")
               }
@@ -310,7 +310,7 @@ class ActorProducerTest extends TestKit(ActorSystem("test")) with WordSpecLike w
               within(1 second) {
                 probe.expectMsgType[CamelMessage]
                 info("message sent to consumer")
-                probe.sender ! Failure(new Exception)
+                probe.sender() ! Failure(new Exception)
                 asyncCallback.awaitCalled(remaining)
               }
               verify(exchange, never()).setResponse(any[CamelMessage])
@@ -427,7 +427,7 @@ private[camel] trait ActorProducerFixture extends MockitoSugar with BeforeAndAft
   }
 
   def echoActor = system.actorOf(Props(new Actor {
-    def receive = { case msg ⇒ sender ! "received " + msg }
+    def receive = { case msg ⇒ sender() ! "received " + msg }
   }), name = "echoActor")
 
 }
diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala
index 7c41a5f5d7..9c822cf83f 100644
--- a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala
@@ -206,7 +206,7 @@ private[cluster] final class ClusterCoreSupervisor extends Actor with ActorLoggi
   override def postStop(): Unit = Cluster(context.system).shutdown()
 
   def receive = {
-    case InternalClusterAction.GetClusterCoreRef ⇒ sender ! coreDaemon
+    case InternalClusterAction.GetClusterCoreRef ⇒ sender() ! coreDaemon
   }
 }
 
@@ -289,7 +289,7 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
   }
 
   def uninitialized: Actor.Receive = {
-    case InitJoin                          ⇒ sender ! InitJoinNack(selfAddress)
+    case InitJoin                          ⇒ sender() ! InitJoinNack(selfAddress)
     case ClusterUserAction.JoinTo(address) ⇒ join(address)
     case JoinSeedNodes(seedNodes)          ⇒ joinSeedNodes(seedNodes)
     case msg: SubscriptionMessage          ⇒ publisher forward msg
@@ -297,7 +297,7 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
 
   def tryingToJoin(joinWith: Address, deadline: Option[Deadline]): Actor.Receive = {
     case Welcome(from, gossip) ⇒ welcome(joinWith, from, gossip)
-    case InitJoin              ⇒ sender ! InitJoinNack(selfAddress)
+    case InitJoin              ⇒ sender() ! InitJoinNack(selfAddress)
     case ClusterUserAction.JoinTo(address) ⇒
       becomeUninitialized()
       join(address)
@@ -364,7 +364,7 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
     case other             ⇒ super.unhandled(other)
   }
 
-  def initJoin(): Unit = sender ! InitJoinAck(selfAddress)
+  def initJoin(): Unit = sender() ! InitJoinAck(selfAddress)
 
   def joinSeedNodes(seedNodes: immutable.IndexedSeq[Address]): Unit = {
     if (seedNodes.nonEmpty) {
@@ -464,7 +464,7 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
 
         logInfo("Node [{}] is JOINING, roles [{}]", node.address, roles.mkString(", "))
         if (node != selfUniqueAddress) {
-          sender ! Welcome(selfUniqueAddress, latestGossip)
+          sender() ! Welcome(selfUniqueAddress, latestGossip)
         }
 
         publish(latestGossip)
@@ -484,7 +484,7 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
       latestGossip = gossip seen selfUniqueAddress
       publish(latestGossip)
       if (from != selfUniqueAddress)
-        gossipTo(from, sender)
+        gossipTo(from, sender())
       becomeInitialized()
     }
   }
@@ -574,8 +574,8 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
     else {
       (status.version compareTo latestGossip.version) match {
         case VectorClock.Same  ⇒ // same version
-        case VectorClock.After ⇒ gossipStatusTo(from, sender) // remote is newer
-        case _                 ⇒ gossipTo(from, sender) // conflicting or local is newer
+        case VectorClock.After ⇒ gossipStatusTo(from, sender()) // remote is newer
+        case _                 ⇒ gossipTo(from, sender()) // conflicting or local is newer
       }
     }
   }
@@ -664,9 +664,9 @@ private[cluster] class ClusterCoreDaemon(publisher: ActorRef) extends Actor with
       if (selfStatus == Exiting || selfStatus == Down)
         shutdown()
       else if (talkback) {
-        // send back gossip to sender when sender had different view, i.e. merge, or sender had
-        // older or sender had newer
-        gossipTo(from, sender)
+        // send back gossip to sender() when sender() had different view, i.e. merge, or sender() had
+        // older or sender() had newer
+        gossipTo(from, sender())
       }
       gossipType
     }
diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala
index f24050b754..ea0a4db033 100644
--- a/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/ClusterHeartbeat.scala
@@ -22,7 +22,7 @@ private[cluster] final class ClusterHeartbeatReceiver extends Actor with ActorLo
   val selfHeartbeatRsp = HeartbeatRsp(Cluster(context.system).selfUniqueAddress)
 
   def receive = {
-    case Heartbeat(from) ⇒ sender ! selfHeartbeatRsp
+    case Heartbeat(from) ⇒ sender() ! selfHeartbeatRsp
   }
 
 }
diff --git a/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala b/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala
index 289100008d..5708b1193c 100644
--- a/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala
@@ -47,7 +47,7 @@ final case class AdaptiveLoadBalancingRoutingLogic(system: ActorSystem, metricsS
 
   // The current weighted routees, if any. Weights are produced by the metricsSelector
   // via the metricsListener Actor. It's only updated by the actor, but accessed from
-  // the threads of the senders.
+  // the threads of the sender()s.
   private val weightedRouteesRef =
     new AtomicReference[(immutable.IndexedSeq[Routee], Set[NodeMetrics], Option[WeightedRoutees])](
       (Vector.empty, Set.empty, None))
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala
index 4c6253d001..4e94d57a79 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala
@@ -68,7 +68,7 @@ object MultiNodeClusterSpec {
         }
       case End ⇒
         testActor forward End
-        sender ! EndAck
+        sender() ! EndAck
       case EndAck ⇒
         testActor forward EndAck
     }
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/RestartFirstSeedNodeSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/RestartFirstSeedNodeSpec.scala
index 64c79af394..1457373d11 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/RestartFirstSeedNodeSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/RestartFirstSeedNodeSpec.scala
@@ -70,7 +70,7 @@ abstract class RestartFirstSeedNodeSpec
           def receive = {
             case a: Address ⇒
               seedNode1Address = a
-              sender ! "ok"
+              sender() ! "ok"
           }
         }).withDeploy(Deploy.local), name = "address-receiver")
         enterBarrier("seed1-address-receiver-ready")
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala
index f216de8777..d78b01928f 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala
@@ -520,8 +520,8 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig {
       case SendBatch ⇒ sendJobs()
       case RetryTick ⇒ resend()
       case End ⇒
-        done(sender)
-        context.become(ending(sender))
+        done(sender())
+        context.become(ending(sender()))
     }
 
     def ending(replyTo: ActorRef): Receive = {
@@ -571,7 +571,7 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig {
    */
   class Worker extends Actor with ActorLogging {
     def receive = {
-      case SimpleJob(id, payload) ⇒ sender ! Ack(id)
+      case SimpleJob(id, payload) ⇒ sender() ! Ack(id)
       case TreeJob(id, payload, idx, levels, width) ⇒
         // create the actors when first TreeJob message is received
         val totalActors = ((width * math.pow(width, levels) - 1) / (width - 1)).toInt
@@ -583,7 +583,7 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig {
     }
 
     def treeWorker(tree: ActorRef): Receive = {
-      case SimpleJob(id, payload) ⇒ sender ! Ack(id)
+      case SimpleJob(id, payload) ⇒ sender() ! Ack(id)
       case TreeJob(id, payload, idx, _, _) ⇒
         tree forward ((idx, SimpleJob(id, payload)))
     }
@@ -602,7 +602,7 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig {
 
   class Leaf extends Actor {
     def receive = {
-      case (_: Int, job: SimpleJob) ⇒ sender ! Ack(job.id)
+      case (_: Int, job: SimpleJob) ⇒ sender() ! Ack(job.id)
     }
   }
 
@@ -630,7 +630,7 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig {
     def receive = {
       case props: Props     ⇒ context.actorOf(props)
       case e: Exception     ⇒ context.children foreach { _ ! e }
-      case GetChildrenCount ⇒ sender ! ChildrenCount(context.children.size, restartCount)
+      case GetChildrenCount ⇒ sender() ! ChildrenCount(context.children.size, restartCount)
       case Reset ⇒
         require(context.children.isEmpty,
           s"ResetChildrenCount not allowed when children exists, [${context.children.size}]")
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/SurviveNetworkInstabilitySpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/SurviveNetworkInstabilitySpec.scala
index ff7eca00d4..c75cbe59b7 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/SurviveNetworkInstabilitySpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/SurviveNetworkInstabilitySpec.scala
@@ -43,7 +43,7 @@ object SurviveNetworkInstabilityMultiJvmSpec extends MultiNodeConfig {
 
   class Parent extends Actor {
     def receive = {
-      case p: Props ⇒ sender ! context.actorOf(p)
+      case p: Props ⇒ sender() ! context.actorOf(p)
     }
   }
 
@@ -53,7 +53,7 @@ object SurviveNetworkInstabilityMultiJvmSpec extends MultiNodeConfig {
     def receive = {
       case "hello" ⇒
         context.system.scheduler.scheduleOnce(2.seconds, self, "boom")
-        sender ! "hello"
+        sender() ! "hello"
       case "boom" ⇒ throw new SimulatedException
     }
   }
@@ -78,8 +78,8 @@ class SurviveNetworkInstabilityMultiJvmNode8 extends SurviveNetworkInstabilitySp
 
 abstract class SurviveNetworkInstabilitySpec
   extends MultiNodeSpec(SurviveNetworkInstabilityMultiJvmSpec)
-          with MultiNodeClusterSpec
-          with ImplicitSender {
+  with MultiNodeClusterSpec
+  with ImplicitSender {
 
   import SurviveNetworkInstabilityMultiJvmSpec._
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/AdaptiveLoadBalancingRouterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/AdaptiveLoadBalancingRouterSpec.scala
index d279d56906..42ec4a1876 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/AdaptiveLoadBalancingRouterSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/AdaptiveLoadBalancingRouterSpec.scala
@@ -27,7 +27,7 @@ object AdaptiveLoadBalancingRouterMultiJvmSpec extends MultiNodeConfig {
 
   class Routee extends Actor {
     def receive = {
-      case _ ⇒ sender ! Reply(Cluster(context.system).selfAddress)
+      case _ ⇒ sender() ! Reply(Cluster(context.system).selfAddress)
     }
   }
 
@@ -45,7 +45,7 @@ object AdaptiveLoadBalancingRouterMultiJvmSpec extends MultiNodeConfig {
         val numberOfArrays = allocateBytes / 1024
         usedMemory = Array.ofDim(numberOfArrays, 248) // each 248 element Int array will use ~ 1 kB
         log.debug("used heap after: [{}] bytes", ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.getUsed)
-        sender ! "done"
+        sender() ! "done"
     }
   }
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterConsistentHashingRouterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterConsistentHashingRouterSpec.scala
index 4dd2300b4c..6e19ca7530 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterConsistentHashingRouterSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterConsistentHashingRouterSpec.scala
@@ -29,7 +29,7 @@ object ClusterConsistentHashingRouterMultiJvmSpec extends MultiNodeConfig {
 
   class Echo extends Actor {
     def receive = {
-      case _ ⇒ sender ! self
+      case _ ⇒ sender() ! self
     }
   }
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterRoundRobinRoutedActorSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterRoundRobinRoutedActorSpec.scala
index 3eb9f2885a..7b3faf2920 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterRoundRobinRoutedActorSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/oldrouting/ClusterRoundRobinRoutedActorSpec.scala
@@ -30,7 +30,7 @@ object ClusterRoundRobinRoutedActorMultiJvmSpec extends MultiNodeConfig {
     def this() = this(DeployRoutee)
 
     def receive = {
-      case "hit" ⇒ sender ! Reply(routeeType, self)
+      case "hit" ⇒ sender() ! Reply(routeeType, self)
     }
   }
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala
index 53a68688bb..eeb6fc36f6 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala
@@ -27,7 +27,7 @@ object AdaptiveLoadBalancingRouterMultiJvmSpec extends MultiNodeConfig {
 
   class Echo extends Actor {
     def receive = {
-      case _ ⇒ sender ! Reply(Cluster(context.system).selfAddress)
+      case _ ⇒ sender() ! Reply(Cluster(context.system).selfAddress)
     }
   }
 
@@ -45,7 +45,7 @@ object AdaptiveLoadBalancingRouterMultiJvmSpec extends MultiNodeConfig {
         val numberOfArrays = allocateBytes / 1024
         usedMemory = Array.ofDim(numberOfArrays, 248) // each 248 element Int array will use ~ 1 kB
         log.debug("used heap after: [{}] bytes", ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.getUsed)
-        sender ! "done"
+        sender() ! "done"
     }
   }
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterConsistentHashingRouterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterConsistentHashingRouterSpec.scala
index 5ced977b1b..4a1a5668ce 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterConsistentHashingRouterSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterConsistentHashingRouterSpec.scala
@@ -29,7 +29,7 @@ object ClusterConsistentHashingRouterMultiJvmSpec extends MultiNodeConfig {
 
   class Echo extends Actor {
     def receive = {
-      case _ ⇒ sender ! self
+      case _ ⇒ sender() ! self
     }
   }
 
diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinSpec.scala
index 888f865357..e03203a530 100644
--- a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinSpec.scala
+++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinSpec.scala
@@ -33,7 +33,7 @@ object ClusterRoundRobinMultiJvmSpec extends MultiNodeConfig {
     def this() = this(PoolRoutee)
 
     def receive = {
-      case "hit" ⇒ sender ! Reply(routeeType, self)
+      case "hit" ⇒ sender() ! Reply(routeeType, self)
     }
   }
 
diff --git a/akka-contrib/docs/aggregator.rst b/akka-contrib/docs/aggregator.rst
index e3a485c7f8..4b5ef7f26f 100644
--- a/akka-contrib/docs/aggregator.rst
+++ b/akka-contrib/docs/aggregator.rst
@@ -76,7 +76,7 @@ Pitfalls
 --------
 * The current implementation does not match the sender of the message. This is
   designed to work with :class:`ActorSelection` as well as :class:`ActorRef`.
-  Without the sender, there is a chance a received message can be matched by
+  Without the sender(), there is a chance a received message can be matched by
   more than one partial function. The partial function that was registered via
   :class:`expect` or :class:`expectOnce` first (chronologically) and is not yet
   de-registered by :class:`unexpect` takes precedence in this case. Developers
@@ -84,8 +84,8 @@ Pitfalls
   be executed for a certain message.
 
 * The :class:`sender` referenced in any :class:`expect` or :class:`expectOnce`
-  logic refers to the sender of that particular message and not the sender of
-  the original message. The original sender still needs to be saved so a final
+  logic refers to the sender() of that particular message and not the sender() of
+  the original message. The original sender() still needs to be saved so a final
   response can be sent back.
 
 * :class:`context.become` is not supported when extending the :class:`Aggregator`
diff --git a/akka-contrib/docs/cluster-client.rst b/akka-contrib/docs/cluster-client.rst
index f4a769669b..e8610d506c 100644
--- a/akka-contrib/docs/cluster-client.rst
+++ b/akka-contrib/docs/cluster-client.rst
@@ -29,7 +29,7 @@ should be reachable from the client. Messages are wrapped in ``ClusterClient.Sen
 
 The message will be delivered to one recipient with a matching path, if any such
 exists. If several entries match the path the message will be delivered
-to one random destination. The sender of the message can specify that local
+to one random destination. The sender() of the message can specify that local
 affinity is preferred, i.e. the message is sent to an actor in the same local actor
 system as the used receptionist actor, if any such exists, otherwise random to any other
 matching entry.
@@ -45,9 +45,9 @@ to the named topic.
 
 Response messages from the destination actor are tunneled via the receptionist
 to avoid inbound connections from other cluster nodes to the client, i.e.
-the ``sender``, as seen by the destination actor, is not the client itself.
-The ``sender`` of the response messages, as seen by the client, is preserved
-as the original sender, so the client can choose to send subsequent messages
+the ``sender()``, as seen by the destination actor, is not the client itself.
+The ``sender()`` of the response messages, as seen by the client, is preserved
+as the original sender(), so the client can choose to send subsequent messages
 directly to the actor in the cluster.
 
 While establishing a connection to a receptionist the ``ClusterClient`` will buffer
diff --git a/akka-contrib/docs/cluster-sharding.rst b/akka-contrib/docs/cluster-sharding.rst
index 0841a213e7..46b97119e5 100644
--- a/akka-contrib/docs/cluster-sharding.rst
+++ b/akka-contrib/docs/cluster-sharding.rst
@@ -15,7 +15,7 @@ actors with persistent state.
 In this context sharding means that actors with an identifier, so called entries,
 can be automatically distributed across multiple nodes in the cluster. Each entry
 actor runs only at one place, and messages can be sent to the entry without requiring
-the sender to know the location of the destination actor. This is achieved by sending
+the sender() to know the location of the destination actor. This is achieved by sending
 the messages via a ``ShardRegion`` actor provided by this extension, which knows how
 to route the message with the entry id to the final destination.
 
@@ -188,7 +188,7 @@ actor will take over and the state is recovered. During such a failure period sh
 with known location are still available, while messages for new (unknown) shards
 are buffered until the new ``ShardCoordinator`` becomes available.
 
-As long as a sender uses the same ``ShardRegion`` actor to deliver messages to an entry
+As long as a sender() uses the same ``ShardRegion`` actor to deliver messages to an entry
 actor the order of the messages is preserved. As long as the buffer limit is not reached
 messages are delivered on a best effort basis, with at-most once delivery semantics,
 in the same way as ordinary message sending. Reliable end-to-end messaging, with
diff --git a/akka-contrib/docs/distributed-pub-sub.rst b/akka-contrib/docs/distributed-pub-sub.rst
index 4299e908b4..c60f3bca26 100644
--- a/akka-contrib/docs/distributed-pub-sub.rst
+++ b/akka-contrib/docs/distributed-pub-sub.rst
@@ -29,7 +29,7 @@ any other node. There is three modes of message delivery.
 
 The message will be delivered to one recipient with a matching path, if any such
 exists in the registry. If several entries match the path the message will be sent
-via the supplied ``RoutingLogic`` (default random) to one destination. The sender of the
+via the supplied ``RoutingLogic`` (default random) to one destination. The sender() of the
 message can specify that local affinity is preferred, i.e. the message is sent to an actor
 in the same local actor system as the used mediator actor, if any such exists, otherwise
 route to any other matching entry. A typical usage of this mode is private chat to one
diff --git a/akka-contrib/docs/reliable-proxy.rst b/akka-contrib/docs/reliable-proxy.rst
index 469758c13b..abdb4368c4 100644
--- a/akka-contrib/docs/reliable-proxy.rst
+++ b/akka-contrib/docs/reliable-proxy.rst
@@ -46,7 +46,7 @@ the same network node where B lives. Messages sent to P will be wrapped in an
 envelope, tagged with a sequence number and sent to E, who verifies that the
 received envelope has the right sequence number (the next expected one) and
 forwards the contained message to B. When B receives this message, the
-``sender`` will be a reference to the sender of the original message to P.
+``sender()`` will be a reference to the sender() of the original message to P.
 Reliability is added by E replying to orderly received messages with an ACK, so
 that P can tick those messages off its resend list. If ACKs do not come in a
 timely fashion, P will try to resend until successful.
diff --git a/akka-contrib/src/main/scala/akka/contrib/jul/JavaLogger.scala b/akka-contrib/src/main/scala/akka/contrib/jul/JavaLogger.scala
index 579bf2d323..f7e99adfd6 100644
--- a/akka-contrib/src/main/scala/akka/contrib/jul/JavaLogger.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/jul/JavaLogger.scala
@@ -37,7 +37,7 @@ class JavaLogger extends Actor {
     case event: Warning                ⇒ log(logging.Level.WARNING, null, event)
     case event: Info                   ⇒ log(logging.Level.INFO, null, event)
     case event: Debug                  ⇒ log(logging.Level.CONFIG, null, event)
-    case InitializeLogger(_)           ⇒ sender ! LoggerInitialized
+    case InitializeLogger(_)           ⇒ sender() ! LoggerInitialized
   }
 
   @inline
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterClient.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterClient.scala
index 1fc5ba9ce4..951bb1cdc0 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterClient.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterClient.scala
@@ -418,7 +418,7 @@ class ClusterReceptionist(
 
   def receive = {
     case msg @ (_: Send | _: SendToAll | _: Publish) ⇒
-      val tunnel = responseTunnel(sender)
+      val tunnel = responseTunnel(sender())
       tunnel ! Ping // keep alive
       pubSubMediator.tell(msg, tunnel)
 
@@ -427,17 +427,17 @@ class ClusterReceptionist(
       // is the same from all nodes (most of the time) and it also
       // load balances the client connections among the nodes in the cluster.
       if (numberOfContacts >= nodes.size) {
-        sender ! Contacts(nodes.map(a ⇒ context.actorSelection(self.path.toStringWithAddress(a)))(collection.breakOut))
+        sender() ! Contacts(nodes.map(a ⇒ context.actorSelection(self.path.toStringWithAddress(a)))(collection.breakOut))
       } else {
         // using toStringWithAddress in case the client is local, normally it is not, and
         // toStringWithAddress will use the remote address of the client
-        val a = consistentHash.nodeFor(sender.path.toStringWithAddress(cluster.selfAddress))
+        val a = consistentHash.nodeFor(sender().path.toStringWithAddress(cluster.selfAddress))
         val slice = {
           val first = nodes.from(a).tail.take(numberOfContacts)
           if (first.size == numberOfContacts) first
           else first ++ nodes.take(numberOfContacts - first.size)
         }
-        sender ! Contacts(slice.map(a ⇒ context.actorSelection(self.path.toStringWithAddress(a)))(collection.breakOut))
+        sender() ! Contacts(slice.map(a ⇒ context.actorSelection(self.path.toStringWithAddress(a)))(collection.breakOut))
       }
 
     case state: CurrentClusterState ⇒
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
index 0fa8965e08..883c05504c 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
@@ -382,7 +382,7 @@ private[akka] class ClusterShardingGuardian extends Actor {
           shardResolver = shardResolver),
           name = encName)
       }
-      sender ! Started(shardRegion)
+      sender() ! Started(shardRegion)
 
   }
 
@@ -655,7 +655,7 @@ class ShardRegion(
     case state: CurrentClusterState          ⇒ receiveClusterState(state)
     case msg: CoordinatorMessage             ⇒ receiveCoordinatorMessage(msg)
     case cmd: ShardRegionCommand             ⇒ receiveCommand(cmd)
-    case msg if idExtractor.isDefinedAt(msg) ⇒ deliverMessage(msg, sender)
+    case msg if idExtractor.isDefinedAt(msg) ⇒ deliverMessage(msg, sender())
   }
 
   def receiveClusterState(state: CurrentClusterState): Unit = {
@@ -708,7 +708,7 @@ class ShardRegion(
         regions -= regionByShard(shard)
         regionByShard -= shard
       }
-      sender ! BeginHandOffAck(shard)
+      sender() ! BeginHandOffAck(shard)
 
     case HandOff(shard) ⇒
       log.debug("HandOff shard [{}]", shard)
@@ -720,9 +720,9 @@ class ShardRegion(
         shardBuffers -= shard
 
       if (entriesByShard.contains(shard))
-        context.actorOf(Props(classOf[HandOffStopper], shard, sender, entriesByShard(shard)))
+        context.actorOf(Props(classOf[HandOffStopper], shard, sender(), entriesByShard(shard)))
       else
-        sender ! ShardStopped(shard)
+        sender() ! ShardStopped(shard)
 
     case _ ⇒ unhandled(msg)
 
@@ -730,7 +730,7 @@ class ShardRegion(
 
   def receiveCommand(cmd: ShardRegionCommand): Unit = cmd match {
     case Passivate(stopMessage) ⇒
-      passivate(sender, stopMessage)
+      passivate(sender(), stopMessage)
 
     case Retry ⇒
       if (coordinator.isEmpty)
@@ -831,7 +831,7 @@ class ShardRegion(
   }
 
   def passivate(entry: ActorRef, stopMessage: Any): Unit = {
-    val entry = sender
+    val entry = sender()
     if (entries.contains(entry) && !passivatingBuffers.contains(entry)) {
       log.debug("Passivating started {}", entry)
       passivatingBuffers = passivatingBuffers.updated(entry, Vector.empty)
@@ -1096,7 +1096,7 @@ object ShardCoordinator {
 
     def receive = {
       case BeginHandOffAck(`shard`) ⇒
-        remaining -= sender
+        remaining -= sender()
         if (remaining.isEmpty) {
           from ! HandOff(shard)
           context.become(stoppingShard, discardOld = true)
@@ -1171,23 +1171,23 @@ class ShardCoordinator(handOffTimeout: FiniteDuration, rebalanceInterval: Finite
     case Register(region) ⇒
       log.debug("ShardRegion registered: [{}]", region)
       if (persistentState.regions.contains(region))
-        sender ! RegisterAck(self)
+        sender() ! RegisterAck(self)
       else
         persist(ShardRegionRegistered(region)) { evt ⇒
           persistentState = persistentState.updated(evt)
           context.watch(region)
-          sender ! RegisterAck(self)
+          sender() ! RegisterAck(self)
         }
 
     case RegisterProxy(proxy) ⇒
       log.debug("ShardRegion proxy registered: [{}]", proxy)
       if (persistentState.regionProxies.contains(proxy))
-        sender ! RegisterAck(self)
+        sender() ! RegisterAck(self)
       else
         persist(ShardRegionProxyRegistered(proxy)) { evt ⇒
           persistentState = persistentState.updated(evt)
           context.watch(proxy)
-          sender ! RegisterAck(self)
+          sender() ! RegisterAck(self)
         }
 
     case Terminated(ref) ⇒
@@ -1206,14 +1206,14 @@ class ShardCoordinator(handOffTimeout: FiniteDuration, rebalanceInterval: Finite
     case GetShardHome(shard) ⇒
       if (!rebalanceInProgress.contains(shard)) {
         persistentState.shards.get(shard) match {
-          case Some(ref) ⇒ sender ! ShardHome(shard, ref)
+          case Some(ref) ⇒ sender() ! ShardHome(shard, ref)
           case None ⇒
             if (persistentState.regions.nonEmpty) {
-              val region = allocationStrategy.allocateShard(sender, shard, persistentState.regions)
+              val region = allocationStrategy.allocateShard(sender(), shard, persistentState.regions)
               persist(ShardHomeAllocated(shard, region)) { evt ⇒
                 persistentState = persistentState.updated(evt)
                 log.debug("Shard [{}] allocated at [{}]", evt.shard, evt.region)
-                sender ! ShardHome(evt.shard, evt.region)
+                sender() ! ShardHome(evt.shard, evt.region)
               }
             }
         }
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala
index 7696ffcce0..fd25700ffe 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala
@@ -466,16 +466,16 @@ class ClusterSingletonManager(
 
     case Event(HandOverInProgress, _) ⇒
       // confirmation that the hand-over process has started
-      logInfo("Hand-over in progress at [{}]", sender.path.address)
+      logInfo("Hand-over in progress at [{}]", sender().path.address)
       cancelTimer(HandOverRetryTimer)
       stay
 
     case Event(HandOverDone, BecomingOldestData(Some(previousOldest))) ⇒
-      if (sender.path.address == previousOldest)
+      if (sender().path.address == previousOldest)
         gotoOldest()
       else {
         logInfo("Ignoring HandOverDone in BecomingOldest from [{}]. Expected previous oldest [{}]",
-          sender.path.address, previousOldest)
+          sender().path.address, previousOldest)
         stay
       }
 
@@ -485,13 +485,13 @@ class ClusterSingletonManager(
       stay
 
     case Event(TakeOverFromMe, BecomingOldestData(None)) ⇒
-      sender ! HandOverToMe
-      stay using BecomingOldestData(Some(sender.path.address))
+      sender() ! HandOverToMe
+      stay using BecomingOldestData(Some(sender().path.address))
 
     case Event(TakeOverFromMe, BecomingOldestData(Some(previousOldest))) ⇒
-      if (previousOldest == sender.path.address) sender ! HandOverToMe
+      if (previousOldest == sender().path.address) sender() ! HandOverToMe
       else logInfo("Ignoring TakeOver request in BecomingOldest from [{}]. Expected previous oldest [{}]",
-        sender.path.address, previousOldest)
+        sender().path.address, previousOldest)
       stay
 
     case Event(HandOverRetry(count), BecomingOldestData(previousOldestOption)) ⇒
@@ -539,7 +539,7 @@ class ClusterSingletonManager(
       }
 
     case Event(HandOverToMe, OldestData(singleton, singletonTerminated)) ⇒
-      gotoHandingOver(singleton, singletonTerminated, Some(sender))
+      gotoHandingOver(singleton, singletonTerminated, Some(sender()))
 
     case Event(Terminated(ref), d @ OldestData(singleton, _)) if ref == singleton ⇒
       stay using d.copy(singletonTerminated = true)
@@ -556,7 +556,7 @@ class ClusterSingletonManager(
         throw new ClusterSingletonManagerIsStuck(s"Expected hand-over to [${newOldestOption}] never occured")
 
     case Event(HandOverToMe, WasOldestData(singleton, singletonTerminated, _)) ⇒
-      gotoHandingOver(singleton, singletonTerminated, Some(sender))
+      gotoHandingOver(singleton, singletonTerminated, Some(sender()))
 
     case Event(MemberRemoved(m, _), WasOldestData(singleton, singletonTerminated, Some(newOldest))) if !selfExited && m.address == newOldest ⇒
       addRemoved(m.address)
@@ -581,9 +581,9 @@ class ClusterSingletonManager(
     case (Event(Terminated(ref), HandingOverData(singleton, handOverTo))) if ref == singleton ⇒
       handOverDone(handOverTo)
 
-    case Event(HandOverToMe, d @ HandingOverData(singleton, handOverTo)) if handOverTo == Some(sender) ⇒
+    case Event(HandOverToMe, d @ HandingOverData(singleton, handOverTo)) if handOverTo == Some(sender()) ⇒
       // retry
-      sender ! HandOverInProgress
+      sender() ! HandOverInProgress
       stay
 
   }
@@ -617,7 +617,7 @@ class ClusterSingletonManager(
       addRemoved(m.address)
       stay
     case Event(TakeOverFromMe, _) ⇒
-      logInfo("Ignoring TakeOver request in [{}] from [{}].", stateName, sender.path.address)
+      logInfo("Ignoring TakeOver request in [{}] from [{}].", stateName, sender().path.address)
       stay
     case Event(Cleanup, _) ⇒
       cleanupOverdueNotMemberAnyMore()
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/DistributedPubSubMediator.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/DistributedPubSubMediator.scala
index 1081496bab..c69e362e82 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/DistributedPubSubMediator.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/DistributedPubSubMediator.scala
@@ -130,11 +130,11 @@ object DistributedPubSubMediator {
           context watch ref
           subscribers += ref
           pruneDeadline = None
-          sender.tell(SubscribeAck(msg), context.parent)
+          sender().tell(SubscribeAck(msg), context.parent)
         case msg @ Unsubscribe(_, ref) ⇒
           context unwatch ref
           remove(ref)
-          sender.tell(UnsubscribeAck(msg), context.parent)
+          sender().tell(UnsubscribeAck(msg), context.parent)
         case Terminated(ref) ⇒
           remove(ref)
         case Prune ⇒
@@ -283,7 +283,7 @@ class DistributedPubSubMediator(
           } yield routee).toVector
 
           if (routees.nonEmpty)
-            Router(routingLogic, routees).route(msg, sender)
+            Router(routingLogic, routees).route(msg, sender())
       }
 
     case SendToAll(path, msg, skipSenderNode) ⇒
@@ -330,14 +330,14 @@ class DistributedPubSubMediator(
       // gossip chat starts with a Status message, containing the bucket versions of the other node
       val delta = collectDelta(otherVersions)
       if (delta.nonEmpty)
-        sender ! Delta(delta)
+        sender() ! Delta(delta)
       if (otherHasNewerVersions(otherVersions))
-        sender ! Status(versions = myVersions) // it will reply with Delta
+        sender() ! Status(versions = myVersions) // it will reply with Delta
 
     case Delta(buckets) ⇒
       // reply from Status message in the gossip chat
       // the Delta contains potential updates (newer versions) from the other node
-      if (nodes.contains(sender.path.address)) {
+      if (nodes.contains(sender().path.address)) {
         buckets foreach { b ⇒
           val myBucket = registry(b.owner)
           if (b.version > myBucket.version) {
@@ -384,13 +384,13 @@ class DistributedPubSubMediator(
           case (_, valueHolder) ⇒ valueHolder.ref.isDefined
         }
       }.sum
-      sender ! count
+      sender() ! count
   }
 
   def publish(path: String, msg: Any, allButSelf: Boolean = false): Unit = {
     for {
       (address, bucket) ← registry
-      if !(allButSelf && address == selfAddress) // if we should skip sender node and current address == self address => skip
+      if !(allButSelf && address == selfAddress) // if we should skip sender() node and current address == self address => skip
       valueHolder ← bucket.content.get(path)
       ref ← valueHolder.ref
     } ref forward msg
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ReliableProxy.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ReliableProxy.scala
index b9430ea337..1687b5b19a 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/ReliableProxy.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ReliableProxy.scala
@@ -19,10 +19,10 @@ object ReliableProxy {
       case Message(msg, snd, serial) ⇒
         if (serial == lastSerial + 1) {
           target.tell(msg, snd)
-          sender ! Ack(serial)
+          sender() ! Ack(serial)
           lastSerial = serial
         } else if (compare(serial, lastSerial) <= 0) {
-          sender ! Ack(serial)
+          sender() ! Ack(serial)
         } else {
           log.debug("received msg of {} from {} with wrong serial", msg.asInstanceOf[AnyRef].getClass, snd)
         }
@@ -160,7 +160,7 @@ class ReliableProxy(target: ActorRef, retryAfter: FiniteDuration) extends Actor
 
   var nextSerial = 1
   def send(msg: Any): Message = {
-    val m = Message(msg, sender, nextSerial)
+    val m = Message(msg, sender(), nextSerial)
     nextSerial += 1
     tunnel ! m
     m
diff --git a/akka-contrib/src/main/scala/akka/contrib/throttle/TimerBasedThrottler.scala b/akka-contrib/src/main/scala/akka/contrib/throttle/TimerBasedThrottler.scala
index 28682551ea..a761450b1e 100644
--- a/akka-contrib/src/main/scala/akka/contrib/throttle/TimerBasedThrottler.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/throttle/TimerBasedThrottler.scala
@@ -231,9 +231,9 @@ class TimerBasedThrottler(var rate: Rate) extends Actor with FSM[State, Data] {
 
     // Queuing
     case Event(msg, d @ Data(None, _, queue)) ⇒
-      stay using d.copy(queue = queue.enqueue(Message(msg, context.sender)))
+      stay using d.copy(queue = queue.enqueue(Message(msg, context.sender())))
     case Event(msg, d @ Data(Some(_), _, Seq())) ⇒
-      goto(Active) using deliverMessages(d.copy(queue = Q(Message(msg, context.sender))))
+      goto(Active) using deliverMessages(d.copy(queue = Q(Message(msg, context.sender()))))
     // Note: The case Event(msg, t @ Data(Some(_), _, _, Seq(_*))) should never happen here.
   }
 
@@ -269,11 +269,11 @@ class TimerBasedThrottler(var rate: Rate) extends Actor with FSM[State, Data] {
 
     // Queue a message (when we cannot send messages in the current period anymore)
     case Event(msg, d @ Data(_, 0, queue)) ⇒
-      stay using d.copy(queue = queue.enqueue(Message(msg, context.sender)))
+      stay using d.copy(queue = queue.enqueue(Message(msg, context.sender())))
 
     // Queue a message (when we can send some more messages in the current period)
     case Event(msg, d @ Data(_, _, queue)) ⇒
-      stay using deliverMessages(d.copy(queue = queue.enqueue(Message(msg, context.sender))))
+      stay using deliverMessages(d.copy(queue = queue.enqueue(Message(msg, context.sender()))))
   }
 
   onTransition {
diff --git a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterClientSpec.scala b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterClientSpec.scala
index 296e99a7fd..5491fe081b 100644
--- a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterClientSpec.scala
+++ b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterClientSpec.scala
@@ -36,13 +36,13 @@ object ClusterClientSpec extends MultiNodeConfig {
     def receive = {
       case msg ⇒
         testActor forward msg
-        sender ! "ack"
+        sender() ! "ack"
     }
   }
 
   class Service extends Actor {
     def receive = {
-      case msg ⇒ sender ! msg
+      case msg ⇒ sender() ! msg
     }
   }
 
diff --git a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterShardingSpec.scala b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterShardingSpec.scala
index 1c377f00fd..bc6c541846 100644
--- a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterShardingSpec.scala
+++ b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterShardingSpec.scala
@@ -98,7 +98,7 @@ object ClusterShardingSpec extends MultiNodeConfig {
     override def receiveCommand: Receive = {
       case Increment      ⇒ persist(CounterChanged(+1))(updateState)
       case Decrement      ⇒ persist(CounterChanged(-1))(updateState)
-      case Get(_)         ⇒ sender ! count
+      case Get(_)         ⇒ sender() ! count
       case ReceiveTimeout ⇒ context.parent ! Passivate(stopMessage = Stop)
       case Stop           ⇒ context.stop(self)
     }
diff --git a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerChaosSpec.scala b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerChaosSpec.scala
index 6f0417f027..4d7eeeafd3 100644
--- a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerChaosSpec.scala
+++ b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerChaosSpec.scala
@@ -51,7 +51,7 @@ object ClusterSingletonManagerChaosSpec extends MultiNodeConfig {
     testActor ! EchoStarted
 
     def receive = {
-      case _ ⇒ sender ! self
+      case _ ⇒ sender() ! self
     }
   }
 }
diff --git a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerSpec.scala b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerSpec.scala
index 8d9780ca5d..0242f68530 100644
--- a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerSpec.scala
+++ b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/ClusterSingletonManagerSpec.scala
@@ -73,33 +73,33 @@ object ClusterSingletonManagerSpec extends MultiNodeConfig {
 
     def idle: Receive = {
       case RegisterConsumer ⇒
-        log.info("RegisterConsumer: [{}]", sender.path)
-        sender ! RegistrationOk
-        context.become(active(sender))
+        log.info("RegisterConsumer: [{}]", sender().path)
+        sender() ! RegistrationOk
+        context.become(active(sender()))
       case UnregisterConsumer ⇒
-        log.info("UnexpectedUnregistration: [{}]", sender.path)
-        sender ! UnexpectedUnregistration
+        log.info("UnexpectedUnregistration: [{}]", sender().path)
+        sender() ! UnexpectedUnregistration
         context stop self
-      case Reset ⇒ sender ! ResetOk
+      case Reset ⇒ sender() ! ResetOk
       case msg   ⇒ // no consumer, drop
     }
 
     def active(consumer: ActorRef): Receive = {
-      case UnregisterConsumer if sender == consumer ⇒
-        log.info("UnregistrationOk: [{}]", sender.path)
-        sender ! UnregistrationOk
+      case UnregisterConsumer if sender() == consumer ⇒
+        log.info("UnregistrationOk: [{}]", sender().path)
+        sender() ! UnregistrationOk
         context.become(idle)
       case UnregisterConsumer ⇒
-        log.info("UnexpectedUnregistration: [{}], expected [{}]", sender.path, consumer.path)
-        sender ! UnexpectedUnregistration
+        log.info("UnexpectedUnregistration: [{}], expected [{}]", sender().path, consumer.path)
+        sender() ! UnexpectedUnregistration
         context stop self
       case RegisterConsumer ⇒
-        log.info("Unexpected RegisterConsumer [{}], active consumer [{}]", sender.path, consumer.path)
-        sender ! UnexpectedRegistration
+        log.info("Unexpected RegisterConsumer [{}], active consumer [{}]", sender().path, consumer.path)
+        sender() ! UnexpectedRegistration
         context stop self
       case Reset ⇒
         context.become(idle)
-        sender ! ResetOk
+        sender() ! ResetOk
       case msg ⇒ consumer ! msg
     }
   }
@@ -129,7 +129,7 @@ object ClusterSingletonManagerSpec extends MultiNodeConfig {
       case x @ (RegistrationOk | UnexpectedRegistration) ⇒
         delegateTo ! x
       case GetCurrent ⇒
-        sender ! current
+        sender() ! current
       //#consumer-end
       case End ⇒
         queue ! UnregisterConsumer
@@ -161,7 +161,7 @@ object ClusterSingletonManagerSpec extends MultiNodeConfig {
           m.status == MemberStatus.Up && m.hasRole(role))
       case MemberUp(m)         ⇒ if (m.hasRole(role)) membersByAge += m
       case MemberRemoved(m, _) ⇒ if (m.hasRole(role)) membersByAge -= m
-      case other               ⇒ consumer foreach { _.tell(other, sender) }
+      case other               ⇒ consumer foreach { _.tell(other, sender()) }
     }
 
     def consumer: Option[ActorSelection] =
diff --git a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/DistributedPubSubMediatorSpec.scala b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/DistributedPubSubMediatorSpec.scala
index 45067ccb99..e58df84733 100644
--- a/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/DistributedPubSubMediatorSpec.scala
+++ b/akka-contrib/src/multi-jvm/scala/akka/contrib/pattern/DistributedPubSubMediatorSpec.scala
@@ -340,7 +340,7 @@ class DistributedPubSubMediatorSpec extends MultiNodeSpec(DistributedPubSubMedia
         lastSender.path.name should be("u11")
       }
       runOn(third) {
-        expectNoMsg(2.seconds) // sender node should not receive a message
+        expectNoMsg(2.seconds) // sender() node should not receive a message
       }
 
       enterBarrier("after-11")
diff --git a/akka-contrib/src/test/scala/akka/contrib/mailbox/PeekMailboxSpec.scala b/akka-contrib/src/test/scala/akka/contrib/mailbox/PeekMailboxSpec.scala
index 0d3fb27d57..76e0c50887 100644
--- a/akka-contrib/src/test/scala/akka/contrib/mailbox/PeekMailboxSpec.scala
+++ b/akka-contrib/src/test/scala/akka/contrib/mailbox/PeekMailboxSpec.scala
@@ -15,13 +15,13 @@ object PeekMailboxSpec {
     var togo = tries
     def receive = {
       case Check ⇒
-        sender ! Check
+        sender() ! Check
         PeekMailboxExtension.ack()
       case DoubleAck ⇒
         PeekMailboxExtension.ack()
         PeekMailboxExtension.ack()
       case msg ⇒
-        sender ! msg
+        sender() ! msg
         if (togo == 0) throw new RuntimeException("DONTWANNA")
         togo -= 1
         PeekMailboxExtension.ack()
diff --git a/akka-contrib/src/test/scala/akka/contrib/pattern/AggregatorSpec.scala b/akka-contrib/src/test/scala/akka/contrib/pattern/AggregatorSpec.scala
index c33bab8b4a..ed07216dfc 100644
--- a/akka-contrib/src/test/scala/akka/contrib/pattern/AggregatorSpec.scala
+++ b/akka-contrib/src/test/scala/akka/contrib/pattern/AggregatorSpec.scala
@@ -41,19 +41,19 @@ case object CantUnderstand
 class SavingsAccountProxy extends Actor {
   def receive = {
     case GetAccountBalances(id: Long) ⇒
-      sender ! SavingsAccountBalances(Some(List((1, 150000), (2, 29000))))
+      sender() ! SavingsAccountBalances(Some(List((1, 150000), (2, 29000))))
   }
 }
 class CheckingAccountProxy extends Actor {
   def receive = {
     case GetAccountBalances(id: Long) ⇒
-      sender ! CheckingAccountBalances(Some(List((3, 15000))))
+      sender() ! CheckingAccountBalances(Some(List((3, 15000))))
   }
 }
 class MoneyMarketAccountProxy extends Actor {
   def receive = {
     case GetAccountBalances(id: Long) ⇒
-      sender ! MoneyMarketAccountBalances(None)
+      sender() ! MoneyMarketAccountBalances(None)
   }
 }
 
@@ -64,9 +64,9 @@ class AccountBalanceRetriever extends Actor with Aggregator {
   //#initial-expect
   expectOnce {
     case GetCustomerAccountBalances(id, types) ⇒
-      new AccountAggregator(sender, id, types)
+      new AccountAggregator(sender(), id, types)
     case _ ⇒
-      sender ! CantUnderstand
+      sender() ! CantUnderstand
       context.stop(self)
   }
   //#initial-expect
@@ -145,7 +145,7 @@ case class FinalResponse(qualifiedValues: List[String])
 class ChainingSample extends Actor with Aggregator {
 
   expectOnce {
-    case InitialRequest(name) ⇒ new MultipleResponseHandler(sender, name)
+    case InitialRequest(name) ⇒ new MultipleResponseHandler(sender(), name)
   }
 
   class MultipleResponseHandler(originalSender: ActorRef, propName: String) {
diff --git a/akka-contrib/src/test/scala/akka/contrib/pattern/ReliableProxyDocSpec.scala b/akka-contrib/src/test/scala/akka/contrib/pattern/ReliableProxyDocSpec.scala
index f9c13cfe39..682493d271 100644
--- a/akka-contrib/src/test/scala/akka/contrib/pattern/ReliableProxyDocSpec.scala
+++ b/akka-contrib/src/test/scala/akka/contrib/pattern/ReliableProxyDocSpec.scala
@@ -37,7 +37,7 @@ object ReliableProxyDocSpec {
     def receive = {
       case "go" ⇒
         proxy ! 42
-        client = sender
+        client = sender()
       case FSM.CurrentState(`proxy`, initial) ⇒
       case FSM.Transition(`proxy`, from, to) ⇒
         if (to == ReliableProxy.Idle)
diff --git a/akka-contrib/src/test/scala/akka/contrib/throttle/TimerBasedThrottlerSpec.scala b/akka-contrib/src/test/scala/akka/contrib/throttle/TimerBasedThrottlerSpec.scala
index 88bc396e93..9d8b0c1308 100644
--- a/akka-contrib/src/test/scala/akka/contrib/throttle/TimerBasedThrottlerSpec.scala
+++ b/akka-contrib/src/test/scala/akka/contrib/throttle/TimerBasedThrottlerSpec.scala
@@ -22,7 +22,7 @@ import akka.testkit._
 object TimerBasedThrottlerSpec {
   class EchoActor extends Actor {
     def receive = {
-      case x ⇒ sender ! x
+      case x ⇒ sender() ! x
     }
   }
 
diff --git a/akka-docs/rst/common/code/docs/circuitbreaker/CircuitBreakerDocSpec.scala b/akka-docs/rst/common/code/docs/circuitbreaker/CircuitBreakerDocSpec.scala
index bb1febe795..caa3badf28 100644
--- a/akka-docs/rst/common/code/docs/circuitbreaker/CircuitBreakerDocSpec.scala
+++ b/akka-docs/rst/common/code/docs/circuitbreaker/CircuitBreakerDocSpec.scala
@@ -36,9 +36,9 @@ class DangerousActor extends Actor with ActorLogging {
 
   def receive = {
     case "is my middle name" =>
-      breaker.withCircuitBreaker(Future(dangerousCall)) pipeTo sender
+      breaker.withCircuitBreaker(Future(dangerousCall)) pipeTo sender()
     case "block for me" =>
-      sender ! breaker.withSyncCircuitBreaker(dangerousCall)
+      sender() ! breaker.withSyncCircuitBreaker(dangerousCall)
   }
   //#circuit-breaker-usage
 
diff --git a/akka-docs/rst/general/addressing.rst b/akka-docs/rst/general/addressing.rst
index 23343f10ac..b0fba1fd5b 100644
--- a/akka-docs/rst/general/addressing.rst
+++ b/akka-docs/rst/general/addressing.rst
@@ -23,7 +23,7 @@ to its canonical (local) reference through the :meth:`self` field; this
 reference is also included as sender reference by default for all messages sent
 to other actors. Conversely, during message processing the actor has access to
 a reference representing the sender of the current message through the
-:meth:`sender` field.
+:meth:`sender()` method.
 
 There are several different types of actor references that are supported
 depending on the configuration of the actor system:
@@ -200,7 +200,7 @@ is looked up when delivering each message.
 
 To acquire an :class:`ActorRef` that is bound to the life-cycle of a specific actor
 you need to send a message, such as the built-in :class:`Identify` message, to the actor
-and use the ``sender`` reference of a reply from the actor.
+and use the ``sender()`` reference of a reply from the actor.
 
 .. note::
 
diff --git a/akka-docs/rst/general/jmm.rst b/akka-docs/rst/general/jmm.rst
index 9ac18260d9..d4be21a45f 100644
--- a/akka-docs/rst/general/jmm.rst
+++ b/akka-docs/rst/general/jmm.rst
@@ -105,7 +105,7 @@ Since Akka runs on the JVM there are still some rules to be followed.
 
         // Very bad, "sender" changes for every message,
         // shared mutable state bug
-          Future { expensiveCalculation(sender) }
+          Future { expensiveCalculation(sender()) }
 
           //Rights
 
@@ -115,7 +115,7 @@ Since Akka runs on the JVM there are still some rules to be followed.
 
         // Completely safe, we close over a fixed value
         // and it's an ActorRef, which is thread-safe
-          val currentSender = sender
+          val currentSender = sender()
           Future { expensiveCalculation(currentSender) }
      }
     }
diff --git a/akka-docs/rst/project/migration-guide-2.2.x-2.3.x.rst b/akka-docs/rst/project/migration-guide-2.2.x-2.3.x.rst
index 6de23fccc8..82a98e9b2a 100644
--- a/akka-docs/rst/project/migration-guide-2.2.x-2.3.x.rst
+++ b/akka-docs/rst/project/migration-guide-2.2.x-2.3.x.rst
@@ -228,3 +228,14 @@ independent of Akka version of the application. Version 2.2.3 can be used with b
 
 `sbt-native-packager `_ is the recommended tool for creating
 distributions of Akka applications when using sbt.
+
+Parens Added to sender
+======================
+
+Parens were added to the ``sender()`` method of the Actor Scala API to highlight that the ``sender()`` reference is not referentially transparent and must not be exposed to other threads, for example by closing over it when using future callbacks.
+
+It is recommended to use this new convention::
+
+    sender() ! "reply"
+
+However, it is not mandatory to use parens and you do not have to change anything.
diff --git a/akka-docs/rst/scala/actors.rst b/akka-docs/rst/scala/actors.rst
index 882180c07f..dde8fa8779 100644
--- a/akka-docs/rst/scala/actors.rst
+++ b/akka-docs/rst/scala/actors.rst
@@ -432,7 +432,7 @@ Messages can be sent via the :class:`ActorSelection` and the path of the
 does not match any actors the message will be dropped.
 
 To acquire an :class:`ActorRef` for an :class:`ActorSelection` you need to send
-a message to the selection and use the ``sender`` reference of the reply from
+a message to the selection and use the ``sender()`` reference of the reply from
 the actor. There is a built-in ``Identify`` message that all Actors will
 understand and automatically reply to with a ``ActorIdentity`` message
 containing the :class:`ActorRef`. This message is handled specially by the
@@ -517,8 +517,8 @@ message. This gives the best concurrency and scalability characteristics.
 
 If invoked from within an Actor, then the sending actor reference will be
 implicitly passed along with the message and available to the receiving Actor
-in its ``sender: ActorRef`` member field. The target actor can use this
-to reply to the original sender, by using ``sender ! replyMsg``.
+in its ``sender(): ActorRef`` member method. The target actor can use this
+to reply to the original sender, by using ``sender() ! replyMsg``.
 
 If invoked from an instance that is **not** an Actor the sender will be
 :obj:`deadLetters` actor reference by default.
@@ -540,7 +540,7 @@ future to affect the submission of the aggregated :class:`Result` to another
 actor.
 
 Using ``ask`` will send a message to the receiving Actor as with ``tell``, and
-the receiving actor must reply with ``sender ! reply`` in order to complete the
+the receiving actor must reply with ``sender() ! reply`` in order to complete the
 returned :class:`Future` with a value. The ``ask`` operation involves creating
 an internal actor for handling this reply, which needs to have a timeout after
 which it is destroyed in order not to leak resources; see more below.
@@ -613,8 +613,8 @@ Reply to messages
 =================
 
 If you want to have a handle for replying to a message, you can use
-``sender``, which gives you an ActorRef. You can reply by sending to
-that ActorRef with ``sender ! replyMsg``. You can also store the ActorRef
+``sender()``, which gives you an ActorRef. You can reply by sending to
+that ActorRef with ``sender() ! replyMsg``. You can also store the ActorRef
 for replying later, or passing on to other actors. If there is no sender (a
 message was sent without an actor or future context) then the sender
 defaults to a 'dead-letter' actor ref.
@@ -623,7 +623,7 @@ defaults to a 'dead-letter' actor ref.
 
   case request =>
     val result = process(request)
-    sender ! result       // will have dead-letter actor as default
+    sender() ! result       // will have dead-letter actor as default
 
 Receive timeout
 ===============
diff --git a/akka-docs/rst/scala/code/docs/actor/ActorDocSpec.scala b/akka-docs/rst/scala/code/docs/actor/ActorDocSpec.scala
index 286f171e2e..daf8bc554c 100644
--- a/akka-docs/rst/scala/code/docs/actor/ActorDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/actor/ActorDocSpec.scala
@@ -40,7 +40,7 @@ class FirstActor extends Actor {
   val child = context.actorOf(Props[MyActor], name = "myChild")
   //#plus-some-behavior
   def receive = {
-    case x => sender ! x
+    case x => sender() ! x
   }
   //#plus-some-behavior
 }
@@ -64,7 +64,7 @@ class DemoActorWrapper extends Actor {
 
   class DemoActor(magicNumber: Int) extends Actor {
     def receive = {
-      case x: Int => sender ! (x + magicNumber)
+      case x: Int => sender() ! (x + magicNumber)
     }
   }
 
@@ -91,7 +91,7 @@ class AnonymousActor extends Actor {
         def receive = {
           case DoIt(msg) =>
             val replyMsg = doSomeDangerousWork(msg)
-            sender ! replyMsg
+            sender() ! replyMsg
             context.stop(self)
         }
         def doSomeDangerousWork(msg: ImmutableMessage): String = { "done" }
@@ -123,10 +123,10 @@ class ReplyException extends Actor {
       //#reply-exception
       try {
         val result = operation()
-        sender ! result
+        sender() ! result
       } catch {
         case e: Exception =>
-          sender ! akka.actor.Status.Failure(e)
+          sender() ! akka.actor.Status.Failure(e)
           throw e
       }
     //#reply-exception
@@ -271,7 +271,7 @@ class ActorDocSpec extends AkkaSpec(Map("akka.loglevel" -> "INFO")) {
   "creating actor with IndirectActorProducer" in {
     class Echo(name: String) extends Actor {
       def receive = {
-        case n: Int => sender ! name
+        case n: Int => sender() ! name
         case message =>
           val target = testActor
           //#forward
@@ -365,12 +365,12 @@ class ActorDocSpec extends AkkaSpec(Map("akka.loglevel" -> "INFO")) {
   class HotSwapActor extends Actor {
     import context._
     def angry: Receive = {
-      case "foo" => sender ! "I am already angry?"
+      case "foo" => sender() ! "I am already angry?"
       case "bar" => become(happy)
     }
 
     def happy: Receive = {
-      case "bar" => sender ! "I am already happy :-)"
+      case "bar" => sender() ! "I am already happy :-)"
       case "foo" => become(angry)
     }
 
@@ -417,7 +417,7 @@ class ActorDocSpec extends AkkaSpec(Map("akka.loglevel" -> "INFO")) {
 
         def receive = {
           case "kill" =>
-            context.stop(child); lastSender = sender
+            context.stop(child); lastSender = sender()
           case Terminated(`child`) => lastSender ! "finished"
         }
       }
@@ -522,12 +522,12 @@ class ActorDocSpec extends AkkaSpec(Map("akka.loglevel" -> "INFO")) {
     def receive = {
       case ref: ActorRef =>
         //#reply-with-sender
-        sender.tell("reply", context.parent) // replies will go back to parent
-        sender.!("reply")(context.parent) // alternative syntax (beware of the parens!)
+        sender().tell("reply", context.parent) // replies will go back to parent
+        sender().!("reply")(context.parent) // alternative syntax (beware of the parens!)
       //#reply-with-sender
       case x =>
         //#reply-without-sender
-        sender ! x // replies will go to this actor
+        sender() ! x // replies will go to this actor
       //#reply-without-sender
     }
   }
@@ -585,13 +585,13 @@ class ActorDocSpec extends AkkaSpec(Map("akka.loglevel" -> "INFO")) {
 
   trait TheirComposableActor extends ComposableActor {
     receiveBuilder += {
-      case "foo" => sender ! "foo received"
+      case "foo" => sender() ! "foo received"
     }
   }
 
   class MyComposableActor extends TheirComposableActor {
     receiveBuilder += {
-      case "bar" => sender ! "bar received"
+      case "bar" => sender() ! "bar received"
     }
   }
   //#receive-orElse2
diff --git a/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSample.scala b/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSample.scala
index 52d96d91ef..815f695ff4 100644
--- a/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSample.scala
+++ b/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSample.scala
@@ -204,7 +204,7 @@ class CounterService extends Actor {
         if (backlog.size >= MaxBacklog)
           throw new ServiceUnavailable(
             "CounterService not available, lack of initial value")
-        backlog :+= (sender -> msg)
+        backlog :+= (sender() -> msg)
     }
   }
 
@@ -239,7 +239,7 @@ class Counter(key: String, initialValue: Long) extends Actor {
       storeCount()
 
     case GetCurrentCount =>
-      sender ! CurrentCount(key, count)
+      sender() ! CurrentCount(key, count)
 
   }
 
@@ -272,7 +272,7 @@ class Storage extends Actor {
 
   def receive = LoggingReceive {
     case Store(Entry(key, count)) => db.save(key, count)
-    case Get(key)                 => sender ! Entry(key, db.load(key).getOrElse(0L))
+    case Get(key)                 => sender() ! Entry(key, db.load(key).getOrElse(0L))
   }
 }
 
diff --git a/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSpec.scala b/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSpec.scala
index a4cc3bdd27..f3375a55db 100644
--- a/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/actor/FaultHandlingDocSpec.scala
@@ -34,7 +34,7 @@ object FaultHandlingDocSpec {
     //#strategy
 
     def receive = {
-      case p: Props => sender ! context.actorOf(p)
+      case p: Props => sender() ! context.actorOf(p)
     }
   }
   //#supervisor
@@ -56,7 +56,7 @@ object FaultHandlingDocSpec {
     //#strategy2
 
     def receive = {
-      case p: Props => sender ! context.actorOf(p)
+      case p: Props => sender() ! context.actorOf(p)
     }
     // override default to kill all children during restart
     override def preRestart(cause: Throwable, msg: Option[Any]) {}
@@ -87,7 +87,7 @@ object FaultHandlingDocSpec {
     def receive = {
       case ex: Exception => throw ex
       case x: Int        => state = x
-      case "get"         => sender ! state
+      case "get"         => sender() ! state
     }
   }
   //#child
diff --git a/akka-docs/rst/scala/code/docs/actor/InitializationDocSpec.scala b/akka-docs/rst/scala/code/docs/actor/InitializationDocSpec.scala
index 20af68a6db..ff799435b6 100644
--- a/akka-docs/rst/scala/code/docs/actor/InitializationDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/actor/InitializationDocSpec.scala
@@ -44,7 +44,7 @@ object InitializationDocSpec {
     }
 
     def initialized: Receive = {
-      case "U OK?" => initializeMe foreach { sender ! _ }
+      case "U OK?" => initializeMe foreach { sender() ! _ }
     }
     //#messageInit
 
diff --git a/akka-docs/rst/scala/code/docs/camel/Consumers.scala b/akka-docs/rst/scala/code/docs/camel/Consumers.scala
index f48534e29c..3451411b96 100644
--- a/akka-docs/rst/scala/code/docs/camel/Consumers.scala
+++ b/akka-docs/rst/scala/code/docs/camel/Consumers.scala
@@ -28,7 +28,7 @@ object Consumers {
       def endpointUri = "jetty:http://localhost:8877/camel/default"
 
       def receive = {
-        case msg: CamelMessage => sender ! ("Hello %s" format msg.bodyAs[String])
+        case msg: CamelMessage => sender() ! ("Hello %s" format msg.bodyAs[String])
       }
     }
     //#Consumer2
@@ -46,12 +46,12 @@ object Consumers {
 
       def receive = {
         case msg: CamelMessage =>
-          sender ! Ack
+          sender() ! Ack
           // on success
           // ..
           val someException = new Exception("e1")
           // on failure
-          sender ! Failure(someException)
+          sender() ! Failure(someException)
       }
     }
     //#Consumer3
@@ -65,7 +65,7 @@ object Consumers {
       def endpointUri = "jetty:http://localhost:8877/camel/default"
       override def replyTimeout = 500 millis
       def receive = {
-        case msg: CamelMessage => sender ! ("Hello %s" format msg.bodyAs[String])
+        case msg: CamelMessage => sender() ! ("Hello %s" format msg.bodyAs[String])
       }
     }
     //#Consumer4
diff --git a/akka-docs/rst/scala/code/docs/camel/CustomRoute.scala b/akka-docs/rst/scala/code/docs/camel/CustomRoute.scala
index 6c720376f1..fa5d0329d5 100644
--- a/akka-docs/rst/scala/code/docs/camel/CustomRoute.scala
+++ b/akka-docs/rst/scala/code/docs/camel/CustomRoute.scala
@@ -19,7 +19,7 @@ object CustomRoute {
     class Responder extends Actor {
       def receive = {
         case msg: CamelMessage =>
-          sender ! (msg.mapBody {
+          sender() ! (msg.mapBody {
             body: String => "received %s" format body
           })
       }
@@ -53,7 +53,7 @@ object CustomRoute {
         handled(true).transform(Builder.exceptionMessage).end
 
       final override def preRestart(reason: Throwable, message: Option[Any]) {
-        sender ! Failure(reason)
+        sender() ! Failure(reason)
       }
     }
     //#ErrorThrowingConsumer
diff --git a/akka-docs/rst/scala/code/docs/camel/Producers.scala b/akka-docs/rst/scala/code/docs/camel/Producers.scala
index 2269905059..e168660a7e 100644
--- a/akka-docs/rst/scala/code/docs/camel/Producers.scala
+++ b/akka-docs/rst/scala/code/docs/camel/Producers.scala
@@ -120,7 +120,7 @@ object Producers {
       def receive = {
         case msg =>
           val template = CamelExtension(context.system).template
-          sender ! template.requestBody("direct:news", msg)
+          sender() ! template.requestBody("direct:news", msg)
       }
     }
     //#RequestProducerTemplate
diff --git a/akka-docs/rst/scala/code/docs/camel/PublishSubscribe.scala b/akka-docs/rst/scala/code/docs/camel/PublishSubscribe.scala
index b786a3d9ce..8884723da0 100644
--- a/akka-docs/rst/scala/code/docs/camel/PublishSubscribe.scala
+++ b/akka-docs/rst/scala/code/docs/camel/PublishSubscribe.scala
@@ -27,7 +27,7 @@ object PublishSubscribe {
     def receive = {
       case msg: CamelMessage => {
         publisher ! msg.bodyAs[String]
-        sender ! ("message published")
+        sender() ! ("message published")
       }
     }
   }
diff --git a/akka-docs/rst/scala/code/docs/event/LoggingDocSpec.scala b/akka-docs/rst/scala/code/docs/event/LoggingDocSpec.scala
index bd74123fa7..8c71844ca4 100644
--- a/akka-docs/rst/scala/code/docs/event/LoggingDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/event/LoggingDocSpec.scala
@@ -85,7 +85,7 @@ object LoggingDocSpec {
 
   class MyEventListener extends Actor {
     def receive = {
-      case InitializeLogger(_)                        => sender ! LoggerInitialized
+      case InitializeLogger(_)                        => sender() ! LoggerInitialized
       case Error(cause, logSource, logClass, message) => // ...
       case Warning(logSource, logClass, message)      => // ...
       case Info(logSource, logClass, message)         => // ...
diff --git a/akka-docs/rst/scala/code/docs/future/FutureDocSpec.scala b/akka-docs/rst/scala/code/docs/future/FutureDocSpec.scala
index 5374e0aced..d4c5e0ae04 100644
--- a/akka-docs/rst/scala/code/docs/future/FutureDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/future/FutureDocSpec.scala
@@ -18,9 +18,9 @@ object FutureDocSpec {
 
   class MyActor extends Actor {
     def receive = {
-      case x: String       => sender ! x.toUpperCase
-      case x: Int if x < 0 => sender ! Status.Failure(new ArithmeticException("Negative values not supported"))
-      case x: Int          => sender ! x
+      case x: String       => sender() ! x.toUpperCase
+      case x: Int if x < 0 => sender() ! Status.Failure(new ArithmeticException("Negative values not supported"))
+      case x: Int          => sender() ! x
     }
   }
 
@@ -30,7 +30,7 @@ object FutureDocSpec {
     var n = 1
     def receive = {
       case GetNext =>
-        sender ! n
+        sender() ! n
         n += 2
     }
   }
diff --git a/akka-docs/rst/scala/code/docs/io/EchoServer.scala b/akka-docs/rst/scala/code/docs/io/EchoServer.scala
index 54082c4f26..457df31a48 100644
--- a/akka-docs/rst/scala/code/docs/io/EchoServer.scala
+++ b/akka-docs/rst/scala/code/docs/io/EchoServer.scala
@@ -63,8 +63,8 @@ class EchoManager(handlerClass: Class[_]) extends Actor with ActorLogging {
     //#echo-manager
     case Connected(remote, local) =>
       log.info("received connection from {}", remote)
-      val handler = context.actorOf(Props(handlerClass, sender, remote))
-      sender ! Register(handler, keepOpenOnPeerClosed = true)
+      val handler = context.actorOf(Props(handlerClass, sender(), remote))
+      sender() ! Register(handler, keepOpenOnPeerClosed = true)
     //#echo-manager
   }
 
diff --git a/akka-docs/rst/scala/code/docs/io/IODocSpec.scala b/akka-docs/rst/scala/code/docs/io/IODocSpec.scala
index b2d58afbb7..440f919ee1 100644
--- a/akka-docs/rst/scala/code/docs/io/IODocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/io/IODocSpec.scala
@@ -46,7 +46,7 @@ class Server extends Actor {
       context.parent ! c
       //#server
       val handler = context.actorOf(Props[SimplisticHandler])
-      val connection = sender
+      val connection = sender()
       connection ! Register(handler)
   }
 
@@ -57,7 +57,7 @@ class Server extends Actor {
 class SimplisticHandler extends Actor {
   import Tcp._
   def receive = {
-    case Received(data) => sender ! Write(data)
+    case Received(data) => sender() ! Write(data)
     case PeerClosed     => context stop self
   }
 }
@@ -83,7 +83,7 @@ class Client(remote: InetSocketAddress, listener: ActorRef) extends Actor {
 
     case c @ Connected(remote, local) =>
       listener ! c
-      val connection = sender
+      val connection = sender()
       connection ! Register(self)
       context become {
         case data: ByteString =>
diff --git a/akka-docs/rst/scala/code/docs/io/UdpDocSpec.scala b/akka-docs/rst/scala/code/docs/io/UdpDocSpec.scala
index efe8c3d122..be37d04e47 100644
--- a/akka-docs/rst/scala/code/docs/io/UdpDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/io/UdpDocSpec.scala
@@ -22,9 +22,9 @@ object ScalaUdpDocSpec {
 
     def receive = {
       case Udp.SimpleSenderReady =>
-        context.become(ready(sender))
+        context.become(ready(sender()))
         //#sender
-        sender ! Udp.Send(ByteString("hello"), remote)
+        sender() ! Udp.Send(ByteString("hello"), remote)
       //#sender
     }
 
@@ -48,7 +48,7 @@ object ScalaUdpDocSpec {
         //#listener
         nextActor forward local
         //#listener
-        context.become(ready(sender))
+        context.become(ready(sender()))
     }
 
     def ready(socket: ActorRef): Receive = {
@@ -72,9 +72,9 @@ object ScalaUdpDocSpec {
 
     def receive = {
       case UdpConnected.Connected =>
-        context.become(ready(sender))
+        context.become(ready(sender()))
         //#connected
-        sender ! UdpConnected.Send(ByteString("hello"))
+        sender() ! UdpConnected.Send(ByteString("hello"))
       //#connected
     }
 
diff --git a/akka-docs/rst/scala/code/docs/remoting/RemoteDeploymentDocSpec.scala b/akka-docs/rst/scala/code/docs/remoting/RemoteDeploymentDocSpec.scala
index 14314afdfc..b09feeecff 100644
--- a/akka-docs/rst/scala/code/docs/remoting/RemoteDeploymentDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/remoting/RemoteDeploymentDocSpec.scala
@@ -13,7 +13,7 @@ import akka.remote.RemoteScope
 object RemoteDeploymentDocSpec {
 
   class SampleActor extends Actor {
-    def receive = { case _ => sender ! self }
+    def receive = { case _ => sender() ! self }
   }
 
 }
diff --git a/akka-docs/rst/scala/code/docs/routing/ConsistentHashingRouterDocSpec.scala b/akka-docs/rst/scala/code/docs/routing/ConsistentHashingRouterDocSpec.scala
index b97f13e1c1..bc7a7d8e0a 100644
--- a/akka-docs/rst/scala/code/docs/routing/ConsistentHashingRouterDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/routing/ConsistentHashingRouterDocSpec.scala
@@ -19,7 +19,7 @@ object ConsistentHashingRouterDocSpec {
 
     def receive = {
       case Entry(key, value) => cache += (key -> value)
-      case Get(key)          => sender ! cache.get(key)
+      case Get(key)          => sender() ! cache.get(key)
       case Evict(key)        => cache -= key
     }
   }
diff --git a/akka-docs/rst/scala/code/docs/routing/CustomRouterDocSpec.scala b/akka-docs/rst/scala/code/docs/routing/CustomRouterDocSpec.scala
index de43f7590c..e1f6abe12e 100644
--- a/akka-docs/rst/scala/code/docs/routing/CustomRouterDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/routing/CustomRouterDocSpec.scala
@@ -58,7 +58,7 @@ akka.actor.deployment {
 
   class Storage extends Actor {
     def receive = {
-      case x => sender ! x
+      case x => sender() ! x
     }
   }
 
diff --git a/akka-docs/rst/scala/code/docs/routing/RouterDocSpec.scala b/akka-docs/rst/scala/code/docs/routing/RouterDocSpec.scala
index 2331bdf66c..16db1a69ca 100644
--- a/akka-docs/rst/scala/code/docs/routing/RouterDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/routing/RouterDocSpec.scala
@@ -197,7 +197,7 @@ router-dispatcher {}
 
     def receive = {
       case w: Work =>
-        router.route(w, sender)
+        router.route(w, sender())
       case Terminated(a) =>
         router = router.removeRoutee(a)
         val r = context.actorOf(Props[Worker])
@@ -375,7 +375,7 @@ router-dispatcher {}
 
   class Echo extends Actor {
     def receive = {
-      case m => sender ! m
+      case m => sender() ! m
     }
   }
 }
diff --git a/akka-docs/rst/scala/code/docs/testkit/PlainWordSpec.scala b/akka-docs/rst/scala/code/docs/testkit/PlainWordSpec.scala
index 33aee7ef8f..34d7f43bdf 100644
--- a/akka-docs/rst/scala/code/docs/testkit/PlainWordSpec.scala
+++ b/akka-docs/rst/scala/code/docs/testkit/PlainWordSpec.scala
@@ -16,7 +16,7 @@ import akka.testkit.ImplicitSender
 object MySpec {
   class EchoActor extends Actor {
     def receive = {
-      case x => sender ! x
+      case x => sender() ! x
     }
   }
 }
diff --git a/akka-docs/rst/scala/code/docs/testkit/TestKitUsageSpec.scala b/akka-docs/rst/scala/code/docs/testkit/TestKitUsageSpec.scala
index bcc61707a8..53439d3290 100644
--- a/akka-docs/rst/scala/code/docs/testkit/TestKitUsageSpec.scala
+++ b/akka-docs/rst/scala/code/docs/testkit/TestKitUsageSpec.scala
@@ -117,7 +117,7 @@ object TestKitUsageSpec {
    */
   class EchoActor extends Actor {
     def receive = {
-      case msg => sender ! msg
+      case msg => sender() ! msg
     }
   }
 
diff --git a/akka-docs/rst/scala/code/docs/testkit/TestkitDocSpec.scala b/akka-docs/rst/scala/code/docs/testkit/TestkitDocSpec.scala
index 5d4e748351..a37022da96 100644
--- a/akka-docs/rst/scala/code/docs/testkit/TestkitDocSpec.scala
+++ b/akka-docs/rst/scala/code/docs/testkit/TestkitDocSpec.scala
@@ -22,8 +22,8 @@ object TestkitDocSpec {
 
   class MyActor extends Actor {
     def receive = {
-      case Say42       => sender ! 42
-      case "some work" => sender ! "some result"
+      case Say42       => sender() ! 42
+      case "some work" => sender() ! "some result"
     }
   }
 
@@ -201,7 +201,7 @@ class TestkitDocSpec extends AkkaSpec with DefaultTimeout with ImplicitSender {
         expectMsgPF() {
           case Update(id, _) if id == x => true
         }
-        sender ! "ACK"
+        sender() ! "ACK"
       }
     }
     //#test-special-probe
diff --git a/akka-docs/rst/scala/scheduler.rst b/akka-docs/rst/scala/scheduler.rst
index f184b67257..25d97cde7c 100644
--- a/akka-docs/rst/scala/scheduler.rst
+++ b/akka-docs/rst/scala/scheduler.rst
@@ -39,7 +39,7 @@ Some examples
 
     If you schedule functions or Runnable instances you should be extra careful
     to not close over unstable references. In practice this means not using ``this``
-    inside the closure in the scope of an Actor instance, not accessing ``sender`` directly
+    inside the closure in the scope of an Actor instance, not accessing ``sender()`` directly
     and not calling the methods of the Actor instance directly. If you need to
     schedule an invocation schedule a message to ``self`` instead (containing the
     necessary parameters) and then call the method when the message is received.
diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
index 986c4448ba..3f4c29c2c8 100644
--- a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
+++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
@@ -345,7 +345,7 @@ private[akka] class ServerFSM(val controller: ActorRef, val channel: Channel) ex
       stay
     case Event(ToClient(msg), None) ⇒
       channel.write(msg)
-      stay using Some(sender)
+      stay using Some(sender())
     case Event(ToClient(msg), _) ⇒
       log.warning("cannot send {} while waiting for previous ACK", msg)
       stay
@@ -414,7 +414,7 @@ private[akka] class Controller(private var initialParticipants: Int, controllerP
     case CreateServerFSM(channel) ⇒
       val (ip, port) = channel.getRemoteAddress match { case s: InetSocketAddress ⇒ (s.getAddress.getHostAddress, s.getPort) }
       val name = ip + ":" + port + "-server" + generation.next
-      sender ! context.actorOf(Props(classOf[ServerFSM], self, channel).withDeploy(Deploy.local), name)
+      sender() ! context.actorOf(Props(classOf[ServerFSM], self, channel).withDeploy(Deploy.local), name)
     case c @ NodeInfo(name, addr, fsm) ⇒
       barrier forward c
       if (nodes contains name) {
@@ -443,8 +443,8 @@ private[akka] class Controller(private var initialParticipants: Int, controllerP
         case _: EnterBarrier ⇒ barrier forward op
         case _: FailBarrier  ⇒ barrier forward op
         case GetAddress(node) ⇒
-          if (nodes contains node) sender ! ToClient(AddressReply(node, nodes(node).addr))
-          else addrInterest += node -> ((addrInterest get node getOrElse Set()) + sender)
+          if (nodes contains node) sender() ! ToClient(AddressReply(node, nodes(node).addr))
+          else addrInterest += node -> ((addrInterest get node getOrElse Set()) + sender())
         case _: Done ⇒ //FIXME what should happen?
       }
     case op: CommandOp ⇒
@@ -461,8 +461,8 @@ private[akka] class Controller(private var initialParticipants: Int, controllerP
         case Remove(node) ⇒
           barrier ! BarrierCoordinator.RemoveClient(node)
       }
-    case GetNodes    ⇒ sender ! nodes.keys
-    case GetSockAddr ⇒ sender ! connection.getLocalAddress
+    case GetNodes    ⇒ sender() ! nodes.keys
+    case GetSockAddr ⇒ sender() ! connection.getLocalAddress
   }
 
   override def postStop() {
@@ -547,12 +547,12 @@ private[akka] class BarrierCoordinator extends Actor with LoggingFSM[BarrierCoor
     case Event(EnterBarrier(name, timeout), d @ Data(clients, _, _, _)) ⇒
       if (failed)
         stay replying ToClient(BarrierResult(name, false))
-      else if (clients.map(_.fsm) == Set(sender))
+      else if (clients.map(_.fsm) == Set(sender()))
         stay replying ToClient(BarrierResult(name, true))
-      else if (clients.find(_.fsm == sender).isEmpty)
+      else if (clients.find(_.fsm == sender()).isEmpty)
         stay replying ToClient(BarrierResult(name, false))
       else {
-        goto(Waiting) using d.copy(barrier = name, arrived = sender :: Nil,
+        goto(Waiting) using d.copy(barrier = name, arrived = sender() :: Nil,
           deadline = getDeadline(timeout))
       }
     case Event(RemoveClient(name), d @ Data(clients, _, _, _)) ⇒
@@ -567,8 +567,8 @@ private[akka] class BarrierCoordinator extends Actor with LoggingFSM[BarrierCoor
 
   when(Waiting) {
     case Event(EnterBarrier(name, timeout), d @ Data(clients, barrier, arrived, deadline)) ⇒
-      if (name != barrier) throw WrongBarrier(name, sender, d)
-      val together = if (clients.exists(_.fsm == sender)) sender :: arrived else arrived
+      if (name != barrier) throw WrongBarrier(name, sender(), d)
+      val together = if (clients.exists(_.fsm == sender())) sender() :: arrived else arrived
       val enterDeadline = getDeadline(timeout)
       // we only allow the deadlines to get shorter
       if (enterDeadline.timeLeft < deadline.timeLeft) {
@@ -583,7 +583,7 @@ private[akka] class BarrierCoordinator extends Actor with LoggingFSM[BarrierCoor
           handleBarrier(d.copy(clients = clients - client, arrived = arrived filterNot (_ == client.fsm)))
       }
     case Event(FailBarrier(name), d @ Data(_, barrier, _, _)) ⇒
-      if (name != barrier) throw WrongBarrier(name, sender, d)
+      if (name != barrier) throw WrongBarrier(name, sender(), d)
       throw FailedBarrier(d)
     case Event(StateTimeout, d) ⇒
       throw BarrierTimeout(d)
diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
index 043ff76568..5ca0b35a1b 100644
--- a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
+++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
@@ -54,7 +54,7 @@ trait Player { this: TestConductorExt ⇒
       var waiting: ActorRef = _
       def receive = {
         case fsm: ActorRef ⇒
-          waiting = sender; fsm ! SubscribeTransitionCallBack(self)
+          waiting = sender(); fsm ! SubscribeTransitionCallBack(self)
         case Transition(_, Connecting, AwaitDone) ⇒ // step 1, not there yet
         case Transition(_, AwaitDone, Connected) ⇒
           waiting ! Done; context stop self
@@ -193,7 +193,7 @@ private[akka] class ClientFSM(name: RoleName, controllerAddr: InetSocketAddress)
         case EnterBarrier(barrier, timeout) ⇒ barrier
         case GetAddress(node)               ⇒ node.name
       }
-      stay using d.copy(runningOp = Some(token -> sender))
+      stay using d.copy(runningOp = Some(token -> sender()))
     case Event(ToServer(op), Data(channel, Some((token, _)))) ⇒
       log.error("cannot write {} while waiting for {}", op, token)
       stay
diff --git a/akka-osgi/src/test/scala/akka/osgi/test/PingPong.scala b/akka-osgi/src/test/scala/akka/osgi/test/PingPong.scala
index 255f47640c..5d015d1467 100644
--- a/akka-osgi/src/test/scala/akka/osgi/test/PingPong.scala
+++ b/akka-osgi/src/test/scala/akka/osgi/test/PingPong.scala
@@ -18,7 +18,7 @@ object PingPong {
   class PongActor extends Actor {
     def receive = {
       case Ping ⇒
-        sender ! Pong
+        sender() ! Pong
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala
index 68a64f5d42..5758c2f511 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala
@@ -16,7 +16,7 @@ object LookupRemoteActorMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "identify" ⇒ sender ! self
+      case "identify" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala
index 6c39b12502..55eda6247e 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala
@@ -19,7 +19,7 @@ object NewRemoteActorMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "identify" ⇒ sender ! self
+      case "identify" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala
index c1814a8298..711258644e 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala
@@ -46,10 +46,10 @@ object RemoteNodeDeathWatchMultiJvmSpec extends MultiNodeConfig {
     def receive = {
       case WatchIt(watchee) ⇒
         context watch watchee
-        sender ! Ack
+        sender() ! Ack
       case UnwatchIt(watchee) ⇒
         context unwatch watchee
-        sender ! Ack
+        sender() ! Ack
       case t: Terminated ⇒
         testActor forward WrappedTerminated(t)
       case msg ⇒ testActor forward msg
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala
index 8c54a62cfb..e8c6e59890 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala
@@ -39,9 +39,9 @@ object RemoteNodeRestartDeathWatchMultiJvmSpec extends MultiNodeConfig {
   class Subject extends Actor {
     def receive = {
       case "shutdown" ⇒
-        sender ! "shutdown-ack"
+        sender() ! "shutdown-ack"
         context.system.shutdown()
-      case msg ⇒ sender ! msg
+      case msg ⇒ sender() ! msg
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala
index a368dbd5a3..325b24a1cc 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala
@@ -38,7 +38,7 @@ object RemoteNodeShutdownAndComesBackSpec extends MultiNodeConfig {
   class Subject extends Actor {
     def receive = {
       case "shutdown" ⇒ context.system.shutdown()
-      case msg        ⇒ sender ! msg
+      case msg        ⇒ sender() ! msg
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala
index 514e51cd17..cff10e47f0 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala
@@ -33,7 +33,7 @@ object RemoteQuarantinePiercingSpec extends MultiNodeConfig {
   class Subject extends Actor {
     def receive = {
       case "shutdown" ⇒ context.system.shutdown()
-      case "identify" ⇒ sender ! (AddressUidExtension(context.system).addressUid, self)
+      case "identify" ⇒ sender() ! (AddressUidExtension(context.system).addressUid, self)
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RandomRoutedRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RandomRoutedRemoteActorSpec.scala
index 87e13ec069..3bf8a184c2 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RandomRoutedRemoteActorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RandomRoutedRemoteActorSpec.scala
@@ -23,7 +23,7 @@ object RandomRoutedRemoteActorMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RoundRobinRoutedRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RoundRobinRoutedRemoteActorSpec.scala
index 3a0f1a7eaa..34fe8540a3 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RoundRobinRoutedRemoteActorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/RoundRobinRoutedRemoteActorSpec.scala
@@ -27,7 +27,7 @@ object RoundRobinRoutedRemoteActorMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/ScatterGatherRoutedRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/ScatterGatherRoutedRemoteActorSpec.scala
index f989cb7560..fc7f90ea51 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/ScatterGatherRoutedRemoteActorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/oldrouting/ScatterGatherRoutedRemoteActorSpec.scala
@@ -24,7 +24,7 @@ object ScatterGatherRoutedRemoteActorMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala
index 976391b7c5..3ab41ee51a 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala
@@ -19,7 +19,7 @@ object RemoteRandomMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala
index 65b2a7f106..0acf5bdc89 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala
@@ -29,7 +29,7 @@ object RemoteRoundRobinMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala
index 26ab1be48a..d632c85623 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala
@@ -20,7 +20,7 @@ object RemoteScatterGatherMultiJvmSpec extends MultiNodeConfig {
 
   class SomeActor extends Actor {
     def receive = {
-      case "hit" ⇒ sender ! self
+      case "hit" ⇒ sender() ! self
     }
   }
 
diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala
index 0d004989f8..0b7928609d 100644
--- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala
+++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala
@@ -45,7 +45,7 @@ class TestConductorSpec extends MultiNodeSpec(TestConductorMultiJvmSpec) with ST
       runOn(master) {
         system.actorOf(Props(new Actor {
           def receive = {
-            case x ⇒ testActor ! x; sender ! x
+            case x ⇒ testActor ! x; sender() ! x
           }
         }).withDeploy(Deploy.local), "echo")
       }
diff --git a/akka-remote-tests/src/test/scala/akka/remote/testconductor/BarrierSpec.scala b/akka-remote-tests/src/test/scala/akka/remote/testconductor/BarrierSpec.scala
index 7648826896..2c49ac443f 100644
--- a/akka-remote-tests/src/test/scala/akka/remote/testconductor/BarrierSpec.scala
+++ b/akka-remote-tests/src/test/scala/akka/remote/testconductor/BarrierSpec.scala
@@ -548,7 +548,7 @@ class BarrierSpec extends AkkaSpec(BarrierSpec.config) with ImplicitSender {
         case x ⇒ testActor ! Failed(barrier, x); SupervisorStrategy.Restart
       }
       def receive = {
-        case _ ⇒ sender ! barrier
+        case _ ⇒ sender() ! barrier
       }
     }).withDeploy(Deploy.local)) ! ""
     expectMsgType[ActorRef]
diff --git a/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala b/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala
index 32395d3a62..be241ec2fc 100644
--- a/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala
+++ b/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala
@@ -126,7 +126,7 @@ case class AckedSendBuffer[T <: HasSequenceNumber](
 
 /**
  * Implements an immutable receive buffer that buffers incoming messages until they can be safely delivered. This
- * buffer works together with a [[akka.remote.AckedSendBuffer]] on the sender side.
+ * buffer works together with a [[akka.remote.AckedSendBuffer]] on the sender() side.
  *
  * @param lastDelivered Sequence number of the last message that has been delivered.
  * @param cumulativeAck The highest sequence number received so far.
@@ -151,7 +151,7 @@ case class AckedReceiveBuffer[T <: HasSequenceNumber](
   }
 
   /**
-   * Extract all messages that could be safely delivered, an updated ack to be sent to the sender, and an updated
+   * Extract all messages that could be safely delivered, an updated ack to be sent to the sender(), and an updated
    * buffer that has the messages removed that can be delivered.
    * @return Triplet of the updated buffer, messages that can be delivered and the updated acknowledgement.
    */
diff --git a/akka-remote/src/main/scala/akka/remote/Endpoint.scala b/akka-remote/src/main/scala/akka/remote/Endpoint.scala
index 2d105154dc..fac1e6384e 100644
--- a/akka-remote/src/main/scala/akka/remote/Endpoint.scala
+++ b/akka-remote/src/main/scala/akka/remote/Endpoint.scala
@@ -57,7 +57,7 @@ private[remote] class DefaultMessageDispatcher(private val system: ExtendedActor
     val sender: ActorRef = senderOption.getOrElse(system.deadLetters)
     val originalReceiver = recipient.path
 
-    def msgLog = s"RemoteMessage: [$payload] to [$recipient]<+[$originalReceiver] from [$sender]"
+    def msgLog = s"RemoteMessage: [$payload] to [$recipient]<+[$originalReceiver] from [$sender()]"
 
     recipient match {
 
@@ -328,7 +328,7 @@ private[remote] class ReliableDeliverySupervisor(
     case s @ Send(msg: SystemMessage, _, _, _) ⇒ tryBuffer(s.copy(seqOpt = Some(nextSeq())))
     case s: Send                               ⇒ context.system.deadLetters ! s
     case EndpointWriter.FlushAndStop           ⇒ context.stop(self)
-    case EndpointWriter.StopReading(w)         ⇒ sender ! EndpointWriter.StoppedReading(w)
+    case EndpointWriter.StopReading(w)         ⇒ sender() ! EndpointWriter.StoppedReading(w)
     case _                                     ⇒ // Ignore
   }
 
@@ -343,7 +343,7 @@ private[remote] class ReliableDeliverySupervisor(
       // Resending will be triggered by the incoming GotUid message after the connection finished
       context.become(receive)
     case EndpointWriter.FlushAndStop   ⇒ context.stop(self)
-    case EndpointWriter.StopReading(w) ⇒ sender ! EndpointWriter.StoppedReading(w)
+    case EndpointWriter.StopReading(w) ⇒ sender() ! EndpointWriter.StoppedReading(w)
   }
 
   def flushWait: Receive = {
@@ -649,7 +649,7 @@ private[remote] class EndpointWriter(
       // Shutdown old reader
       handle foreach { _.disassociate() }
       handle = Some(newHandle)
-      sender ! TookOver(self, newHandle)
+      sender() ! TookOver(self, newHandle)
       goto(Handoff)
     case Event(FlushAndStop, _) ⇒
       stopReason = AssociationHandle.Shutdown
@@ -805,7 +805,7 @@ private[remote] class EndpointReader(
     case StopReading(writer) ⇒
       saveState()
       context.become(notReading)
-      sender ! StoppedReading(writer)
+      sender() ! StoppedReading(writer)
 
   }
 
@@ -813,7 +813,7 @@ private[remote] class EndpointReader(
     case Disassociated(info) ⇒ handleDisassociated(info)
 
     case StopReading(writer) ⇒
-      sender ! StoppedReading(writer)
+      sender() ! StoppedReading(writer)
 
     case InboundPayload(p) ⇒
       val (ackOption, _) = tryDecodeMessageAndAck(p)
diff --git a/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala b/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala
index 2b7c197eb9..91a5a97c75 100644
--- a/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala
+++ b/akka-remote/src/main/scala/akka/remote/RemoteTransport.scala
@@ -65,7 +65,7 @@ private[akka] abstract class RemoteTransport(val system: ExtendedActorSystem, va
   def start(): Unit
 
   /**
-   * Sends the given message to the recipient supplying the sender if any
+   * Sends the given message to the recipient supplying the sender() if any
    */
   def send(message: Any, senderOption: Option[ActorRef], recipient: RemoteActorRef): Unit
 
diff --git a/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala b/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala
index 0b274cf274..d62f60fa1f 100644
--- a/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala
+++ b/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala
@@ -136,16 +136,16 @@ private[akka] class RemoteWatcher(
 
     // test purpose
     case Stats ⇒
-      sender ! Stats(
+      sender() ! Stats(
         watching = watching.size,
         watchingNodes = watchingNodes.size)(watching)
   }
 
   def receiveHeartbeat(): Unit =
-    sender ! selfHeartbeatRspMsg
+    sender() ! selfHeartbeatRspMsg
 
   def receiveHeartbeatRsp(uid: Int): Unit = {
-    val from = sender.path.address
+    val from = sender().path.address
 
     if (failureDetector.isMonitoring(from))
       log.debug("Received heartbeat rsp from [{}]", from)
diff --git a/akka-remote/src/main/scala/akka/remote/Remoting.scala b/akka-remote/src/main/scala/akka/remote/Remoting.scala
index 2370155743..5be4c87a84 100644
--- a/akka-remote/src/main/scala/akka/remote/Remoting.scala
+++ b/akka-remote/src/main/scala/akka/remote/Remoting.scala
@@ -90,7 +90,7 @@ private[remote] object Remoting {
 
     def receive = {
       case RegisterTransportActor(props, name) ⇒
-        sender ! context.actorOf(
+        sender() ! context.actorOf(
           RARP(context.system).configureDispatcher(props.withDeploy(Deploy.local)),
           name)
     }
@@ -396,7 +396,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
         log.warning("Tried to associate with unreachable remote address [{}]. " +
           "Address is now gated for {} ms, all messages to this address will be delivered to dead letters. Reason: {}",
           remoteAddress, settings.RetryGateClosedFor.toMillis, reason.getMessage)
-        endpoints.markAsFailed(sender, Deadline.now + settings.RetryGateClosedFor)
+        endpoints.markAsFailed(sender(), Deadline.now + settings.RetryGateClosedFor)
         context.system.eventStream.publish(AddressTerminated(remoteAddress))
         Stop
 
@@ -404,7 +404,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
         log.debug("Remote system with address [{}] has shut down. " +
           "Address is now gated for {} ms, all messages to this address will be delivered to dead letters.",
           remoteAddress, settings.RetryGateClosedFor.toMillis)
-        endpoints.markAsFailed(sender, Deadline.now + settings.RetryGateClosedFor)
+        endpoints.markAsFailed(sender(), Deadline.now + settings.RetryGateClosedFor)
         context.system.eventStream.publish(AddressTerminated(remoteAddress))
         Stop
 
@@ -422,7 +422,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
         log.warning("Association to [{}] with unknown UID is irrecoverably failed. " +
           "Address cannot be quarantined without knowing the UID, gating instead for {} ms.",
           remoteAddress, settings.RetryGateClosedFor.toMillis)
-        endpoints.markAsFailed(sender, Deadline.now + settings.RetryGateClosedFor)
+        endpoints.markAsFailed(sender(), Deadline.now + settings.RetryGateClosedFor)
         context.system.eventStream.publish(AddressTerminated(remoteAddress))
         Stop
 
@@ -463,11 +463,11 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
     case ia: InboundAssociation ⇒
       context.system.scheduler.scheduleOnce(10.milliseconds, self, ia)
     case ManagementCommand(_) ⇒
-      sender ! ManagementCommandAck(status = false)
+      sender() ! ManagementCommandAck(status = false)
     case StartupFinished ⇒
       context.become(accepting)
     case ShutdownAndFlush ⇒
-      sender ! true
+      sender() ! true
       context.stop(self) // Nothing to flush at this point
   }
 
@@ -476,7 +476,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
       val allStatuses = transportMapping.values map { transport ⇒
         transport.managementCommand(cmd)
       }
-      Future.fold(allStatuses)(true)(_ && _) map ManagementCommandAck pipeTo sender
+      Future.fold(allStatuses)(true)(_ && _) map ManagementCommandAck pipeTo sender()
 
     case Quarantine(address, uid) ⇒
       // Stop writers
@@ -570,7 +570,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
     case Prune ⇒
       endpoints.prune()
     case ShutdownAndFlush ⇒
-      // Shutdown all endpoints and signal to sender when ready (and whether all endpoints were shut down gracefully)
+      // Shutdown all endpoints and signal to sender() when ready (and whether all endpoints were shut down gracefully)
 
       def shutdownAll[T](resources: TraversableOnce[T])(shutdown: T ⇒ Future[Boolean]): Future[Boolean] = {
         (Future sequence resources.map(shutdown)) map { _.forall(identity) } recover {
@@ -583,7 +583,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends
         // so that endpoints are shut down before transports.
         flushStatus ← shutdownAll(endpoints.allEndpoints)(gracefulStop(_, settings.FlushWait, EndpointWriter.FlushAndStop))
         shutdownStatus ← shutdownAll(transportMapping.values)(_.shutdown())
-      } yield flushStatus && shutdownStatus) pipeTo sender
+      } yield flushStatus && shutdownStatus) pipeTo sender()
 
       pendingReadHandoffs.valuesIterator foreach (_.disassociate(AssociationHandle.Shutdown))
 
diff --git a/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala b/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala
index 29b7439d63..4deafa5eb0 100644
--- a/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala
+++ b/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala
@@ -234,14 +234,14 @@ private[transport] class ThrottlerManager(wrappedTransport: Transport) extends A
       Future.sequence(handleTable map {
         case (`naked`, handle) ⇒ setMode(handle, mode, direction)
         case _                 ⇒ ok
-      }).map(_ ⇒ SetThrottleAck) pipeTo sender
+      }).map(_ ⇒ SetThrottleAck) pipeTo sender()
     case ForceDisassociate(address) ⇒
       val naked = nakedAddress(address)
       handleTable foreach {
         case (`naked`, handle) ⇒ handle.disassociate()
         case _                 ⇒
       }
-      sender ! ForceDisassociateAck
+      sender() ! ForceDisassociateAck
 
     case Checkin(origin, handle) ⇒
       val naked: Address = nakedAddress(origin)
@@ -396,7 +396,7 @@ private[transport] class ThrottledAssociation(
         associationHandler notify InboundAssociation(exposedHandle)
         exposedHandle.readHandlerPromise.future.map(Listener(_)) pipeTo self
         goto(WaitUpstreamListener)
-      } finally sender ! SetThrottleAck
+      } finally sender() ! SetThrottleAck
   }
 
   when(WaitUpstreamListener) {
@@ -427,7 +427,7 @@ private[transport] class ThrottledAssociation(
       cancelTimer(DequeueTimerName)
       if (throttledMessages.nonEmpty)
         scheduleDequeue(inboundThrottleMode.timeToAvailable(System.nanoTime(), throttledMessages.head.length))
-      sender ! SetThrottleAck
+      sender() ! SetThrottleAck
       stay()
     case Event(InboundPayload(p), _) ⇒
       forwardOrDelay(p)
@@ -450,7 +450,7 @@ private[transport] class ThrottledAssociation(
     // we should always set the throttling mode
     case Event(mode: ThrottleMode, _) ⇒
       inboundThrottleMode = mode
-      sender ! SetThrottleAck
+      sender() ! SetThrottleAck
       stay()
     case Event(Disassociated(info), _) ⇒
       stop()
diff --git a/akka-remote/src/test/scala/akka/remote/RemoteRouterSpec.scala b/akka-remote/src/test/scala/akka/remote/RemoteRouterSpec.scala
index e91c5db251..b1aea9116e 100644
--- a/akka-remote/src/test/scala/akka/remote/RemoteRouterSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/RemoteRouterSpec.scala
@@ -12,7 +12,7 @@ import com.typesafe.config._
 object RemoteRouterSpec {
   class Echo extends Actor {
     def receive = {
-      case _ ⇒ sender ! self
+      case _ ⇒ sender() ! self
     }
   }
 }
diff --git a/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala b/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala
index 624e4c5f59..5aceceb51a 100644
--- a/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala
@@ -24,11 +24,11 @@ object RemotingSpec {
     var target: ActorRef = context.system.deadLetters
 
     def receive = {
-      case (p: Props, n: String) ⇒ sender ! context.actorOf(Props[Echo1], n)
+      case (p: Props, n: String) ⇒ sender() ! context.actorOf(Props[Echo1], n)
       case ex: Exception         ⇒ throw ex
-      case ActorForReq(s)        ⇒ sender ! context.actorFor(s)
-      case ActorSelReq(s)        ⇒ sender ! context.actorSelection(s)
-      case x                     ⇒ target = sender; sender ! x
+      case ActorForReq(s)        ⇒ sender() ! context.actorFor(s)
+      case ActorSelReq(s)        ⇒ sender() ! context.actorSelection(s)
+      case x                     ⇒ target = sender(); sender() ! x
     }
 
     override def preStart() {}
@@ -43,17 +43,17 @@ object RemotingSpec {
 
   class Echo2 extends Actor {
     def receive = {
-      case "ping"                ⇒ sender ! (("pong", sender))
-      case a: ActorRef           ⇒ a ! (("ping", sender))
-      case ("ping", a: ActorRef) ⇒ sender ! (("pong", a))
-      case ("pong", a: ActorRef) ⇒ a ! (("pong", sender.path.toSerializationFormat))
+      case "ping"                ⇒ sender() ! (("pong", sender()))
+      case a: ActorRef           ⇒ a ! (("ping", sender()))
+      case ("ping", a: ActorRef) ⇒ sender() ! (("pong", a))
+      case ("pong", a: ActorRef) ⇒ a ! (("pong", sender().path.toSerializationFormat))
     }
   }
 
   class Proxy(val one: ActorRef, val another: ActorRef) extends Actor {
     def receive = {
-      case s if sender.path == one.path     ⇒ another ! s
-      case s if sender.path == another.path ⇒ one ! s
+      case s if sender().path == one.path     ⇒ another ! s
+      case s if sender().path == another.path ⇒ one ! s
     }
   }
 
@@ -153,8 +153,8 @@ class RemotingSpec extends AkkaSpec(RemotingSpec.cfg) with ImplicitSender with D
     val bigBounceId = s"bigBounce-${ThreadLocalRandom.current.nextInt()}"
     val bigBounceOther = remoteSystem.actorOf(Props(new Actor {
       def receive = {
-        case x: Int ⇒ sender ! byteStringOfSize(x)
-        case x      ⇒ sender ! x
+        case x: Int ⇒ sender() ! byteStringOfSize(x)
+        case x      ⇒ sender() ! x
       }
     }).withDeploy(Deploy.local), bigBounceId)
     val bigBounceHere = system.actorFor(s"akka.test://remote-sys@localhost:12346/user/$bigBounceId")
@@ -311,8 +311,8 @@ class RemotingSpec extends AkkaSpec(RemotingSpec.cfg) with ImplicitSender with D
     "look-up actors across node boundaries" in {
       val l = system.actorOf(Props(new Actor {
         def receive = {
-          case (p: Props, n: String) ⇒ sender ! context.actorOf(p, n)
-          case ActorForReq(s)        ⇒ sender ! context.actorFor(s)
+          case (p: Props, n: String) ⇒ sender() ! context.actorOf(p, n)
+          case ActorForReq(s)        ⇒ sender() ! context.actorFor(s)
         }
       }), "looker1")
       // child is configured to be deployed on remote-sys (remoteSystem)
@@ -354,8 +354,8 @@ class RemotingSpec extends AkkaSpec(RemotingSpec.cfg) with ImplicitSender with D
     "select actors across node boundaries" in {
       val l = system.actorOf(Props(new Actor {
         def receive = {
-          case (p: Props, n: String) ⇒ sender ! context.actorOf(p, n)
-          case ActorSelReq(s)        ⇒ sender ! context.actorSelection(s)
+          case (p: Props, n: String) ⇒ sender() ! context.actorOf(p, n)
+          case ActorSelReq(s)        ⇒ sender() ! context.actorSelection(s)
         }
       }), "looker2")
       // child is configured to be deployed on remoteSystem
diff --git a/akka-remote/src/test/scala/akka/remote/Ticket1978CommunicationSpec.scala b/akka-remote/src/test/scala/akka/remote/Ticket1978CommunicationSpec.scala
index e15c15c527..eb5b0ce939 100644
--- a/akka-remote/src/test/scala/akka/remote/Ticket1978CommunicationSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/Ticket1978CommunicationSpec.scala
@@ -135,7 +135,7 @@ abstract class Ticket1978CommunicationSpec(val cipherConfig: CipherConfig) exten
 
   ("-") must {
     if (cipherConfig.runTest) {
-      val ignoreMe = other.actorOf(Props(new Actor { def receive = { case ("ping", x) ⇒ sender ! ((("pong", x), sender)) } }), "echo")
+      val ignoreMe = other.actorOf(Props(new Actor { def receive = { case ("ping", x) ⇒ sender() ! ((("pong", x), sender())) } }), "echo")
       val otherAddress = other.asInstanceOf[ExtendedActorSystem].provider.asInstanceOf[RemoteActorRefProvider].transport.defaultAddress
 
       "support tell" in {
diff --git a/akka-remote/src/test/scala/akka/remote/UntrustedSpec.scala b/akka-remote/src/test/scala/akka/remote/UntrustedSpec.scala
index a2004561bd..30d7025220 100644
--- a/akka-remote/src/test/scala/akka/remote/UntrustedSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/UntrustedSpec.scala
@@ -35,7 +35,7 @@ object UntrustedSpec {
     context.actorOf(Props(classOf[FakeUser], testActor), "user")
 
     def receive = {
-      case IdentifyReq(path) ⇒ context.actorSelection(path).tell(Identify(None), sender)
+      case IdentifyReq(path) ⇒ context.actorSelection(path).tell(Identify(None), sender())
       case StopChild(name)   ⇒ context.child(name) foreach context.stop
       case msg               ⇒ testActor forward msg
     }
diff --git a/akka-remote/src/test/scala/akka/remote/oldrouting/RemoteRouterSpec.scala b/akka-remote/src/test/scala/akka/remote/oldrouting/RemoteRouterSpec.scala
index 14f105022a..9f580d47e9 100644
--- a/akka-remote/src/test/scala/akka/remote/oldrouting/RemoteRouterSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/oldrouting/RemoteRouterSpec.scala
@@ -13,7 +13,7 @@ import akka.remote.RemoteScope
 object RemoteRouterSpec {
   class Echo extends Actor {
     def receive = {
-      case _ ⇒ sender ! self
+      case _ ⇒ sender() ! self
     }
   }
 }
diff --git a/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolStressTest.scala b/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolStressTest.scala
index c8ecd7e6a7..5791ef9c44 100644
--- a/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolStressTest.scala
+++ b/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolStressTest.scala
@@ -88,7 +88,7 @@ class AkkaProtocolStressTest extends AkkaSpec(configA) with ImplicitSender with
   val systemB = ActorSystem("systemB", system.settings.config)
   val remote = systemB.actorOf(Props(new Actor {
     def receive = {
-      case seq: Int ⇒ sender ! seq
+      case seq: Int ⇒ sender() ! seq
     }
   }), "echo")
 
diff --git a/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala
index 2716fbcb17..f9766fb730 100644
--- a/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala
+++ b/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala
@@ -30,8 +30,8 @@ object ThrottlerTransportAdapterSpec {
 
   class Echo extends Actor {
     override def receive = {
-      case "ping" ⇒ sender ! "pong"
-      case x      ⇒ sender ! x
+      case "ping" ⇒ sender() ! "pong"
+      case x      ⇒ sender() ! x
     }
   }
 
diff --git a/akka-samples/akka-sample-camel-scala/src/main/scala/sample/camel/HttpExample.scala b/akka-samples/akka-sample-camel-scala/src/main/scala/sample/camel/HttpExample.scala
index f2ced742b5..1bb486e38c 100644
--- a/akka-samples/akka-sample-camel-scala/src/main/scala/sample/camel/HttpExample.scala
+++ b/akka-samples/akka-sample-camel-scala/src/main/scala/sample/camel/HttpExample.scala
@@ -40,7 +40,7 @@ object HttpExample {
         camelMsg.headers(Set(Exchange.HTTP_PATH)))
     }
 
-    // instead of replying to the initial sender, producer actors can implement custom
+    // instead of replying to the initial sender(), producer actors can implement custom
     // response processing by overriding the routeResponse method
     override def routeResponse(msg: Any) { transformer forward msg }
   }
@@ -48,10 +48,10 @@ object HttpExample {
   class HttpTransformer extends Actor {
     def receive = {
       case msg: CamelMessage =>
-        sender ! (msg.mapBody { body: Array[Byte] =>
+        sender() ! (msg.mapBody { body: Array[Byte] =>
           new String(body).replaceAll("Akka ", "AKKA ")
         })
-      case msg: Failure => sender ! msg
+      case msg: Failure => sender() ! msg
     }
   }
 
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/factorial/FactorialBackend.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/factorial/FactorialBackend.scala
index d1e41c0b9e..11ee8c2074 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/factorial/FactorialBackend.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/factorial/FactorialBackend.scala
@@ -16,7 +16,7 @@ class FactorialBackend extends Actor with ActorLogging {
 
   def receive = {
     case (n: Int) =>
-      Future(factorial(n)) map { result => (n, result) } pipeTo sender
+      Future(factorial(n)) map { result => (n, result) } pipeTo sender()
   }
 
   def factorial(n: Int): BigInt = {
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsFacade.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsFacade.scala
index a0cf0fe4d2..ccd2e99221 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsFacade.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsFacade.scala
@@ -28,9 +28,9 @@ class StatsFacade extends Actor with ActorLogging {
 
   def receive = {
     case job: StatsJob if membersByAge.isEmpty =>
-      sender ! JobFailed("Service unavailable, try again later")
+      sender() ! JobFailed("Service unavailable, try again later")
     case job: StatsJob =>
-      currentMaster.tell(job, sender)
+      currentMaster.tell(job, sender())
     case state: CurrentClusterState =>
       membersByAge = immutable.SortedSet.empty(ageOrdering) ++ state.members.collect {
         case m if m.hasRole("compute") => m
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsService.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsService.scala
index f7d21d13bb..4852a5541a 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsService.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsService.scala
@@ -19,7 +19,7 @@ class StatsService extends Actor {
   def receive = {
     case StatsJob(text) if text != "" =>
       val words = text.split(" ")
-      val replyTo = sender // important to not close over sender
+      val replyTo = sender() // important to not close over sender()
       // create actor that collects replies from workers
       val aggregator = context.actorOf(Props(
         classOf[StatsAggregator], words.size, replyTo))
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsWorker.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsWorker.scala
index dd2ebd4bfc..b60993f1df 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsWorker.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/stats/StatsWorker.scala
@@ -15,7 +15,7 @@ class StatsWorker extends Actor {
           x
       }
 
-      sender ! length
+      sender() ! length
   }
 }
 //#worker
\ No newline at end of file
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationBackend.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationBackend.scala
index 6148da8850..2d164b4bb0 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationBackend.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationBackend.scala
@@ -25,7 +25,7 @@ class TransformationBackend extends Actor {
   override def postStop(): Unit = cluster.unsubscribe(self)
 
   def receive = {
-    case TransformationJob(text) => sender ! TransformationResult(text.toUpperCase)
+    case TransformationJob(text) => sender() ! TransformationResult(text.toUpperCase)
     case state: CurrentClusterState =>
       state.members.filter(_.status == MemberStatus.Up) foreach register
     case MemberUp(m) => register(m)
diff --git a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationFrontend.scala b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationFrontend.scala
index 18d5a25e86..deb34d5158 100644
--- a/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationFrontend.scala
+++ b/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/transformation/TransformationFrontend.scala
@@ -20,15 +20,15 @@ class TransformationFrontend extends Actor {
 
   def receive = {
     case job: TransformationJob if backends.isEmpty =>
-      sender ! JobFailed("Service unavailable, try again later", job)
+      sender() ! JobFailed("Service unavailable, try again later", job)
 
     case job: TransformationJob =>
       jobCounter += 1
       backends(jobCounter % backends.size) forward job
 
-    case BackendRegistration if !backends.contains(sender) =>
-      context watch sender
-      backends = backends :+ sender
+    case BackendRegistration if !backends.contains(sender()) =>
+      context watch sender()
+      backends = backends :+ sender()
 
     case Terminated(a) =>
       backends = backends.filterNot(_ == a)
diff --git a/akka-samples/akka-sample-hello-kernel/src/main/scala/sample/kernel/hello/HelloKernel.scala b/akka-samples/akka-sample-hello-kernel/src/main/scala/sample/kernel/hello/HelloKernel.scala
index 70f5ab47a9..fb0e0f5e53 100644
--- a/akka-samples/akka-sample-hello-kernel/src/main/scala/sample/kernel/hello/HelloKernel.scala
+++ b/akka-samples/akka-sample-hello-kernel/src/main/scala/sample/kernel/hello/HelloKernel.scala
@@ -20,7 +20,7 @@ class HelloActor extends Actor {
 
 class WorldActor extends Actor {
   def receive = {
-    case message: String => sender ! (message.toUpperCase + " world!")
+    case message: String => sender() ! (message.toUpperCase + " world!")
   }
 }
 
diff --git a/akka-samples/akka-sample-main-scala/src/main/scala/sample/hello/Greeter.scala b/akka-samples/akka-sample-main-scala/src/main/scala/sample/hello/Greeter.scala
index a4a15726b9..4bd3c67261 100644
--- a/akka-samples/akka-sample-main-scala/src/main/scala/sample/hello/Greeter.scala
+++ b/akka-samples/akka-sample-main-scala/src/main/scala/sample/hello/Greeter.scala
@@ -14,6 +14,6 @@ class Greeter extends Actor {
   def receive = {
     case Greeter.Greet =>
       println("Hello World!")
-      sender ! Greeter.Done
+      sender() ! Greeter.Done
   }
 }
\ No newline at end of file
diff --git a/akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala b/akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
index 1da8c3ac3e..1be09aae26 100644
--- a/akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
+++ b/akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
@@ -46,7 +46,7 @@ class MultiNodeSample extends MultiNodeSpec(MultiNodeSampleConfig)
       runOn(node2) {
         system.actorOf(Props(new Actor {
           def receive = {
-            case "ping" => sender ! "pong"
+            case "ping" => sender() ! "pong"
           }
         }), "ponger")
         enterBarrier("deployed")
diff --git a/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Hakker.scala b/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Hakker.scala
index c028fcb31f..3f961cc4a8 100644
--- a/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Hakker.scala
+++ b/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Hakker.scala
@@ -153,7 +153,7 @@ class Hakker(name: String, chair: Int) extends Actor {
   }
 
   def identify(busyWith: String) {
-    sender ! Identification(name, busyWith)
+    sender() ! Identification(name, busyWith)
   }
 
   def updateTable(leaderAdress: Address) {
diff --git a/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Table.scala b/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Table.scala
index 0c09ce4fd2..850e3beda4 100644
--- a/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Table.scala
+++ b/akka-samples/akka-sample-osgi-dining-hakkers/core/src/main/scala/akka/sample/osgi/internal/Table.scala
@@ -21,6 +21,6 @@ class Table extends Actor {
   val chopsticks = for (i <- 1 to 5) yield context.actorOf(Props[Chopstick], "Chopstick" + i)
 
   def receive = {
-    case x: Int => sender ! ((chopsticks(x), chopsticks((x + 1) % 5)))
+    case x: Int => sender() ! ((chopsticks(x), chopsticks((x + 1) % 5)))
   }
 }
diff --git a/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CalculatorActor.scala b/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CalculatorActor.scala
index 4428d39c3e..fd9aa4862c 100644
--- a/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CalculatorActor.scala
+++ b/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CalculatorActor.scala
@@ -10,16 +10,16 @@ class CalculatorActor extends Actor {
   def receive = {
     case Add(n1, n2) =>
       println("Calculating %d + %d".format(n1, n2))
-      sender ! AddResult(n1, n2, n1 + n2)
+      sender() ! AddResult(n1, n2, n1 + n2)
     case Subtract(n1, n2) =>
       println("Calculating %d - %d".format(n1, n2))
-      sender ! SubtractResult(n1, n2, n1 - n2)
+      sender() ! SubtractResult(n1, n2, n1 - n2)
     case Multiply(n1, n2) =>
       println("Calculating %d * %d".format(n1, n2))
-      sender ! MultiplicationResult(n1, n2, n1 * n2)
+      sender() ! MultiplicationResult(n1, n2, n1 * n2)
     case Divide(n1, n2) =>
       println("Calculating %.0f / %d".format(n1, n2))
-      sender ! DivisionResult(n1, n2, n1 / n2)
+      sender() ! DivisionResult(n1, n2, n1 / n2)
   }
 }
 
diff --git a/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CreationActor.scala b/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CreationActor.scala
index b0705efd4c..22aede9248 100644
--- a/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CreationActor.scala
+++ b/akka-samples/akka-sample-remote-scala/src/main/scala/sample/remote/calculator/CreationActor.scala
@@ -16,10 +16,10 @@ class CreationActor extends Actor {
     case result: MathResult => result match {
       case MultiplicationResult(n1, n2, r) =>
         printf("Mul result: %d * %d = %d\n", n1, n2, r)
-        context.stop(sender)
+        context.stop(sender())
       case DivisionResult(n1, n2, r) =>
         printf("Div result: %.0f / %d = %.2f\n", n1, n2, r)
-        context.stop(sender)
+        context.stop(sender())
     }
   }
 }
diff --git a/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala b/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala
index 9ba28fa3de..71adbad696 100644
--- a/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala
+++ b/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala
@@ -78,7 +78,7 @@ class Slf4jLogger extends Actor with SLF4JLogging {
 
     case InitializeLogger(_) ⇒
       log.info("Slf4jLogger started")
-      sender ! LoggerInitialized
+      sender() ! LoggerInitialized
   }
 
   @inline
diff --git a/akka-testkit/src/main/scala/akka/testkit/TestActorRef.scala b/akka-testkit/src/main/scala/akka/testkit/TestActorRef.scala
index dee7437dcb..c88e14c6b0 100644
--- a/akka-testkit/src/main/scala/akka/testkit/TestActorRef.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/TestActorRef.scala
@@ -56,7 +56,7 @@ class TestActorRef[T <: Actor](
     new ActorCell(system, ref, props, dispatcher, supervisor) {
       override def autoReceiveMessage(msg: Envelope) {
         msg.message match {
-          case InternalGetActor ⇒ sender ! actor
+          case InternalGetActor ⇒ sender() ! actor
           case _                ⇒ super.autoReceiveMessage(msg)
         }
       }
diff --git a/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala b/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala
index 0d1101cd9c..2232a5ce64 100644
--- a/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala
@@ -484,7 +484,7 @@ class TestEventListener extends Logging.DefaultLogger {
   override def receive = {
     case InitializeLogger(bus) ⇒
       Seq(classOf[Mute], classOf[UnMute], classOf[DeadLetter], classOf[UnhandledMessage]) foreach (bus.subscribe(context.self, _))
-      sender ! LoggerInitialized
+      sender() ! LoggerInitialized
     case Mute(filters)   ⇒ filters foreach addFilter
     case UnMute(filters) ⇒ filters foreach removeFilter
     case event: LogEvent ⇒ if (!filter(event)) print(event)
diff --git a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala
index 586eb226f4..d560bcdf95 100644
--- a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala
@@ -71,12 +71,12 @@ class TestActor(queue: BlockingDeque[TestActor.Message]) extends Actor {
     case UnWatch(ref)        ⇒ context.unwatch(ref)
     case SetAutoPilot(pilot) ⇒ autopilot = pilot
     case x: AnyRef ⇒
-      autopilot = autopilot.run(sender, x) match {
+      autopilot = autopilot.run(sender(), x) match {
         case KeepRunning ⇒ autopilot
         case other       ⇒ other
       }
       val observe = ignore map (ignoreFunc ⇒ !ignoreFunc.applyOrElse(x, FALSE)) getOrElse true
-      if (observe) queue.offerLast(RealMessage(x, sender))
+      if (observe) queue.offerLast(RealMessage(x, sender()))
   }
 
   override def postStop() = {
@@ -790,12 +790,12 @@ class TestProbe(_application: ActorSystem) extends TestKit(_application) {
   /**
    * Get sender of last received message.
    */
-  def sender = lastMessage.sender
+  def sender() = lastMessage.sender
 
   /**
    * Send message to the sender of the last dequeued message.
    */
-  def reply(msg: Any): Unit = sender.!(msg)(ref)
+  def reply(msg: Any): Unit = sender().!(msg)(ref)
 
 }
 
diff --git a/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala b/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala
index 3489688e60..d4cd6f0bbc 100644
--- a/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala
+++ b/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala
@@ -67,7 +67,7 @@ class AkkaSpecSpec extends WordSpec with Matchers {
         val davyJones = otherSystem.actorOf(Props(new Actor {
           def receive = {
             case m: DeadLetter ⇒ locker :+= m
-            case "Die!"        ⇒ sender ! "finally gone"; context.stop(self)
+            case "Die!"        ⇒ sender() ! "finally gone"; context.stop(self)
           }
         }), "davyJones")
 
diff --git a/akka-testkit/src/test/scala/akka/testkit/TestActorRefSpec.scala b/akka-testkit/src/test/scala/akka/testkit/TestActorRefSpec.scala
index b2183afc6c..9459db0337 100644
--- a/akka-testkit/src/test/scala/akka/testkit/TestActorRefSpec.scala
+++ b/akka-testkit/src/test/scala/akka/testkit/TestActorRefSpec.scala
@@ -42,22 +42,22 @@ object TestActorRefSpec {
 
     def receiveT = {
       case "complexRequest" ⇒ {
-        replyTo = sender
+        replyTo = sender()
         val worker = TestActorRef(Props[WorkerActor])
         worker ! "work"
       }
       case "complexRequest2" ⇒
         val worker = TestActorRef(Props[WorkerActor])
-        worker ! sender
+        worker ! sender()
       case "workDone"      ⇒ replyTo ! "complexReply"
-      case "simpleRequest" ⇒ sender ! "simpleReply"
+      case "simpleRequest" ⇒ sender() ! "simpleReply"
     }
   }
 
   class WorkerActor() extends TActor {
     def receiveT = {
       case "work" ⇒
-        sender ! "workDone"
+        sender() ! "workDone"
         context stop self
       case replyTo: Promise[_] ⇒ replyTo.asInstanceOf[Promise[Any]].success("complexReply")
       case replyTo: ActorRef   ⇒ replyTo ! "complexReply"
@@ -120,7 +120,7 @@ class TestActorRefSpec extends AkkaSpec("disp1.type=Dispatcher") with BeforeAndA
       "used with TestActorRef" in {
         val a = TestActorRef(Props(new Actor {
           val nested = TestActorRef(Props(new Actor { def receive = { case _ ⇒ } }))
-          def receive = { case _ ⇒ sender ! nested }
+          def receive = { case _ ⇒ sender() ! nested }
         }))
         a should not be (null)
         val nested = Await.result((a ? "any").mapTo[ActorRef], timeout.duration)
@@ -131,7 +131,7 @@ class TestActorRefSpec extends AkkaSpec("disp1.type=Dispatcher") with BeforeAndA
       "used with ActorRef" in {
         val a = TestActorRef(Props(new Actor {
           val nested = context.actorOf(Props(new Actor { def receive = { case _ ⇒ } }))
-          def receive = { case _ ⇒ sender ! nested }
+          def receive = { case _ ⇒ sender() ! nested }
         }))
         a should not be (null)
         val nested = Await.result((a ? "any").mapTo[ActorRef], timeout.duration)
@@ -141,7 +141,7 @@ class TestActorRefSpec extends AkkaSpec("disp1.type=Dispatcher") with BeforeAndA
 
     }
 
-    "support reply via sender" in {
+    "support reply via sender()" in {
       val serverRef = TestActorRef(Props[ReplyActor])
       val clientRef = TestActorRef(Props(classOf[SenderActor], serverRef))
 
@@ -253,13 +253,13 @@ class TestActorRefSpec extends AkkaSpec("disp1.type=Dispatcher") with BeforeAndA
       a.underlying.dispatcher.getClass should be(classOf[Dispatcher])
     }
 
-    "proxy receive for the underlying actor without sender" in {
+    "proxy receive for the underlying actor without sender()" in {
       val ref = TestActorRef[WorkerActor]
       ref.receive("work")
       ref.isTerminated should be(true)
     }
 
-    "proxy receive for the underlying actor with sender" in {
+    "proxy receive for the underlying actor with sender()" in {
       val ref = TestActorRef[WorkerActor]
       ref.receive("work", testActor)
       ref.isTerminated should be(true)
diff --git a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala
index 1c6e52b80a..1750bbe745 100644
--- a/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala
+++ b/akka-zeromq/src/main/scala/akka/zeromq/ConcurrentSocketActor.scala
@@ -97,7 +97,7 @@ private[zeromq] class ConcurrentSocketActor(params: immutable.Seq[SocketOption])
   }
 
   private def handleSocketOptionQuery(msg: SocketOptionQuery): Unit =
-    sender ! (msg match {
+    sender() ! (msg match {
       case Linger               ⇒ socket.getLinger
       case ReconnectIVL         ⇒ socket.getReconnectIVL
       case Backlog              ⇒ socket.getBacklog
diff --git a/akka-zeromq/src/main/scala/akka/zeromq/ZeroMQExtension.scala b/akka-zeromq/src/main/scala/akka/zeromq/ZeroMQExtension.scala
index 8a45f713be..2f3dac68ba 100644
--- a/akka-zeromq/src/main/scala/akka/zeromq/ZeroMQExtension.scala
+++ b/akka-zeromq/src/main/scala/akka/zeromq/ZeroMQExtension.scala
@@ -254,7 +254,7 @@ class ZeroMQExtension(system: ActorSystem) extends Extension {
         case _                                         ⇒ false
       }
 
-      def receive = { case p: Props ⇒ sender ! context.actorOf(p) }
+      def receive = { case p: Props ⇒ sender() ! context.actorOf(p) }
     }), "zeromq")
   }