Inheritance: Akka.Actor.Deployer
        public RemoteActorRefProvider(string systemName, Settings settings, EventStream eventStream)
        {
            var remoteDeployer = new RemoteDeployer(settings);
            Func <ActorPath, InternalActorRef> deadLettersFactory = null; //TODO:  path => new RemoteDeadLetterActorRef(this, path, eventStream);

            _local         = new LocalActorRefProvider(systemName, settings, eventStream, remoteDeployer, deadLettersFactory);
            Config         = settings.Config.WithFallback(RemoteConfigFactory.Default());
            RemoteSettings = new RemoteSettings(Config);
            Deployer       = remoteDeployer;
            _log           = _local.Log;
        }
        /// <summary>
        /// Creates a new remote actor ref provider instance.
        /// </summary>
        /// <param name="systemName">Name of the actor system.</param>
        /// <param name="settings">The actor system settings.</param>
        /// <param name="eventStream">The <see cref="EventStream"/> instance used by this system.</param>
        public RemoteActorRefProvider(string systemName, Settings settings, EventStream eventStream)
        {
            settings.InjectTopLevelFallback(RemoteConfigFactory.Default());

            var remoteDeployer = new RemoteDeployer(settings);

            IInternalActorRef DeadLettersFactory(ActorPath path) => new RemoteDeadLetterActorRef(this, path, eventStream);

            _local         = new LocalActorRefProvider(systemName, settings, eventStream, remoteDeployer, DeadLettersFactory);
            RemoteSettings = new RemoteSettings(settings.Config);
            Deployer       = remoteDeployer;
            _log           = _local.Log;
        }
        public override void Init()
        {
            //TODO: this should not be here
            Address  = new Address("akka", System.Name); //TODO: this should not work this way...
            Deployer = new RemoteDeployer(System.Settings);
            _local.Init();

            var daemonMsgCreateSerializer  = new DaemonMsgCreateSerializer(System);
            var messageContainerSerializer = new MessageContainerSerializer(System);

            System.Serialization.AddSerializer(daemonMsgCreateSerializer);
            System.Serialization.AddSerializationMap(typeof(DaemonMsgCreate), daemonMsgCreateSerializer);
            System.Serialization.AddSerializer(messageContainerSerializer);
            System.Serialization.AddSerializationMap(typeof(ActorSelectionMessage), messageContainerSerializer);

            Transport.Start();
            //      RemoteHost.StartHost(System, port);
        }
        public override void Init()
        {
            //TODO: this should not be here
            Address = new Address("akka", System.Name); //TODO: this should not work this way...
            Deployer = new RemoteDeployer(System.Settings);
            base.Init();

            var daemonMsgCreateSerializer = new DaemonMsgCreateSerializer(System);
            var messageContainerSerializer = new MessageContainerSerializer(System);
            System.Serialization.AddSerializer(daemonMsgCreateSerializer);
            System.Serialization.AddSerializationMap(typeof (DaemonMsgCreate), daemonMsgCreateSerializer);
            System.Serialization.AddSerializer(messageContainerSerializer);
            System.Serialization.AddSerializationMap(typeof (ActorSelectionMessage), messageContainerSerializer);

            RemoteDaemon = new RemoteDaemon(System, RootPath/"remote", null);
            Transport = new Remoting(System, this);
            RemoteSettings = new RemoteSettings(System.Settings.Config);
            Transport.Start();
            //      RemoteHost.StartHost(System, port);
        }