code: @Override
    public Transport newInstance(final String hostAddress,
                                 final int port,
                                 final EStage<TransportEvent> clientStage,
                                 final EStage<TransportEvent> serverStage,
                                 final int numberOfTries,
                                 final int retryTimeout,
                                 final TcpPortProvider tcpPortProvider) {
  
      final Injector injector = Tang.Factory.getTang().newInjector();
      injector.bindVolatileParameter(RemoteConfiguration.HostAddress.class, hostAddress);
      injector.bindVolatileParameter(RemoteConfiguration.Port.class, port);
      injector.bindVolatileParameter(RemoteConfiguration.RemoteClientStage.class, clientStage);
      injector.bindVolatileParameter(RemoteConfiguration.RemoteServerStage.class, serverStage);
      injector.bindVolatileParameter(RemoteConfiguration.NumberOfTries.class, numberOfTries);
      injector.bindVolatileParameter(RemoteConfiguration.RetryTimeout.class, retryTimeout);
      injector.bindVolatileInstance(TcpPortProvider.class, tcpPortProvider);
      try {
        return injector.getInstance(NettyMessagingTransport.class);
      } catch (final InjectionException e) {
        throw new RuntimeException(e);
      }
    }
docs: Creates a transport.
  
  @param hostAddress     a host address
  @param port            a listening port
  @param clientStage     a client stage
  @param serverStage     a server stage
  @param numberOfTries   a number of tries
  @param retryTimeout    a timeout for retry
  @param tcpPortProvider a provider for TCP port