code: @Override
    public Transport newInstance(final int port,
                                 final EventHandler<TransportEvent> clientHandler,
                                 final EventHandler<TransportEvent> serverHandler,
                                 final EventHandler<Exception> exHandler) {
  
      final Injector injector = Tang.Factory.getTang().newInjector();
      injector.bindVolatileParameter(RemoteConfiguration.HostAddress.class, this.localAddress);
      injector.bindVolatileParameter(RemoteConfiguration.Port.class, port);
      injector.bindVolatileParameter(RemoteConfiguration.RemoteClientStage.class, new SyncStage<>(clientHandler));
      injector.bindVolatileParameter(RemoteConfiguration.RemoteServerStage.class, new SyncStage<>(serverHandler));
  
      final Transport transport;
      try {
        transport = injector.getInstance(NettyMessagingTransport.class);
        transport.registerErrorHandler(exHandler);
        return transport;
      } catch (final InjectionException e) {
        throw new RuntimeException(e);
      }
    }
docs: Creates a transport.
  
  @param port          a listening port
  @param clientHandler a transport client side handler
  @param serverHandler a transport server side handler
  @param exHandler     a exception handler