DefaultActorThread implements ActorThread { @NonNull @Override public <T> ActorRef<T> bind(@NonNull Class<T> cls, @NonNull T impl) { MessageSenderProxy<T> postman = new MessageSenderProxy<>(mFailureHandler, impl); T instance = mProxyFactory.newProxy(cls, postman); return new ActorRefImpl<>(instance); } DefaultActorThread(@NonNull ProxyFactory proxyFactory, @NonNull FailureHandler failureHandler,
                                     @NonNull String threadName);   DefaultActorThread(@NonNull ProxyFactory proxyFactory,
                                     @NonNull FailureHandler failureHandler, @NonNull String threadName, long stopDelay); @VisibleForTesting  DefaultActorThread(@NonNull ThreadFactory threadFactory, @NonNull ProxyFactory proxyFactory,
                                     @NonNull FailureHandler failureHandler, @NonNull String threadName, long stopDelay); @NonNull @Override ActorRef<T> bind(@NonNull Class<T> cls, @NonNull T impl);  }
@Test public void bind_returnValidRef_always() { DefaultActorThread thread = createThread(); ActorRef<Runnable> ref = thread.bind(Runnable.class, mImpl); Assert.assertSame(mImplProxy, ref.tell()); }